Add deriveFromGraphQL
For deriving FromGraphQL instances automatically.
This commit is contained in:
parent
11ab7e18e1
commit
cf029961e8
4 changed files with 82 additions and 26 deletions
tests/Language/GraphQL
|
@ -12,16 +12,22 @@ import Data.Text (Text)
|
|||
import Data.Time (UTCTime(..))
|
||||
import Data.Time.Calendar.OrdinalDate (fromOrdinalDate)
|
||||
import qualified Language.GraphQL.Type as Type
|
||||
import Language.GraphQL.Class (FromGraphQL(..), ToGraphQL(..), deriveToGraphQL)
|
||||
import Language.GraphQL.Class
|
||||
( FromGraphQL(..)
|
||||
, ToGraphQL(..)
|
||||
, deriveFromGraphQL
|
||||
, deriveToGraphQL
|
||||
)
|
||||
import Test.Hspec (Spec, describe, it, shouldBe)
|
||||
import qualified Data.HashMap.Strict as HashMap
|
||||
|
||||
data TwoFieldRecord = TwoFieldRecord
|
||||
{ x :: Int
|
||||
, y :: Bool
|
||||
}
|
||||
} deriving (Eq, Show)
|
||||
|
||||
$(deriveToGraphQL ''TwoFieldRecord)
|
||||
$(deriveFromGraphQL ''TwoFieldRecord)
|
||||
|
||||
spec :: Spec
|
||||
spec = do
|
||||
|
@ -76,7 +82,7 @@ spec = do
|
|||
in actual `shouldBe` expected
|
||||
|
||||
describe "deriveToGraphQL" $ do
|
||||
it "derives ToGraphQL for a record" $ do
|
||||
it "derives ToGraphQL for a record with multiple fields" $ do
|
||||
let expected = Type.Object $ HashMap.fromList
|
||||
[ ("x", Type.Int 1)
|
||||
, ("y", Type.Boolean True)
|
||||
|
@ -87,3 +93,15 @@ spec = do
|
|||
, y = True
|
||||
}
|
||||
in toGraphQL given `shouldBe` expected
|
||||
|
||||
describe "deriveFromGraphQL" $ do
|
||||
it "derives FromGraphQL for a record with multiple fields" $ do
|
||||
let given = Type.Object $ HashMap.fromList
|
||||
[ ("x", Type.Int 1)
|
||||
, ("y", Type.Boolean True)
|
||||
]
|
||||
expected = TwoFieldRecord
|
||||
{ x = 1
|
||||
, y = True
|
||||
}
|
||||
in fromGraphQL given `shouldBe` Just expected
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue