aboutsummaryrefslogtreecommitdiff
path: root/tests/Test/DirectiveSpec.hs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Test/DirectiveSpec.hs')
-rw-r--r--tests/Test/DirectiveSpec.hs41
1 files changed, 22 insertions, 19 deletions
diff --git a/tests/Test/DirectiveSpec.hs b/tests/Test/DirectiveSpec.hs
index 3b9da19..b147d77 100644
--- a/tests/Test/DirectiveSpec.hs
+++ b/tests/Test/DirectiveSpec.hs
@@ -4,21 +4,24 @@ module Test.DirectiveSpec
( spec
) where
-import Data.Aeson (Value, object, (.=))
-import Data.HashMap.Strict (HashMap)
+import Data.Aeson (object, (.=))
+import qualified Data.Aeson as Aeson
import qualified Data.HashMap.Strict as HashMap
-import Data.List.NonEmpty (NonEmpty(..))
-import Data.Text (Text)
import Language.GraphQL
-import qualified Language.GraphQL.Schema as Schema
+import Language.GraphQL.Type
+import qualified Language.GraphQL.Type.Out as Out
import Test.Hspec (Spec, describe, it, shouldBe)
import Text.RawString.QQ (r)
-experimentalResolver :: HashMap Text (NonEmpty (Schema.Resolver IO))
-experimentalResolver = HashMap.singleton "Query"
- $ Schema.scalar "experimentalField" (pure (5 :: Int)) :| []
+experimentalResolver :: Schema IO
+experimentalResolver = Schema { query = queryType, mutation = Nothing }
+ where
+ resolver = pure $ Int 5
+ queryType = Out.ObjectType "Query" Nothing []
+ $ HashMap.singleton "experimentalField"
+ $ Out.Resolver (Out.Field Nothing (Out.NamedScalarType int) mempty) resolver
-emptyObject :: Value
+emptyObject :: Aeson.Value
emptyObject = object
[ "data" .= object []
]
@@ -27,17 +30,17 @@ spec :: Spec
spec =
describe "Directive executor" $ do
it "should be able to @skip fields" $ do
- let query = [r|
+ let sourceQuery = [r|
{
experimentalField @skip(if: true)
}
|]
- actual <- graphql experimentalResolver query
+ actual <- graphql experimentalResolver sourceQuery
actual `shouldBe` emptyObject
it "should not skip fields if @skip is false" $ do
- let query = [r|
+ let sourceQuery = [r|
{
experimentalField @skip(if: false)
}
@@ -48,21 +51,21 @@ spec =
]
]
- actual <- graphql experimentalResolver query
+ actual <- graphql experimentalResolver sourceQuery
actual `shouldBe` expected
it "should skip fields if @include is false" $ do
- let query = [r|
+ let sourceQuery = [r|
{
experimentalField @include(if: false)
}
|]
- actual <- graphql experimentalResolver query
+ actual <- graphql experimentalResolver sourceQuery
actual `shouldBe` emptyObject
it "should be able to @skip a fragment spread" $ do
- let query = [r|
+ let sourceQuery = [r|
{
...experimentalFragment @skip(if: true)
}
@@ -72,11 +75,11 @@ spec =
}
|]
- actual <- graphql experimentalResolver query
+ actual <- graphql experimentalResolver sourceQuery
actual `shouldBe` emptyObject
it "should be able to @skip an inline fragment" $ do
- let query = [r|
+ let sourceQuery = [r|
{
... on ExperimentalType @skip(if: true) {
experimentalField
@@ -84,5 +87,5 @@ spec =
}
|]
- actual <- graphql experimentalResolver query
+ actual <- graphql experimentalResolver sourceQuery
actual `shouldBe` emptyObject