avro-0.3.4.3: test/Avro/SchemaSpec.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
module Avro.SchemaSpec
where
import Data.Avro
import Data.Avro.Deriving (makeSchema)
import Data.Avro.Schema (buildTypeEnvironment, matches)
import Test.Hspec
{-# ANN module ("HLint: ignore Redundant do" :: String) #-}
spec :: Spec
spec = describe "Avro.SchemaSpec" $ do
describe "buildTypeEnvironment" $
it "should contain definitions for all internal types" $ do
let schema = $(makeSchema "test/data/internal-bindings.avsc")
environment = buildTypeEnvironment err schema
err name = fail $ "Missing " ++ show name ++ " in environment."
expected =
[ "InternalBindings"
, "InField"
, "NestedInField"
, "AliasNestedInField"
, "NestedEnum"
, "NestedFixed"
, "InArray"
, "NestedInArray"
, "InMap"
, "NestedInMap"
, "InUnionA"
, "InUnionB"
]
definitions <- traverse environment expected
length definitions `shouldBe` length expected