{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} module PostJobSpec (spec) where import NeatInterpolation (text) import Speechmatics.JSON.PostJob import Test.Hspec import Data.Text.Encoding(encodeUtf8) import Data.ByteString.Lazy expected :: PostJob expected = PostJob { checkWait = Nothing, cost = 0.0, balance = 9195.0, postId = 8217275 } fixture :: ByteString fixture = fromStrict $ encodeUtf8 [text| { "balance": 9195, "check_wait": null, "cost": 0, "id": 8217275 }|] spec :: Spec spec = do describe "Ceres stats output parser" $ do it "parses fixture to expected value" $ do (parse fixture) `shouldBe` (Right expected) it "does not parse invalid json" $ do (parse "not json") `shouldSatisfy` (\case Left _ -> True _ -> False)