{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Case.JSON.Custom.Subscription
( test,
)
where
import Data.ByteString.Lazy.Char8
( ByteString,
)
import Data.Morpheus.Client
( Fetch (..),
gql,
)
import Data.Text (Text)
import Spec.Utils
( defineClientWithJSON,
mockApi,
)
import Test.Tasty
( TestTree,
)
import Test.Tasty.HUnit
( assertEqual,
testCase,
)
import Prelude
( ($),
Either (..),
IO,
Maybe (..),
String,
)
defineClientWithJSON
"JSON/Custom"
[gql|
subscription TestSubscription
{
subscriptionTypeName
}
|]
resolver :: ByteString -> IO ByteString
resolver = mockApi "JSON/Custom/Subscription"
client :: IO (Either String TestSubscription)
client = fetch resolver ()
test :: TestTree
test = testCase "test Subscription" $ do
value <- client
assertEqual
"test custom Subscription"
( Right
( TestSubscription
{ subscriptionTypeName =
Just "TestSubscription"
}
)
)
value