summaryrefslogtreecommitdiff
path: root/tests/Language/GraphQL/SchemaSpec.hs
blob: a5d37c0b103b847265a57c08dce78a76601cf178 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{-# LANGUAGE OverloadedStrings #-}
module Language.GraphQL.SchemaSpec
    ( spec
    ) where

import qualified Data.Aeson as Aeson
import qualified Data.Aeson.Types as Aeson
import qualified Data.HashMap.Strict as HashMap
import qualified Data.Sequence as Sequence
import Language.GraphQL.AST.Core
import Language.GraphQL.Error
import Language.GraphQL.Schema
import qualified Language.GraphQL.Type as Type
import Language.GraphQL.Type.Definition
import Test.Hspec (Spec, describe, it, shouldBe)

spec :: Spec
spec =
    describe "resolve" $
        it "ignores invalid __typename" $ do
            let resolver = NestingResolver $ pure $ object
                    [ wrappedObject "field" $ pure $ Type.S "T"
                    ]
                schema = HashMap.singleton "__typename" resolver
                fields = Sequence.singleton
                    $ SelectionFragment
                    $ Fragment "T" Sequence.empty
                expected = Aeson.object
                    [ ("data" , Aeson.emptyObject)
                    ]

            actual <- runCollectErrs (resolve schema fields)
            actual `shouldBe` expected