diff options
| author | Eugen Wissner <belka@caraus.de> | 2022-09-08 19:53:22 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2022-09-08 19:53:22 +0200 |
| commit | 53ce65d7137a983df43056a3ea33d31054afd5fc (patch) | |
| tree | 749588d8cfcc0b5496cddaebf5480338595fed3a /tests | |
| parent | 1d7f016b9c19dc4ce5b058b2a6d248eaa61ac0e6 (diff) | |
| download | graphql-spice-53ce65d7137a983df43056a3ea33d31054afd5fc.tar.gz | |
Add `ToGraphQL` and `FromGraphQL` typeclasses
With instances for basic types.
Diffstat (limited to 'tests')
| -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] |
