diff options
Diffstat (limited to 'tests/Language/GraphQL/Validate/RulesSpec.hs')
| -rw-r--r-- | tests/Language/GraphQL/Validate/RulesSpec.hs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/tests/Language/GraphQL/Validate/RulesSpec.hs b/tests/Language/GraphQL/Validate/RulesSpec.hs index 7bdbd86..07ab2f6 100644 --- a/tests/Language/GraphQL/Validate/RulesSpec.hs +++ b/tests/Language/GraphQL/Validate/RulesSpec.hs @@ -15,6 +15,8 @@ import Data.Text (Text) import qualified Language.GraphQL.AST as AST import Language.GraphQL.TH import Language.GraphQL.Type +import qualified Language.GraphQL.Type.Schema as Schema +import qualified Language.GraphQL.AST.DirectiveLocation as DirectiveLocation import qualified Language.GraphQL.Type.In as In import qualified Language.GraphQL.Type.Out as Out import Language.GraphQL.Validate @@ -22,7 +24,9 @@ import Test.Hspec (Spec, context, describe, it, shouldBe, shouldContain) import Text.Megaparsec (parse, errorBundlePretty) petSchema :: Schema IO -petSchema = schema queryType Nothing (Just subscriptionType) mempty +petSchema = schema queryType Nothing (Just subscriptionType) + $ HashMap.singleton "repeat" + $ Schema.Directive Nothing mempty True [DirectiveLocation.ExecutableDirectiveLocation DirectiveLocation.Field] queryType :: ObjectType IO queryType = ObjectType "Query" Nothing [] $ HashMap.fromList @@ -494,7 +498,7 @@ spec = } in validate queryString `shouldBe` [expected] - context "uniqueDirectiveNamesRule" $ + context "uniqueDirectiveNamesRule" $ do it "rejects more than one directive per location" $ let queryString = [gql| query ($foo: Boolean = true, $bar: Boolean = false) { @@ -510,6 +514,16 @@ spec = } in validate queryString `shouldBe` [expected] + it "allows repeating repeatable directives" $ + let queryString = [gql| + query { + dog @repeat @repeat { + name + } + } + |] + in validate queryString `shouldBe` [] + context "uniqueVariableNamesRule" $ it "rejects duplicate variables" $ let queryString = [gql| |
