diff options
Diffstat (limited to 'tests/Language/GraphQL/DirectiveSpec.hs')
| -rw-r--r-- | tests/Language/GraphQL/DirectiveSpec.hs | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/tests/Language/GraphQL/DirectiveSpec.hs b/tests/Language/GraphQL/DirectiveSpec.hs index 6727c50..fd429a6 100644 --- a/tests/Language/GraphQL/DirectiveSpec.hs +++ b/tests/Language/GraphQL/DirectiveSpec.hs @@ -4,19 +4,21 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE PackageImports #-} + module Language.GraphQL.DirectiveSpec ( spec ) where -import Data.Aeson (object, (.=)) -import qualified Data.Aeson as Aeson +import Language.GraphQL.AST.Document (Name) +import Data.HashMap.Strict (HashMap) import qualified Data.HashMap.Strict as HashMap -import Language.GraphQL.Foundation +import qualified Language.GraphQL as GraphQL import Language.GraphQL.TH import Language.GraphQL.Type import qualified Language.GraphQL.Type.Out as Out import Test.Hspec (Spec, describe, it) -import Test.Hspec.GraphQL +import "graphql-spice" Test.Hspec.GraphQL experimentalResolver :: Schema IO experimentalResolver = schema queryType Nothing Nothing mempty @@ -26,9 +28,6 @@ experimentalResolver = schema queryType Nothing Nothing mempty $ Out.ValueResolver (Out.Field Nothing (Out.NamedScalarType int) mempty) $ pure $ Int 5 -emptyObject :: Aeson.Object -emptyObject = HashMap.singleton "data" $ object [] - spec :: Spec spec = describe "Directive executor" $ do @@ -39,8 +38,8 @@ spec = } |] - actual <- graphql experimentalResolver sourceQuery - actual `shouldResolveTo` emptyObject + actual <- GraphQL.graphql experimentalResolver Nothing (mempty :: HashMap Name Value) sourceQuery + actual `shouldResolveTo` Object mempty it "should not skip fields if @skip is false" $ do let sourceQuery = [gql| @@ -48,11 +47,8 @@ spec = experimentalField @skip(if: false) } |] - expected = HashMap.singleton "data" - $ object - [ "experimentalField" .= (5 :: Int) - ] - actual <- graphql experimentalResolver sourceQuery + expected = Object $ HashMap.singleton "experimentalField" (Int 5) + actual <- GraphQL.graphql experimentalResolver Nothing (mempty :: HashMap Name Value) sourceQuery actual `shouldResolveTo` expected it "should skip fields if @include is false" $ do @@ -62,8 +58,8 @@ spec = } |] - actual <- graphql experimentalResolver sourceQuery - actual `shouldResolveTo` emptyObject + actual <- GraphQL.graphql experimentalResolver Nothing (mempty :: HashMap Name Value) sourceQuery + actual `shouldResolveTo` Object mempty it "should be able to @skip a fragment spread" $ do let sourceQuery = [gql| @@ -76,8 +72,8 @@ spec = } |] - actual <- graphql experimentalResolver sourceQuery - actual `shouldResolveTo` emptyObject + actual <- GraphQL.graphql experimentalResolver Nothing (mempty :: HashMap Name Value) sourceQuery + actual `shouldResolveTo` Object mempty it "should be able to @skip an inline fragment" $ do let sourceQuery = [gql| @@ -88,5 +84,5 @@ spec = } |] - actual <- graphql experimentalResolver sourceQuery - actual `shouldResolveTo` emptyObject + actual <- GraphQL.graphql experimentalResolver Nothing (mempty :: HashMap Name Value) sourceQuery + actual `shouldResolveTo` Object mempty |
