From 4812c8f039b72bb8fae083838dd949f7095f2eee Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Wed, 31 Jul 2019 05:40:17 +0200 Subject: Introduce formatter type for the encoder ... to distinguish between minified and pretty printing. --- tests/Test/KitchenSinkSpec.hs | 50 ++++++++++++++++++++++++++++++++++--- tests/data/kitchen-sink.graphql | 6 ++--- tests/data/kitchen-sink.min.graphql | 8 +----- 3 files changed, 51 insertions(+), 13 deletions(-) (limited to 'tests') diff --git a/tests/Test/KitchenSinkSpec.hs b/tests/Test/KitchenSinkSpec.hs index f9f9395..0a6bb91 100644 --- a/tests/Test/KitchenSinkSpec.hs +++ b/tests/Test/KitchenSinkSpec.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} module Test.KitchenSinkSpec ( spec ) where @@ -16,10 +18,11 @@ 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 +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 @@ -27,5 +30,46 @@ spec = describe "Kitchen Sink" $ either (expectationFailure . errorBundlePretty) - (flip shouldBe expected . Encoder.document) + (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 0)) $ parse Parser.document dataFileName actual diff --git a/tests/data/kitchen-sink.graphql b/tests/data/kitchen-sink.graphql index 46fd10e..89903b7 100644 --- a/tests/data/kitchen-sink.graphql +++ b/tests/data/kitchen-sink.graphql @@ -7,11 +7,11 @@ query queryName($foo: ComplexType, $site: Site = MOBILE) { whoever123is: node(id: [123, 456]) { - id , # Inline test comment + id, # Inline test comment ... on User @defer { field2 { - id , - alias: field1(first:10, after:$foo,) @include(if: $foo) { + id, + alias: field1(first: 10, after: $foo) @include(if: $foo) { id, ...frag } diff --git a/tests/data/kitchen-sink.min.graphql b/tests/data/kitchen-sink.min.graphql index c39e6ba..24f5c26 100644 --- a/tests/data/kitchen-sink.min.graphql +++ b/tests/data/kitchen-sink.min.graphql @@ -1,7 +1 @@ -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} +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} -- cgit v1.2.3