graphql-engine/server/lib/schema-parsers/test/Hasura/GraphQL/Parser/DirectivesSpec.hs
Daniel Harvey e953efeb40 [ci] test the libraries in server/lib
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7758
Co-authored-by: Tom Harding <6302310+i-am-tom@users.noreply.github.com>
GitOrigin-RevId: 311f6c4a5c629c18a55d75a5d5a74f826078e86d
2023-02-02 17:32:48 +00:00

32 lines
1.1 KiB
Haskell

module Hasura.GraphQL.Parser.DirectivesSpec (spec) where
import Control.Monad.Identity (Identity (..))
import Data.Dependent.Map qualified as DM
import Data.Maybe (isJust)
import Data.Text qualified as T
import Hasura.GraphQL.Parser.Directives
import Hasura.GraphQL.Parser.Schema
import Hasura.GraphQL.Parser.TestInstances ()
import Hasura.GraphQL.Parser.TestUtils
import Language.GraphQL.Draft.Syntax qualified as G
import Test.Hspec
spec :: Spec
spec = do
testDirective skipDirective skip
testDirective includeDirective include
testDirective cachedDirective cached
testDirective multipleRootFieldsDirective multipleRootFields
testDirective :: Directive origin TestMonad -> DirectiveKey a -> Spec
testDirective dir key = do
let name = diName $ dDefinition dir
location = head $ diLocations $ dDefinition dir
directive = fakeDirective $ dDefinition dir
describe (T.unpack $ G.unName name) $ do
it "has the same type in the key and the directive" $
flip shouldBe (Right True) $
runTest $ do
dmap <- parseDirectives [dir] location [directive]
pure $ isJust $ runIdentity <$> DM.lookup key dmap