summaryrefslogtreecommitdiff
path: root/tests/Test/FragmentSpec.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2020-06-03 07:20:38 +0200
committerEugen Wissner <belka@caraus.de>2020-06-03 07:20:38 +0200
commit93a04032886976b540f5fdb1417bd085a642f772 (patch)
tree712dda8a81286e0e39719a25f798ce23bb574e69 /tests/Test/FragmentSpec.hs
parentd12577ae717512979c7654191ca65f25fc877907 (diff)
downloadgraphql-93a04032886976b540f5fdb1417bd085a642f772.tar.gz
Resolve abstract types
Objects that can be a part of an union or interface should return __typename as string.
Diffstat (limited to 'tests/Test/FragmentSpec.hs')
-rw-r--r--tests/Test/FragmentSpec.hs22
1 files changed, 14 insertions, 8 deletions
diff --git a/tests/Test/FragmentSpec.hs b/tests/Test/FragmentSpec.hs
index 36e88b1..0737706 100644
--- a/tests/Test/FragmentSpec.hs
+++ b/tests/Test/FragmentSpec.hs
@@ -54,32 +54,38 @@ hasErrors _ = True
shirtType :: Out.ObjectType IO
shirtType = Out.ObjectType "Shirt" Nothing []
$ HashMap.fromList
- [ ("size", Out.Field Nothing (Out.NamedScalarType string) mempty $ pure $ snd size)
- , ("circumference", Out.Field Nothing (Out.NamedScalarType int) mempty $ pure $ snd circumference)
- , ("__typename", Out.Field Nothing (Out.NamedScalarType string) mempty $ pure $ String "Shirt")
+ [ ("size", Out.Resolver sizeFieldType $ pure $ snd size)
+ , ("circumference", Out.Resolver circumferenceFieldType $ pure $ snd circumference)
]
hatType :: Out.ObjectType IO
hatType = Out.ObjectType "Hat" Nothing []
$ HashMap.fromList
- [ ("size", Out.Field Nothing (Out.NamedScalarType string) mempty $ pure $ snd size)
- , ("circumference", Out.Field Nothing (Out.NamedScalarType int) mempty $ pure $ snd circumference)
- , ("__typename", Out.Field Nothing (Out.NamedScalarType string) mempty $ pure $ String "Hat")
+ [ ("size", Out.Resolver sizeFieldType $ pure $ snd size)
+ , ("circumference", Out.Resolver circumferenceFieldType $ pure $ snd circumference)
]
+circumferenceFieldType :: Out.Field IO
+circumferenceFieldType = Out.Field Nothing (Out.NamedScalarType int) mempty
+
+sizeFieldType :: Out.Field IO
+sizeFieldType = Out.Field Nothing (Out.NamedScalarType string) mempty
+
toSchema :: Text -> (Text, Value) -> Schema IO
toSchema t (_, resolve) = Schema
{ query = queryType, mutation = Nothing }
where
unionMember = if t == "Hat" then hatType else shirtType
+ typeNameField = Out.Field Nothing (Out.NamedScalarType string) mempty
+ garmentField = Out.Field Nothing (Out.NamedObjectType unionMember) mempty
queryType =
case t of
"circumference" -> hatType
"size" -> shirtType
_ -> Out.ObjectType "Query" Nothing []
$ HashMap.fromList
- [ ("garment", Out.Field Nothing (Out.NamedObjectType unionMember) mempty $ pure resolve)
- , ("__typename", Out.Field Nothing (Out.NamedScalarType string) mempty $ pure $ String "Shirt")
+ [ ("garment", Out.Resolver garmentField $ pure resolve)
+ , ("__typename", Out.Resolver typeNameField $ pure $ String "Shirt")
]
spec :: Spec