diff --git a/CHANGELOG.md b/CHANGELOG.md index 9494208..0ce3323 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ All notable changes to this project will be documented in this file. There are actually only two generic types in GraphQL: Scalars and objects. Enum is a scalar value. +### Fixed +- Parsing block string values. + ## [0.5.0.0] - 2019-08-14 ### Added - `executeWithName` executes an operation with the given name. diff --git a/src/Language/GraphQL/Parser.hs b/src/Language/GraphQL/Parser.hs index 17482d7..5ae71b2 100644 --- a/src/Language/GraphQL/Parser.hs +++ b/src/Language/GraphQL/Parser.hs @@ -108,8 +108,8 @@ value = ValueVariable <$> variable <|> ValueInt <$> integer <|> ValueBoolean <$> booleanValue <|> ValueNull <$ symbol "null" - <|> ValueString <$> string <|> ValueString <$> blockString + <|> ValueString <$> string <|> ValueEnum <$> try enumValue <|> ValueList <$> listValue <|> ValueObject <$> objectValue diff --git a/tests/Language/GraphQL/ParserSpec.hs b/tests/Language/GraphQL/ParserSpec.hs index c412c85..6425ea5 100644 --- a/tests/Language/GraphQL/ParserSpec.hs +++ b/tests/Language/GraphQL/ParserSpec.hs @@ -1,4 +1,5 @@ {-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} module Language.GraphQL.ParserSpec ( spec ) where @@ -11,8 +12,19 @@ import Test.Hspec ( Spec , shouldSatisfy ) import Text.Megaparsec (parse) +import Text.RawString.QQ (r) spec :: Spec -spec = describe "Parser" $ +spec = describe "Parser" $ do it "accepts BOM header" $ parse document "" "\xfeff{foo}" `shouldSatisfy` isRight + + it "accepts block strings as argument" $ + parse document "" [r|{ + hello(text: """Argument""") + }|] `shouldSatisfy` isRight + + it "accepts strings as argument" $ + parse document "" [r|{ + hello(text: "Argument") + }|] `shouldSatisfy` isRight