{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} module Case.Scalar.Test ( test, ) where import Data.Morpheus.Client ( declareLocalTypesInline, raw, ) import Relude import Spec.Utils ( assertFetch, path, ) import Test.Tasty ( TestTree, ) declareLocalTypesInline (path "Scalar/schema.gql") [raw| query MyQuery( $inputBoolean: Boolean! $inputInt: Int! $inputFloat: Float! $inputString: String! ) { booleanResolver(booleanValue: $inputBoolean) intResolver(intValue: $inputInt) floatResolver(booleanValue: $inputFloat) stringResolver(stringValue: $inputString) } |] -- GraphQL Boolean types must be represented with Haskell Bool types testBoolean :: Bool testBoolean = True -- GraphQL Int types must be represented with Haskell Int types testInt :: Int testInt = 1242345 -- GraphQL Float types must be represented with Haskell Double types testFloat :: Double testFloat = 21233.1234145 -- GraphQL String types must be represented with Haskell Text types testText :: Text testText = "Athens" test :: TestTree test = assertFetch "Scalar" Nothing MyQueryArgs { inputBoolean = testBoolean, inputInt = testInt, inputFloat = testFloat, inputString = testText } ( Right MyQuery { booleanResolver = testBoolean, intResolver = testInt, floatResolver = testFloat, stringResolver = testText } )