aboutsummaryrefslogtreecommitdiff
path: root/tests/Test/KitchenSinkSpec.hs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Test/KitchenSinkSpec.hs')
-rw-r--r--tests/Test/KitchenSinkSpec.hs59
1 files changed, 53 insertions, 6 deletions
diff --git a/tests/Test/KitchenSinkSpec.hs b/tests/Test/KitchenSinkSpec.hs
index 99a00f7..ae3c2c4 100644
--- a/tests/Test/KitchenSinkSpec.hs
+++ b/tests/Test/KitchenSinkSpec.hs
@@ -1,8 +1,11 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE QuasiQuotes #-}
module Test.KitchenSinkSpec
( spec
) where
import qualified Data.Text.IO as Text.IO
+import qualified Data.Text.Lazy.IO as Text.Lazy.IO
import qualified Language.GraphQL.Encoder as Encoder
import qualified Language.GraphQL.Parser as Parser
import Paths_graphql (getDataFileName)
@@ -16,14 +19,58 @@ import Test.Hspec.Expectations ( expectationFailure
import Text.Megaparsec ( errorBundlePretty
, parse
)
+import Text.RawString.QQ (r)
spec :: Spec
-spec = describe "Kitchen Sink" $
- it "prints the query" $ do
- dataFileName <- getDataFileName "tests/data/kitchen-sink.min.graphql"
- expected <- Text.IO.readFile dataFileName
+spec = describe "Kitchen Sink" $ do
+ it "minifies the query" $ do
+ dataFileName <- getDataFileName "tests/data/kitchen-sink.graphql"
+ minFileName <- getDataFileName "tests/data/kitchen-sink.min.graphql"
+ actual <- Text.IO.readFile dataFileName
+ expected <- Text.Lazy.IO.readFile minFileName
either
(expectationFailure . errorBundlePretty)
- (flip shouldBe expected . Encoder.document)
- $ parse Parser.document dataFileName expected
+ (flip shouldBe expected . Encoder.document Encoder.minified)
+ $ parse Parser.document dataFileName actual
+
+ it "pretty prints the query" $ do
+ dataFileName <- getDataFileName "tests/data/kitchen-sink.graphql"
+ actual <- Text.IO.readFile dataFileName
+ let expected = [r|query queryName($foo: ComplexType, $site: Site = MOBILE) {
+ whoever123is: node(id: [123, 456]) {
+ id
+ ... on User @defer {
+ field2 {
+ id
+ alias: field1(first: 10, after: $foo) @include(if: $foo) {
+ id
+ ...frag
+ }
+ }
+ }
+ }
+}
+
+mutation likeStory {
+ like(story: 123) @defer {
+ story {
+ id
+ }
+ }
+}
+
+fragment frag on Friend {
+ foo(size: $size, bar: $b, obj: {key: "value"})
+}
+
+{
+ unnamed(truthy: true, falsey: false)
+ query
+}
+|]
+
+ either
+ (expectationFailure . errorBundlePretty)
+ (flip shouldBe expected . Encoder.document Encoder.pretty)
+ $ parse Parser.document dataFileName actual