packages feed

json-api-0.1.4.0: test/Network/JSONApi/SourceSpec.hs

module Network.JSONApi.SourceSpec where

import qualified Data.Aeson as AE
import qualified Data.ByteString.Lazy.Char8 as BS
import Data.Default (def)
import Data.Maybe
import Network.JSONApi
import Prelude hiding (id)
import TestHelpers (prettyEncode)
import Test.Hspec

main :: IO ()
main = hspec spec

spec :: Spec
spec = do
  describe "Defaults" $
    it "provides defaults" $
      let expectedDefault = Source
            { pointer   = Nothing
            , parameter = Nothing
            }
      in (def::Source) `shouldBe` expectedDefault

  describe "JSON serialization" $
    it "provides ToJSON/FromJSON instances" $ do
      let testSource = def::Source
      let encJson = BS.unpack . prettyEncode $ testSource
      let decJson = AE.decode (BS.pack encJson) :: Maybe Source

      isJust decJson `shouldBe` True

      -- putStrLn encJson
      -- print (fromJust decJson)