{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE NoImplicitPrelude #-} module Main ( main, ) where import Data.Morpheus.Types (GQLRequest (..), GQLResponse (..)) import qualified Feature.Holistic.API as Holistic import qualified Feature.Input.DefaultValues as DefaultValues import Relude import Rendering.TestSchemaRendering (testSchemaRendering) import Subscription.Test (testSubscriptions) import Test.Morpheus ( FileUrl, cd, mainTest, mkUrl, scan, testApi, ) import Test.Tasty ( TestTree, testGroup, ) mkFeatureUrl :: FilePath -> FilePath -> FileUrl mkFeatureUrl groupName = cd (cd (mkUrl "Feature") groupName) testFeature :: FilePath -> (GQLRequest -> IO GQLResponse, FilePath) -> IO TestTree testFeature groupName (api, name) = scan (testApi api) (mkFeatureUrl groupName name) testFeatures :: FilePath -> [(GQLRequest -> IO GQLResponse, FilePath)] -> IO TestTree testFeatures name cases = testGroup name <$> traverse (testFeature name) cases main :: IO () main = mainTest "Morpheus Graphql Tests" [ testFeatures "Input" [(DefaultValues.api, "default-values")], testFeatures "Holistic" [ (Holistic.api, "holistic") ], testSubscriptions, pure testSchemaRendering ]