summaryrefslogtreecommitdiff
path: root/tests/Test/StarWars/Schema.hs
diff options
context:
space:
mode:
authorDanny Navarro <j@dannynavarro.net>2017-02-26 16:07:00 -0300
committerDanny Navarro <j@dannynavarro.net>2017-02-28 16:07:00 -0300
commit1b8fca3658215c69402e2bc0f0c46d28e46d70e2 (patch)
treee3d2c3760c6ec720c3a1a60b3ca7cacc74f2e331 /tests/Test/StarWars/Schema.hs
parent642eab312f7b18619ff24e07a8863591f13ba07f (diff)
parentbada28ce24dcd0fcae95ebd7dd9a9ebb106e3842 (diff)
downloadgraphql-1b8fca3658215c69402e2bc0f0c46d28e46d70e2.tar.gz
Merge branch 'core'
This introduces a distinction between a Full and a Core AST. Fragments and variables are replaced when transforming from Full to Core.
Diffstat (limited to 'tests/Test/StarWars/Schema.hs')
-rw-r--r--tests/Test/StarWars/Schema.hs22
1 files changed, 9 insertions, 13 deletions
diff --git a/tests/Test/StarWars/Schema.hs b/tests/Test/StarWars/Schema.hs
index ff79686..e816d63 100644
--- a/tests/Test/StarWars/Schema.hs
+++ b/tests/Test/StarWars/Schema.hs
@@ -1,15 +1,11 @@
-{-# LANGUAGE CPP #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
module Test.StarWars.Schema where
import Control.Applicative (Alternative, empty)
+import Data.List.NonEmpty (NonEmpty((:|)))
-#if !MIN_VERSION_base(4,8,0)
-import Control.Applicative ((<$>))
-import Data.Traversable (traverse)
-#endif
-import Data.GraphQL.Schema
+import Data.GraphQL.Schema (Schema, Resolver, Argument(..), Value(..))
import qualified Data.GraphQL.Schema as Schema
import Test.StarWars.Data
@@ -18,12 +14,12 @@ import Test.StarWars.Data
-- See https://github.com/graphql/graphql-js/blob/master/src/__tests__/starWarsSchema.js
schema :: Alternative f => Schema f
-schema = Schema [hero, human, droid]
+schema = hero :| [human, droid]
hero :: Alternative f => Resolver f
hero = Schema.objectA "hero" $ \case
[] -> character artoo
- [Argument "episode" (ValueInt n)] -> character $ getHero (fromIntegral n)
+ [Argument "episode" (ValueInt n)] -> character . getHero $ fromIntegral n
_ -> empty
human :: Alternative f => Resolver f
@@ -38,10 +34,10 @@ droid = Schema.objectA "droid" $ \case
character :: Alternative f => Character -> [Resolver f]
character char =
- [ Schema.scalar "id" $ id_ char
- , Schema.scalar "name" $ name char
- , Schema.array "friends" $ character <$> getFriends char
- , Schema.enum "appearsIn" . traverse getEpisode $ appearsIn char
+ [ Schema.scalar "id" $ id_ char
+ , Schema.scalar "name" $ name char
+ , Schema.array "friends" $ character <$> getFriends char
+ , Schema.enum "appearsIn" . traverse getEpisode $ appearsIn char
, Schema.scalar "secretBackstory" $ secretBackstory char
- , Schema.scalar "homePlanet" $ either mempty homePlanet char
+ , Schema.scalar "homePlanet" $ either mempty homePlanet char
]