diff options
Diffstat (limited to 'tests/Language/GraphQL')
| -rw-r--r-- | tests/Language/GraphQL/ClassSpec.hs | 47 |
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] |
