avro-0.6.2.1: test/Avro/THReusedSpec.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
module Avro.THReusedSpec
where
import Avro.TestUtils (roundtrip)
import Data.Avro.Deriving
import Test.Hspec
{- HLINT ignore "Redundant do" -}
deriveAvroWithOptions (defaultDeriveOptions { namespaceBehavior = HandleNamespaces }) "test/data/reused.avsc"
spec :: Spec
spec = describe "Avro.THReusedSpec: Schema with named types" $ do
let container = Boo'ContainerChild
{ boo'ContainerChildFstIncluded = Boo'ReusedChild 100
, boo'ContainerChildSndIncluded = Boo'ReusedChild 200
}
let wrapper = Boo'ReusedWrapper
{ boo'ReusedWrapperFull = Boo'ReusedChild 42
, boo'ReusedWrapperInner = container
}
it "wrapper should do roundtrip" $
roundtrip schema'Boo'ReusedWrapper wrapper `shouldBe` pure wrapper
it "child should do rundtrip" $
roundtrip schema'Boo'ContainerChild container `shouldBe` pure container
it "innermost element should do roundtrip" $
let child = Boo'ReusedChild 7
in roundtrip schema'Boo'ReusedChild child `shouldBe` pure child