medea-1.2.0: test/schema-builder/Main.hs
module Main where
import Data.Either (isRight)
import Data.Foldable (traverse_)
import Data.Medea (loadSchemaFromFile)
import Test.Hspec
( Spec,
describe,
hspec,
it,
runIO,
shouldSatisfy,
)
import TestM (isSchemaError, listMedeaFiles)
main :: IO ()
main = do
let failDir = "./conformance/schema-builder/fail"
let passDir = "./conformance/schema-builder/pass"
failFiles <- listMedeaFiles failDir
passFiles <- listMedeaFiles passDir
hspec $ do
describe "Invalid schemata cases" . traverse_ makeFailTest $ failFiles
describe "Valid schemata cases" . traverse_ makePassTest $ passFiles
-- Helpers
makeFailTest :: FilePath -> Spec
makeFailTest fp = do
result <- runIO . loadSchemaFromFile $ fp
it ("Shouldn't build: " ++ fp) (result `shouldSatisfy` isSchemaError)
makePassTest :: FilePath -> Spec
makePassTest fp = do
result <- runIO . loadSchemaFromFile $ fp
it ("Should build: " ++ fp) (result `shouldSatisfy` isRight)