diff options
| author | Eugen Wissner <belka@caraus.de> | 2020-05-21 10:20:59 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2020-05-21 10:20:59 +0200 |
| commit | c3ecfece0358d79dd1da6efbe6ab83e63bf50f88 (patch) | |
| tree | 1ff3de1ddd4bf2e04da57cd6d1c889520c263427 /tests/Test | |
| parent | a5c44f30facdaabd94ed25953a3bd88005efa868 (diff) | |
| download | graphql-c3ecfece0358d79dd1da6efbe6ab83e63bf50f88.tar.gz | |
Coerce variable values
Diffstat (limited to 'tests/Test')
| -rw-r--r-- | tests/Test/DirectiveSpec.hs | 6 | ||||
| -rw-r--r-- | tests/Test/FragmentSpec.hs | 23 | ||||
| -rw-r--r-- | tests/Test/RootOperationSpec.hs | 17 | ||||
| -rw-r--r-- | tests/Test/StarWars/QuerySpec.hs | 3 | ||||
| -rw-r--r-- | tests/Test/StarWars/Schema.hs | 4 |
5 files changed, 39 insertions, 14 deletions
diff --git a/tests/Test/DirectiveSpec.hs b/tests/Test/DirectiveSpec.hs index f39c9c0..56bbb12 100644 --- a/tests/Test/DirectiveSpec.hs +++ b/tests/Test/DirectiveSpec.hs @@ -7,7 +7,6 @@ module Test.DirectiveSpec import Data.Aeson (Value(..), object, (.=)) import qualified Data.HashMap.Strict as HashMap import Language.GraphQL -import qualified Language.GraphQL.Schema as Schema import Language.GraphQL.Type.Definition import Language.GraphQL.Type.Schema (Schema(..)) import Test.Hspec (Spec, describe, it, shouldBe) @@ -16,11 +15,10 @@ import Text.RawString.QQ (r) experimentalResolver :: Schema IO experimentalResolver = Schema { query = queryType, mutation = Nothing } where + resolver = ValueResolver $ pure $ Number 5 queryType = ObjectType "Query" $ HashMap.singleton "experimentalField" - $ Schema.ValueResolver - $ pure - $ Number 5 + $ Field Nothing (ScalarOutputType int) mempty resolver emptyObject :: Value emptyObject = object diff --git a/tests/Test/FragmentSpec.hs b/tests/Test/FragmentSpec.hs index 879a9b7..671def5 100644 --- a/tests/Test/FragmentSpec.hs +++ b/tests/Test/FragmentSpec.hs @@ -6,7 +6,6 @@ module Test.FragmentSpec import Data.Aeson (Value(..), object, (.=)) 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 @@ -50,12 +49,28 @@ hasErrors :: Value -> Bool hasErrors (Object object') = HashMap.member "errors" object' hasErrors _ = True +shirtType :: ObjectType IO +shirtType = ObjectType "Shirt" + $ HashMap.singleton resolverName + $ Field Nothing (ScalarOutputType string) mempty resolve + where + (Schema.Resolver resolverName resolve) = size + +hatType :: ObjectType IO +hatType = ObjectType "Hat" + $ HashMap.singleton resolverName + $ Field Nothing (ScalarOutputType int) mempty resolve + where + (Schema.Resolver resolverName resolve) = circumference + toSchema :: Schema.Resolver IO -> Schema IO -toSchema resolver = Schema { query = queryType, mutation = Nothing } +toSchema (Schema.Resolver resolverName resolve) = Schema + { query = queryType, mutation = Nothing } where + unionMember = if resolverName == "Hat" then hatType else shirtType queryType = ObjectType "Query" - $ Schema.resolversToMap - $ resolver :| [] + $ HashMap.singleton resolverName + $ Field Nothing (ObjectOutputType unionMember) mempty resolve spec :: Spec spec = do diff --git a/tests/Test/RootOperationSpec.hs b/tests/Test/RootOperationSpec.hs index fc86d04..08955f3 100644 --- a/tests/Test/RootOperationSpec.hs +++ b/tests/Test/RootOperationSpec.hs @@ -5,6 +5,7 @@ module Test.RootOperationSpec ) where import Data.Aeson ((.=), object) +import qualified Data.HashMap.Strict as HashMap import Data.List.NonEmpty (NonEmpty(..)) import Language.GraphQL import qualified Language.GraphQL.Schema as Schema @@ -13,10 +14,18 @@ import Text.RawString.QQ (r) import Language.GraphQL.Type.Definition import Language.GraphQL.Type.Schema +hatType :: ObjectType IO +hatType = ObjectType "Hat" + $ HashMap.singleton resolverName + $ Field Nothing (ScalarOutputType int) mempty resolve + where + (Schema.Resolver resolverName resolve) = + Schema.scalar "circumference" $ pure (60 :: Int) + schema :: Schema IO schema = Schema - (ObjectType "Query" queryResolvers) - (Just $ ObjectType "Mutation" mutationResolvers) + (ObjectType "Query" hatField) + (Just $ ObjectType "Mutation" incrementField) where queryResolvers = Schema.resolversToMap $ garment :| [] mutationResolvers = Schema.resolversToMap $ increment :| [] @@ -25,6 +34,10 @@ schema = Schema ] increment = Schema.scalar "incrementCircumference" $ pure (61 :: Int) + incrementField = Field Nothing (ScalarOutputType int) mempty + <$> mutationResolvers + hatField = Field Nothing (ObjectOutputType hatType) mempty + <$> queryResolvers spec :: Spec spec = diff --git a/tests/Test/StarWars/QuerySpec.hs b/tests/Test/StarWars/QuerySpec.hs index 45fcf42..e9147ff 100644 --- a/tests/Test/StarWars/QuerySpec.hs +++ b/tests/Test/StarWars/QuerySpec.hs @@ -10,7 +10,6 @@ import Data.Functor.Identity (Identity(..)) import qualified Data.HashMap.Strict as HashMap import Data.Text (Text) import Language.GraphQL -import Language.GraphQL.Schema (Subs) import Text.RawString.QQ (r) import Test.Hspec.Expectations (Expectation, shouldBe) import Test.Hspec (Spec, describe, it) @@ -360,6 +359,6 @@ spec = describe "Star Wars Query Tests" $ do testQuery :: Text -> Aeson.Value -> Expectation testQuery q expected = runIdentity (graphql schema q) `shouldBe` expected -testQueryParams :: Subs -> Text -> Aeson.Value -> Expectation +testQueryParams :: Aeson.Object -> Text -> Aeson.Value -> Expectation testQueryParams f q expected = runIdentity (graphqlSubs schema f q) `shouldBe` expected diff --git a/tests/Test/StarWars/Schema.hs b/tests/Test/StarWars/Schema.hs index 8b65e22..253c6ca 100644 --- a/tests/Test/StarWars/Schema.hs +++ b/tests/Test/StarWars/Schema.hs @@ -25,8 +25,8 @@ schema :: Schema Identity schema = Schema { query = queryType, mutation = Nothing } where queryType = ObjectType "Query" - $ Schema.resolversToMap - $ hero :| [human, droid] + $ Field Nothing (ScalarOutputType string) mempty + <$> Schema.resolversToMap (hero :| [human, droid]) hero :: Schema.Resolver Identity hero = Schema.object "hero" $ do |
