diff options
Diffstat (limited to 'tests/Language/GraphQL/Execute/CoerceSpec.hs')
| -rw-r--r-- | tests/Language/GraphQL/Execute/CoerceSpec.hs | 76 |
1 files changed, 1 insertions, 75 deletions
diff --git a/tests/Language/GraphQL/Execute/CoerceSpec.hs b/tests/Language/GraphQL/Execute/CoerceSpec.hs index 2b00895..e0df4bb 100644 --- a/tests/Language/GraphQL/Execute/CoerceSpec.hs +++ b/tests/Language/GraphQL/Execute/CoerceSpec.hs @@ -7,12 +7,8 @@ module Language.GraphQL.Execute.CoerceSpec ( spec ) where -import Data.Aeson as Aeson ((.=)) -import qualified Data.Aeson as Aeson -import qualified Data.Aeson.Types as Aeson import qualified Data.HashMap.Strict as HashMap import Data.Maybe (isNothing) -import Data.Scientific (scientific) import qualified Language.GraphQL.Execute.Coerce as Coerce import Language.GraphQL.Type import qualified Language.GraphQL.Type.In as In @@ -27,81 +23,11 @@ direction = EnumType "Direction" Nothing $ HashMap.fromList , ("WEST", EnumValue Nothing) ] -singletonInputObject :: In.Type -singletonInputObject = In.NamedInputObjectType type' - where - type' = In.InputObjectType "ObjectName" Nothing inputFields - inputFields = HashMap.singleton "field" field - field = In.InputField Nothing (In.NamedScalarType string) Nothing - namedIdType :: In.Type namedIdType = In.NamedScalarType id spec :: Spec -spec = do - describe "VariableValue Aeson" $ do - it "coerces strings" $ - let expected = Just (String "asdf") - actual = Coerce.coerceVariableValue - (In.NamedScalarType string) (Aeson.String "asdf") - in actual `shouldBe` expected - it "coerces non-null strings" $ - let expected = Just (String "asdf") - actual = Coerce.coerceVariableValue - (In.NonNullScalarType string) (Aeson.String "asdf") - in actual `shouldBe` expected - it "coerces booleans" $ - let expected = Just (Boolean True) - actual = Coerce.coerceVariableValue - (In.NamedScalarType boolean) (Aeson.Bool True) - in actual `shouldBe` expected - it "coerces zero to an integer" $ - let expected = Just (Int 0) - actual = Coerce.coerceVariableValue - (In.NamedScalarType int) (Aeson.Number 0) - in actual `shouldBe` expected - it "rejects fractional if an integer is expected" $ - let actual = Coerce.coerceVariableValue - (In.NamedScalarType int) (Aeson.Number $ scientific 14 (-1)) - in actual `shouldSatisfy` isNothing - it "coerces float numbers" $ - let expected = Just (Float 1.4) - actual = Coerce.coerceVariableValue - (In.NamedScalarType float) (Aeson.Number $ scientific 14 (-1)) - in actual `shouldBe` expected - it "coerces IDs" $ - let expected = Just (String "1234") - json = Aeson.String "1234" - actual = Coerce.coerceVariableValue namedIdType json - in actual `shouldBe` expected - it "coerces input objects" $ - let actual = Coerce.coerceVariableValue singletonInputObject - $ Aeson.object ["field" .= ("asdf" :: Aeson.Value)] - expected = Just $ Object $ HashMap.singleton "field" "asdf" - in actual `shouldBe` expected - it "skips the field if it is missing in the variables" $ - let actual = Coerce.coerceVariableValue - singletonInputObject Aeson.emptyObject - expected = Just $ Object HashMap.empty - in actual `shouldBe` expected - it "fails if input object value contains extra fields" $ - let actual = Coerce.coerceVariableValue singletonInputObject - $ Aeson.object variableFields - variableFields = - [ "field" .= ("asdf" :: Aeson.Value) - , "extra" .= ("qwer" :: Aeson.Value) - ] - in actual `shouldSatisfy` isNothing - it "preserves null" $ - let actual = Coerce.coerceVariableValue namedIdType Aeson.Null - in actual `shouldBe` Just Null - it "preserves list order" $ - let list = Aeson.toJSONList ["asdf" :: Aeson.Value, "qwer"] - listType = (In.ListType $ In.NamedScalarType string) - actual = Coerce.coerceVariableValue listType list - expected = Just $ List [String "asdf", String "qwer"] - in actual `shouldBe` expected - +spec = describe "coerceInputLiteral" $ do it "coerces enums" $ let expected = Just (Enum "NORTH") |
