{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Case.Github.Test
( test,
)
where
import Data.Morpheus.Client
( DecodeScalar (..),
EncodeScalar (..),
ScalarValue (..),
declareGlobalTypesByName,
declareLocalTypes,
)
import Relude
import Spec.Utils
( assertFetch,
path,
)
import Test.Tasty
( TestTree,
)
newtype GitTimestamp = GitTimestamp
{ unGitTimestamp :: Text
}
deriving (Eq, Show)
instance DecodeScalar GitTimestamp where
decodeScalar (String x) = pure (GitTimestamp x)
decodeScalar _ = Left ""
instance EncodeScalar GitTimestamp where
encodeScalar (GitTimestamp x) = String x
declareGlobalTypesByName
(path "Github/schema.gql")
["GitTimestamp"]
declareLocalTypes
(path "Github/schema.gql")
(path "Github/query.gql")
test :: TestTree
test =
assertFetch
"Github"
Nothing
GetTagsArgs
{ user = "UserName",
repo = "repoName"
}
( Right
GetTags
{ repository =
Just
GetTagsRepository
{ refs =
Just
GetTagsRepositoryRefs
{ pageInfo =
GetTagsRepositoryRefsPageInfo
{ endCursor = Just "test value 1",
hasNextPage = False
},
edges =
Just
[ Just
$ GetTagsRepositoryRefsEdges
{ cursor = "test cursor",
node =
Just
GetTagsRepositoryRefsEdgesNode
{ name = "test name",
target =
Just
$ GetTagsRepositoryRefsEdgesNodeTargetVariantGitObject
GetTagsRepositoryRefsEdgesNodeTargetGitObject
{ __typename = "GitObject"
}
}
}
]
}
}
}
)