packages feed

hspec-snap-0.3.2.8: spec/Utils.hs

{-# LANGUAGE OverloadedStrings         #-}

{-|
Module      : Utils
Description : Helpers for testing

Currently just copypasta from snap-extras to avoid dependency conflicts
-}
module Utils where

import           Data.Aeson      (encode, ToJSON)

import           Snap.Core       (modifyResponse, setHeader, writeLBS
                                 ,MonadSnap)


-------------------------------------------------------------------------------
-- | Set MIME to 'application/json' and write given object into
-- 'Response' body.
writeJSON :: (MonadSnap m, ToJSON a) => a -> m ()
writeJSON a = do
  jsonResponse
  writeLBS . encode $ a


-------------------------------------------------------------------------------
-- | Mark response as 'application/json'
jsonResponse :: MonadSnap m => m ()
jsonResponse = modifyResponse $ setHeader "Content-Type" "application/json"