summaryrefslogtreecommitdiff
path: root/tests/Language/GraphQL
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Language/GraphQL')
-rw-r--r--tests/Language/GraphQL/AST/Arbitrary.hs59
1 files changed, 31 insertions, 28 deletions
diff --git a/tests/Language/GraphQL/AST/Arbitrary.hs b/tests/Language/GraphQL/AST/Arbitrary.hs
index 8d0544e..4f74bf3 100644
--- a/tests/Language/GraphQL/AST/Arbitrary.hs
+++ b/tests/Language/GraphQL/AST/Arbitrary.hs
@@ -7,6 +7,7 @@ import Test.QuickCheck.Arbitrary (Arbitrary (arbitrary))
import Test.QuickCheck (oneof, elements, listOf, resize, NonEmptyList (..))
import Test.QuickCheck.Gen (Gen (..))
import Data.Text (Text, pack)
+import Data.Functor ((<&>))
newtype AnyPrintableChar = AnyPrintableChar { getAnyPrintableChar :: Char } deriving (Eq, Show)
@@ -59,34 +60,36 @@ instance Arbitrary a => Arbitrary (AnyObjectField a) where
location' <- getAnyLocation <$> arbitrary
pure $ AnyObjectField $ Doc.ObjectField name' value' location'
-newtype AnyValue = AnyValue { getAnyValue :: Doc.Value } deriving (Eq, Show)
-
-instance Arbitrary AnyValue where
- arbitrary = AnyValue <$> oneof
- [ variableGen
- , Doc.Int <$> arbitrary
- , Doc.Float <$> arbitrary
- , Doc.String <$> (getAnyPrintableText <$> arbitrary)
- , Doc.Boolean <$> arbitrary
- , MkGen $ \_ _ -> Doc.Null
- , Doc.Enum <$> (getAnyName <$> arbitrary)
- , Doc.List <$> listGen
- , Doc.Object <$> objectGen
- ]
- where
- variableGen :: Gen Doc.Value
- variableGen = Doc.Variable <$> (getAnyName <$> arbitrary)
- listGen :: Gen [Doc.Node Doc.Value]
- listGen = (resize 5 . listOf) nodeGen
- nodeGen = do
- node' <- getAnyNode <$> (arbitrary :: Gen (AnyNode AnyValue))
- pure (getAnyValue <$> node')
- objectGen :: Gen [Doc.ObjectField Doc.Value]
- objectGen = resize 1 $ do
- list <- getNonEmpty <$> (arbitrary :: Gen (NonEmptyList (AnyObjectField AnyValue)))
- pure $ map (fmap getAnyValue . getAnyObjectField) list
-
-newtype AnyArgument a = AnyArgument { getAnyArgument :: Doc.Argument } deriving (Eq, Show)
+newtype AnyValue = AnyValue { getAnyValue :: Doc.Value }
+ deriving (Eq, Show)
+
+instance Arbitrary AnyValue
+ where
+ arbitrary =
+ let variableGen :: Gen Doc.Value
+ variableGen = Doc.Variable . getAnyName <$> arbitrary
+ listGen :: Gen [Doc.Node Doc.Value]
+ listGen = (resize 5 . listOf) nodeGen
+ nodeGen :: Gen (Doc.Node Doc.Value)
+ nodeGen = fmap getAnyNode arbitrary <&> fmap getAnyValue
+ objectGen :: Gen [Doc.ObjectField Doc.Value]
+ objectGen = resize 1
+ $ fmap getNonEmpty arbitrary
+ <&> map (fmap getAnyValue . getAnyObjectField)
+ in AnyValue <$> oneof
+ [ variableGen
+ , Doc.Int <$> arbitrary
+ , Doc.Float <$> arbitrary
+ , Doc.String . getAnyPrintableText <$> arbitrary
+ , Doc.Boolean <$> arbitrary
+ , MkGen $ \_ _ -> Doc.Null
+ , Doc.Enum . getAnyName <$> arbitrary
+ , Doc.List <$> listGen
+ , Doc.Object <$> objectGen
+ ]
+
+newtype AnyArgument a = AnyArgument { getAnyArgument :: Doc.Argument }
+ deriving (Eq, Show)
instance Arbitrary a => Arbitrary (AnyArgument a) where
arbitrary = do