elm-street-0.2.1.0: test/Test/Golden.hs
module Test.Golden (goldenSpec) where
import Test.Hspec (Spec, describe, it, shouldBe, shouldReturn)
import Types (CustomCodeGen, OneType, defaultCustomCodeGen, defaultOneType)
import qualified Data.Aeson as A
import qualified Data.ByteString.Lazy as LBS
goldenSpec :: Spec
goldenSpec = describe "golden tests" $ do
describe "Default CodeGenOptions" $ do
it "Golden JSON -> Haskell == default" $
A.eitherDecode @OneType <$> LBS.readFile "test/golden/oneType.json"
`shouldReturn` Right defaultOneType
it "default -> JSON -> Haskell == default" $
A.eitherDecode @OneType (A.encode defaultOneType)
`shouldBe` Right defaultOneType
describe "Custom CodeGenOptions" $ do
it "should decode type with custom CodeGenOptions" $
A.eitherDecode @CustomCodeGen "{\"customFunTestInt\": 78,\"customFunTestString\": \"Hello\",\"tag\": \"CustomCodeGen\"}"
`shouldBe` Right defaultCustomCodeGen
it "should encode type with custom CodeGen" $
A.eitherDecode @CustomCodeGen (A.encode defaultCustomCodeGen)
`shouldBe` Right defaultCustomCodeGen