summaryrefslogtreecommitdiff
path: root/tests/Language/GraphQL
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Language/GraphQL')
-rw-r--r--tests/Language/GraphQL/ClassSpec.hs47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/Language/GraphQL/ClassSpec.hs b/tests/Language/GraphQL/ClassSpec.hs
new file mode 100644
index 0000000..087abd0
--- /dev/null
+++ b/tests/Language/GraphQL/ClassSpec.hs
@@ -0,0 +1,47 @@
+{- This Source Code Form is subject to the terms of the Mozilla Public License,
+ v. 2.0. If a copy of the MPL was not distributed with this file, You can
+ obtain one at https://mozilla.org/MPL/2.0/. -}
+
+{-# LANGUAGE OverloadedStrings #-}
+module Language.GraphQL.ClassSpec
+ ( spec
+ ) where
+
+import Data.Text (Text)
+import qualified Language.GraphQL.Type as Type
+import Language.GraphQL.Class (FromGraphQL(..), ToGraphQL(..))
+import Test.Hspec (Spec, describe, it, shouldBe)
+
+spec :: Spec
+spec = do
+ describe "ToGraphQL" $ do
+ it "converts integers" $
+ toGraphQL (5 :: Int) `shouldBe` Type.Int 5
+
+ it "converts text" $
+ toGraphQL ("String" :: Text) `shouldBe` Type.String "String"
+
+ it "converts booleans" $
+ toGraphQL True `shouldBe` Type.Boolean True
+
+ it "converts Nothing to Null" $
+ toGraphQL (Nothing :: Maybe Int) `shouldBe` Type.Null
+
+ it "converts singleton lists" $
+ toGraphQL [True] `shouldBe` Type.List [Type.Boolean True]
+
+ describe "FromGraphQL" $ do
+ it "converts integers" $
+ fromGraphQL (Type.Int 5) `shouldBe` Just (5 :: Int)
+
+ it "converts text" $
+ fromGraphQL (Type.String "String") `shouldBe` Just ("String" :: Text)
+
+ it "converts booleans" $
+ fromGraphQL (Type.Boolean True) `shouldBe` Just True
+
+ it "converts Null to Nothing" $
+ fromGraphQL Type.Null `shouldBe` Just (Nothing :: Maybe Int)
+
+ it "converts singleton lists" $
+ fromGraphQL (Type.List [Type.Boolean True]) `shouldBe` Just [True]