unbeliever-0.10.0.7: tests/CheckJsonWrapper.hs
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
module CheckJsonWrapper where
import Core.Data
import Core.Encoding.Json
import Core.Text
import qualified Data.ByteString.Char8 as C
import Test.Hspec
k = JsonKey "intro"
v = JsonString "Hello"
j = JsonObject (intoMap [(k, v)])
j2 =
JsonObject
( intoMap
[ (JsonKey "song", JsonString "Thriller"),
(JsonKey "other", JsonString "A very long name for the \"shadow of the moon\"."),
( JsonKey "four",
JsonObject
( intoMap
[ (JsonKey "n1", r)
]
)
)
]
)
b = intoBytes (C.pack "{\"cost\": 4500}")
r = JsonArray [JsonBool False, JsonNull, JsonNumber 42]
checkJsonWrapper :: Spec
checkJsonWrapper = do
describe "JsonValue encoding" $
do
it "JSON String should be wrapped in quotes" $ do
encodeToUTF8 v `shouldBe` intoBytes (C.pack "\"Hello\"")
it "JSON Array renders correctly" $ do
encodeToUTF8 r `shouldBe` intoBytes (C.pack "[false,null,42]")
it "JSON Object renders correctly" $ do
encodeToUTF8 j `shouldBe` intoBytes (C.pack "{\"intro\":\"Hello\"}")
it "decoding an Object parses" $ do
decodeFromUTF8 b `shouldBe` Just (JsonObject (intoMap [(JsonKey "cost", JsonNumber 4500)]))
it "complex JSON Object round trips" $ do
decodeFromUTF8 (encodeToUTF8 j2) `shouldBe` Just j2