summaryrefslogtreecommitdiff
path: root/tests/Language/GraphQL/Validate
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2024-01-05 20:46:02 +0100
committerEugen Wissner <belka@caraus.de>2024-01-05 20:46:02 +0100
commit809f446ff1f7e4c94393cce0f490a07ef64d3440 (patch)
tree15df72b2c38c01559adb145219d9bbfd481682ab /tests/Language/GraphQL/Validate
parentb1b6bfcdb902e0cbb97fbe11a59e37676005dee0 (diff)
downloadgraphql-809f446ff1f7e4c94393cce0f490a07ef64d3440.tar.gz
Fix variable location in objects and lists
Diffstat (limited to 'tests/Language/GraphQL/Validate')
-rw-r--r--tests/Language/GraphQL/Validate/RulesSpec.hs24
1 files changed, 22 insertions, 2 deletions
diff --git a/tests/Language/GraphQL/Validate/RulesSpec.hs b/tests/Language/GraphQL/Validate/RulesSpec.hs
index 0d9faaa..7bdbd86 100644
--- a/tests/Language/GraphQL/Validate/RulesSpec.hs
+++ b/tests/Language/GraphQL/Validate/RulesSpec.hs
@@ -18,7 +18,7 @@ import Language.GraphQL.Type
import qualified Language.GraphQL.Type.In as In
import qualified Language.GraphQL.Type.Out as Out
import Language.GraphQL.Validate
-import Test.Hspec (Spec, context, describe, it, shouldBe, shouldContain, xit)
+import Test.Hspec (Spec, context, describe, it, shouldBe, shouldContain)
import Text.Megaparsec (parse, errorBundlePretty)
petSchema :: Schema IO
@@ -29,6 +29,7 @@ queryType = ObjectType "Query" Nothing [] $ HashMap.fromList
[ ("dog", dogResolver)
, ("cat", catResolver)
, ("findDog", findDogResolver)
+ , ("findCats", findCatsResolver)
]
where
dogField = Field Nothing (Out.NamedObjectType dogType) mempty
@@ -39,6 +40,11 @@ queryType = ObjectType "Query" Nothing [] $ HashMap.fromList
findDogResolver = ValueResolver findDogField $ pure Null
catField = Field Nothing (Out.NamedObjectType catType) mempty
catResolver = ValueResolver catField $ pure Null
+ findCatsArguments = HashMap.singleton "commands"
+ $ In.Argument Nothing (In.NonNullListType $ In.NonNullEnumType catCommandType)
+ $ Just $ List []
+ findCatsField = Field Nothing (Out.NonNullListType $ Out.NonNullObjectType catType) findCatsArguments
+ findCatsResolver = ValueResolver findCatsField $ pure $ List []
catCommandType :: EnumType
catCommandType = EnumType "CatCommand" Nothing $ HashMap.fromList
@@ -560,7 +566,7 @@ spec =
}
in validate queryString `shouldBe` [expected]
- xit "gets location of the variable inside an input object" $
+ it "gets variable location inside an input object" $
let queryString = [gql|
query {
findDog (complex: { name: $name }) {
@@ -574,6 +580,20 @@ spec =
}
in validate queryString `shouldBe` [expected]
+ it "gets variable location inside an array" $
+ let queryString = [gql|
+ query {
+ findCats (commands: [JUMP, $command]) {
+ name
+ }
+ }
+ |]
+ expected = Error
+ { message = "Variable \"$command\" is not defined."
+ , locations = [AST.Location 2 30]
+ }
+ in validate queryString `shouldBe` [expected]
+
context "noUnusedVariablesRule" $ do
it "rejects unused variables" $
let queryString = [gql|