[haskell-http-client] tests - in Arbitrary instances, reduce the size for non-primitive fields to prevent infinite recursion. Add special handling for Maybe A.Value (#2343) (closes #2312)

* [haskell-http-client] tests - in Arbitrary instances, reduce the size for non-primitive fields to prevent infinite recursion

* [haskell-http-client] tests - generate Nothing instead of (Just Null :: Maybe A.Value) to avoid roundtrip test errors
This commit is contained in:
Jon Schoning 2019-03-11 12:30:24 -05:00 committed by GitHub
parent b128d14707
commit aa7ea8bdca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 401 additions and 258 deletions

View File

@ -1,4 +1,4 @@
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-imports -fno-warn-unused-matches #-}
module Instances where
@ -87,16 +87,34 @@ hasNoDups = go Set.empty
instance ApproxEq TI.Day where
(=~) = (==)
arbitraryReduced :: Arbitrary a => Int -> Gen a
arbitraryReduced n = resize (n `div` 2) arbitrary
arbitraryReducedMaybe :: Arbitrary a => Int -> Gen (Maybe a)
arbitraryReducedMaybe 0 = elements [Nothing]
arbitraryReducedMaybe n = arbitraryReduced n
arbitraryReducedMaybeValue :: Int -> Gen (Maybe A.Value)
arbitraryReducedMaybeValue 0 = elements [Nothing]
arbitraryReducedMaybeValue n = do
generated <- arbitraryReduced n
if generated == Just A.Null
then return Nothing
else return generated
-- * Models
{{#models}}
{{#model}}
{{^isEnum}}
instance Arbitrary {{classname}} where
arbitrary =
arbitrary = sized gen{{classname}}
gen{{classname}} :: Int -> Gen {{classname}}
gen{{classname}} n =
{{#isAlias}}{{classname}} <$> arbitrary{{/isAlias}}{{^isAlias}}{{^hasVars}}
pure {{/hasVars}}{{classname}}
{{#hasVars}} <$>{{/hasVars}} {{#vars}}arbitrary -- {{name}} :: {{^required}}Maybe {{/required}}{{dataType}}
{{#hasVars}} <$>{{/hasVars}} {{#vars}}{{#required}}{{#isPrimitiveType}}arbitrary{{/isPrimitiveType}}{{^isPrimitiveType}}arbitraryReduced n{{/isPrimitiveType}}{{/required}}{{^required}}{{^isFreeFormObject}}arbitraryReducedMaybe n{{/isFreeFormObject}}{{#isFreeFormObject}}arbitraryReducedMaybeValue n{{/isFreeFormObject}}{{/required}} -- {{name}} :: {{^required}}Maybe {{/required}}{{{vendorExtensions.x-dataType}}}
{{#hasMore}} <*> {{/hasMore}}{{/vars}}{{/isAlias}}
{{/isEnum}}
{{/model}}

View File

@ -17,7 +17,7 @@ import {{baseModule}}.MimeTypes
main :: IO ()
main =
hspec $ modifyMaxSize (const 5) $ do
hspec $ modifyMaxSize (const 10) $ do
describe "JSON instances" $ do
pure ()
{{#models}}{{#model}}propMimeEq MimeJSON (Proxy :: Proxy {{classname}})

View File

@ -2,7 +2,7 @@ STACKCMD := stack --install-ghc
.PHONY: all clean build test test-integration build-example build-integration
all: clean build test build-example build-integration
clean: ; (rm -Rf ./.stack-work ./example-app/.stack-work ./tests-integration/.stack-work);
build: ; ($(STACKCMD) haddock --fast);
build: ; ($(STACKCMD) haddock --no-haddock-deps --fast);
test: ; ($(STACKCMD) test --fast);
build-example: build ; (cd ./example-app; $(STACKCMD) build --fast);
# a test-only project may exit with ExitFailure, despite building successfully

View File

@ -1,8 +1,10 @@
-- This file has been generated from package.yaml by hpack version 0.28.2.
cabal-version: 1.12
-- This file has been generated from package.yaml by hpack version 0.31.1.
--
-- see: https://github.com/sol/hpack
--
-- hash: ac93c2ec93cd0d2783d67276552e1c6bac8001151915ed0b6c698df9738859b5
-- hash: 683b4f8e9235d6d2d003d7984f2a2a973c96adb8f3f0687e39d730fbf2e8b221
name: openapi-petstore-app
version: 0.1.0.0
@ -15,7 +17,6 @@ maintainer: author.name@email.com
copyright: YEAR - AUTHOR
license: UnspecifiedLicense
build-type: Simple
cabal-version: >= 1.10
extra-source-files:
README.md

View File

@ -1,4 +1,5 @@
resolver: lts-13.9
extra-deps: [ katip-0.8.0.0 ]
packages:
- location: '.'
- location: '..'

View File

@ -1,8 +1,10 @@
-- This file has been generated from package.yaml by hpack version 0.28.2.
cabal-version: 1.12
-- This file has been generated from package.yaml by hpack version 0.31.1.
--
-- see: https://github.com/sol/hpack
--
-- hash: 9f6dec7b59478ee624f9b1fb2b1a252492dac3fc69ab92c356ac996357dbad2c
-- hash: 72a832d3a374148c4fc68b1129bd71c249795ff82f0df3036b7963e26ae5750e
name: openapi-petstore-tests-integration
version: 0.1.0.0
@ -15,7 +17,6 @@ maintainer: author.name@email.com
copyright: YEAR - AUTHOR
license: UnspecifiedLicense
build-type: Simple
cabal-version: >= 1.10
extra-source-files:
README.md

View File

@ -1,4 +1,5 @@
resolver: lts-13.9
extra-deps: [ katip-0.8.0.0 ]
packages:
- location: '.'
- location: '..'

View File

@ -1,4 +1,4 @@
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-imports -fno-warn-unused-matches #-}
module Instances where
@ -87,223 +87,334 @@ hasNoDups = go Set.empty
instance ApproxEq TI.Day where
(=~) = (==)
arbitraryReduced :: Arbitrary a => Int -> Gen a
arbitraryReduced n = resize (n `div` 2) arbitrary
arbitraryReducedMaybe :: Arbitrary a => Int -> Gen (Maybe a)
arbitraryReducedMaybe 0 = elements [Nothing]
arbitraryReducedMaybe n = arbitraryReduced n
arbitraryReducedMaybeValue :: Int -> Gen (Maybe A.Value)
arbitraryReducedMaybeValue 0 = elements [Nothing]
arbitraryReducedMaybeValue n = do
generated <- arbitraryReduced n
if generated == Just A.Null
then return Nothing
else return generated
-- * Models
instance Arbitrary AdditionalPropertiesClass where
arbitrary =
arbitrary = sized genAdditionalPropertiesClass
genAdditionalPropertiesClass :: Int -> Gen AdditionalPropertiesClass
genAdditionalPropertiesClass n =
AdditionalPropertiesClass
<$> arbitrary -- additionalPropertiesClassMapProperty :: Maybe (Map.Map String Text)
<*> arbitrary -- additionalPropertiesClassMapOfMapProperty :: Maybe (Map.Map String (Map.Map String Text))
<$> arbitraryReducedMaybe n -- additionalPropertiesClassMapProperty :: Maybe (Map.Map String Text)
<*> arbitraryReducedMaybe n -- additionalPropertiesClassMapOfMapProperty :: Maybe (Map.Map String (Map.Map String Text))
instance Arbitrary Animal where
arbitrary =
arbitrary = sized genAnimal
genAnimal :: Int -> Gen Animal
genAnimal n =
Animal
<$> arbitrary -- animalClassName :: Text
<*> arbitrary -- animalColor :: Maybe Text
<*> arbitraryReducedMaybe n -- animalColor :: Maybe Text
instance Arbitrary ApiResponse where
arbitrary =
arbitrary = sized genApiResponse
genApiResponse :: Int -> Gen ApiResponse
genApiResponse n =
ApiResponse
<$> arbitrary -- apiResponseCode :: Maybe Int
<*> arbitrary -- apiResponseType :: Maybe Text
<*> arbitrary -- apiResponseMessage :: Maybe Text
<$> arbitraryReducedMaybe n -- apiResponseCode :: Maybe Int
<*> arbitraryReducedMaybe n -- apiResponseType :: Maybe Text
<*> arbitraryReducedMaybe n -- apiResponseMessage :: Maybe Text
instance Arbitrary ArrayOfArrayOfNumberOnly where
arbitrary =
arbitrary = sized genArrayOfArrayOfNumberOnly
genArrayOfArrayOfNumberOnly :: Int -> Gen ArrayOfArrayOfNumberOnly
genArrayOfArrayOfNumberOnly n =
ArrayOfArrayOfNumberOnly
<$> arbitrary -- arrayOfArrayOfNumberOnlyArrayArrayNumber :: Maybe [[Double]]
<$> arbitraryReducedMaybe n -- arrayOfArrayOfNumberOnlyArrayArrayNumber :: Maybe [[Double]]
instance Arbitrary ArrayOfNumberOnly where
arbitrary =
arbitrary = sized genArrayOfNumberOnly
genArrayOfNumberOnly :: Int -> Gen ArrayOfNumberOnly
genArrayOfNumberOnly n =
ArrayOfNumberOnly
<$> arbitrary -- arrayOfNumberOnlyArrayNumber :: Maybe [Double]
<$> arbitraryReducedMaybe n -- arrayOfNumberOnlyArrayNumber :: Maybe [Double]
instance Arbitrary ArrayTest where
arbitrary =
arbitrary = sized genArrayTest
genArrayTest :: Int -> Gen ArrayTest
genArrayTest n =
ArrayTest
<$> arbitrary -- arrayTestArrayOfString :: Maybe [Text]
<*> arbitrary -- arrayTestArrayArrayOfInteger :: Maybe [[Integer]]
<*> arbitrary -- arrayTestArrayArrayOfModel :: Maybe [[ReadOnlyFirst]]
<$> arbitraryReducedMaybe n -- arrayTestArrayOfString :: Maybe [Text]
<*> arbitraryReducedMaybe n -- arrayTestArrayArrayOfInteger :: Maybe [[Integer]]
<*> arbitraryReducedMaybe n -- arrayTestArrayArrayOfModel :: Maybe [[ReadOnlyFirst]]
instance Arbitrary Capitalization where
arbitrary =
arbitrary = sized genCapitalization
genCapitalization :: Int -> Gen Capitalization
genCapitalization n =
Capitalization
<$> arbitrary -- capitalizationSmallCamel :: Maybe Text
<*> arbitrary -- capitalizationCapitalCamel :: Maybe Text
<*> arbitrary -- capitalizationSmallSnake :: Maybe Text
<*> arbitrary -- capitalizationCapitalSnake :: Maybe Text
<*> arbitrary -- capitalizationScaEthFlowPoints :: Maybe Text
<*> arbitrary -- capitalizationAttName :: Maybe Text
<$> arbitraryReducedMaybe n -- capitalizationSmallCamel :: Maybe Text
<*> arbitraryReducedMaybe n -- capitalizationCapitalCamel :: Maybe Text
<*> arbitraryReducedMaybe n -- capitalizationSmallSnake :: Maybe Text
<*> arbitraryReducedMaybe n -- capitalizationCapitalSnake :: Maybe Text
<*> arbitraryReducedMaybe n -- capitalizationScaEthFlowPoints :: Maybe Text
<*> arbitraryReducedMaybe n -- capitalizationAttName :: Maybe Text
instance Arbitrary Cat where
arbitrary =
arbitrary = sized genCat
genCat :: Int -> Gen Cat
genCat n =
Cat
<$> arbitrary -- catClassName :: Text
<*> arbitrary -- catColor :: Maybe Text
<*> arbitrary -- catDeclawed :: Maybe Bool
<*> arbitraryReducedMaybe n -- catColor :: Maybe Text
<*> arbitraryReducedMaybe n -- catDeclawed :: Maybe Bool
instance Arbitrary Category where
arbitrary =
arbitrary = sized genCategory
genCategory :: Int -> Gen Category
genCategory n =
Category
<$> arbitrary -- categoryId :: Maybe Integer
<$> arbitraryReducedMaybe n -- categoryId :: Maybe Integer
<*> arbitrary -- categoryName :: Text
instance Arbitrary ClassModel where
arbitrary =
arbitrary = sized genClassModel
genClassModel :: Int -> Gen ClassModel
genClassModel n =
ClassModel
<$> arbitrary -- classModelClass :: Maybe Text
<$> arbitraryReducedMaybe n -- classModelClass :: Maybe Text
instance Arbitrary Client where
arbitrary =
arbitrary = sized genClient
genClient :: Int -> Gen Client
genClient n =
Client
<$> arbitrary -- clientClient :: Maybe Text
<$> arbitraryReducedMaybe n -- clientClient :: Maybe Text
instance Arbitrary Dog where
arbitrary =
arbitrary = sized genDog
genDog :: Int -> Gen Dog
genDog n =
Dog
<$> arbitrary -- dogClassName :: Text
<*> arbitrary -- dogColor :: Maybe Text
<*> arbitrary -- dogBreed :: Maybe Text
<*> arbitraryReducedMaybe n -- dogColor :: Maybe Text
<*> arbitraryReducedMaybe n -- dogBreed :: Maybe Text
instance Arbitrary EnumArrays where
arbitrary =
arbitrary = sized genEnumArrays
genEnumArrays :: Int -> Gen EnumArrays
genEnumArrays n =
EnumArrays
<$> arbitrary -- enumArraysJustSymbol :: Maybe Text
<*> arbitrary -- enumArraysArrayEnum :: Maybe [Text]
<$> arbitraryReducedMaybe n -- enumArraysJustSymbol :: Maybe E'JustSymbol
<*> arbitraryReducedMaybe n -- enumArraysArrayEnum :: Maybe [E'ArrayEnum]
instance Arbitrary EnumTest where
arbitrary =
arbitrary = sized genEnumTest
genEnumTest :: Int -> Gen EnumTest
genEnumTest n =
EnumTest
<$> arbitrary -- enumTestEnumString :: Maybe Text
<*> arbitrary -- enumTestEnumStringRequired :: Text
<*> arbitrary -- enumTestEnumInteger :: Maybe Int
<*> arbitrary -- enumTestEnumNumber :: Maybe Double
<*> arbitrary -- enumTestOuterEnum :: Maybe OuterEnum
<$> arbitraryReducedMaybe n -- enumTestEnumString :: Maybe E'EnumString
<*> arbitrary -- enumTestEnumStringRequired :: E'EnumString
<*> arbitraryReducedMaybe n -- enumTestEnumInteger :: Maybe E'EnumInteger
<*> arbitraryReducedMaybe n -- enumTestEnumNumber :: Maybe E'EnumNumber
<*> arbitraryReducedMaybe n -- enumTestOuterEnum :: Maybe OuterEnum
instance Arbitrary File where
arbitrary =
arbitrary = sized genFile
genFile :: Int -> Gen File
genFile n =
File
<$> arbitrary -- fileSourceUri :: Maybe Text
<$> arbitraryReducedMaybe n -- fileSourceUri :: Maybe Text
instance Arbitrary FileSchemaTestClass where
arbitrary =
arbitrary = sized genFileSchemaTestClass
genFileSchemaTestClass :: Int -> Gen FileSchemaTestClass
genFileSchemaTestClass n =
FileSchemaTestClass
<$> arbitrary -- fileSchemaTestClassFile :: Maybe File
<*> arbitrary -- fileSchemaTestClassFiles :: Maybe [File]
<$> arbitraryReducedMaybe n -- fileSchemaTestClassFile :: Maybe File
<*> arbitraryReducedMaybe n -- fileSchemaTestClassFiles :: Maybe [File]
instance Arbitrary FormatTest where
arbitrary =
arbitrary = sized genFormatTest
genFormatTest :: Int -> Gen FormatTest
genFormatTest n =
FormatTest
<$> arbitrary -- formatTestInteger :: Maybe Int
<*> arbitrary -- formatTestInt32 :: Maybe Int
<*> arbitrary -- formatTestInt64 :: Maybe Integer
<$> arbitraryReducedMaybe n -- formatTestInteger :: Maybe Int
<*> arbitraryReducedMaybe n -- formatTestInt32 :: Maybe Int
<*> arbitraryReducedMaybe n -- formatTestInt64 :: Maybe Integer
<*> arbitrary -- formatTestNumber :: Double
<*> arbitrary -- formatTestFloat :: Maybe Float
<*> arbitrary -- formatTestDouble :: Maybe Double
<*> arbitrary -- formatTestString :: Maybe Text
<*> arbitrary -- formatTestByte :: ByteArray
<*> arbitrary -- formatTestBinary :: Maybe FilePath
<*> arbitrary -- formatTestDate :: Date
<*> arbitrary -- formatTestDateTime :: Maybe DateTime
<*> arbitrary -- formatTestUuid :: Maybe Text
<*> arbitraryReducedMaybe n -- formatTestFloat :: Maybe Float
<*> arbitraryReducedMaybe n -- formatTestDouble :: Maybe Double
<*> arbitraryReducedMaybe n -- formatTestString :: Maybe Text
<*> arbitraryReduced n -- formatTestByte :: ByteArray
<*> arbitraryReducedMaybe n -- formatTestBinary :: Maybe FilePath
<*> arbitraryReduced n -- formatTestDate :: Date
<*> arbitraryReducedMaybe n -- formatTestDateTime :: Maybe DateTime
<*> arbitraryReducedMaybe n -- formatTestUuid :: Maybe Text
<*> arbitrary -- formatTestPassword :: Text
instance Arbitrary HasOnlyReadOnly where
arbitrary =
arbitrary = sized genHasOnlyReadOnly
genHasOnlyReadOnly :: Int -> Gen HasOnlyReadOnly
genHasOnlyReadOnly n =
HasOnlyReadOnly
<$> arbitrary -- hasOnlyReadOnlyBar :: Maybe Text
<*> arbitrary -- hasOnlyReadOnlyFoo :: Maybe Text
<$> arbitraryReducedMaybe n -- hasOnlyReadOnlyBar :: Maybe Text
<*> arbitraryReducedMaybe n -- hasOnlyReadOnlyFoo :: Maybe Text
instance Arbitrary MapTest where
arbitrary =
arbitrary = sized genMapTest
genMapTest :: Int -> Gen MapTest
genMapTest n =
MapTest
<$> arbitrary -- mapTestMapMapOfString :: Maybe (Map.Map String (Map.Map String Text))
<*> arbitrary -- mapTestMapOfEnumString :: Maybe (Map.Map String Text)
<*> arbitrary -- mapTestDirectMap :: Maybe (Map.Map String Bool)
<*> arbitrary -- mapTestIndirectMap :: Maybe (Map.Map String Bool)
<$> arbitraryReducedMaybe n -- mapTestMapMapOfString :: Maybe (Map.Map String (Map.Map String Text))
<*> arbitraryReducedMaybe n -- mapTestMapOfEnumString :: Maybe (Map.Map String E'Inner)
<*> arbitraryReducedMaybe n -- mapTestDirectMap :: Maybe (Map.Map String Bool)
<*> arbitraryReducedMaybe n -- mapTestIndirectMap :: Maybe (Map.Map String Bool)
instance Arbitrary MixedPropertiesAndAdditionalPropertiesClass where
arbitrary =
arbitrary = sized genMixedPropertiesAndAdditionalPropertiesClass
genMixedPropertiesAndAdditionalPropertiesClass :: Int -> Gen MixedPropertiesAndAdditionalPropertiesClass
genMixedPropertiesAndAdditionalPropertiesClass n =
MixedPropertiesAndAdditionalPropertiesClass
<$> arbitrary -- mixedPropertiesAndAdditionalPropertiesClassUuid :: Maybe Text
<*> arbitrary -- mixedPropertiesAndAdditionalPropertiesClassDateTime :: Maybe DateTime
<*> arbitrary -- mixedPropertiesAndAdditionalPropertiesClassMap :: Maybe (Map.Map String Animal)
<$> arbitraryReducedMaybe n -- mixedPropertiesAndAdditionalPropertiesClassUuid :: Maybe Text
<*> arbitraryReducedMaybe n -- mixedPropertiesAndAdditionalPropertiesClassDateTime :: Maybe DateTime
<*> arbitraryReducedMaybe n -- mixedPropertiesAndAdditionalPropertiesClassMap :: Maybe (Map.Map String Animal)
instance Arbitrary Model200Response where
arbitrary =
arbitrary = sized genModel200Response
genModel200Response :: Int -> Gen Model200Response
genModel200Response n =
Model200Response
<$> arbitrary -- model200ResponseName :: Maybe Int
<*> arbitrary -- model200ResponseClass :: Maybe Text
<$> arbitraryReducedMaybe n -- model200ResponseName :: Maybe Int
<*> arbitraryReducedMaybe n -- model200ResponseClass :: Maybe Text
instance Arbitrary ModelList where
arbitrary =
arbitrary = sized genModelList
genModelList :: Int -> Gen ModelList
genModelList n =
ModelList
<$> arbitrary -- modelList123list :: Maybe Text
<$> arbitraryReducedMaybe n -- modelList123list :: Maybe Text
instance Arbitrary ModelReturn where
arbitrary =
arbitrary = sized genModelReturn
genModelReturn :: Int -> Gen ModelReturn
genModelReturn n =
ModelReturn
<$> arbitrary -- modelReturnReturn :: Maybe Int
<$> arbitraryReducedMaybe n -- modelReturnReturn :: Maybe Int
instance Arbitrary Name where
arbitrary =
arbitrary = sized genName
genName :: Int -> Gen Name
genName n =
Name
<$> arbitrary -- nameName :: Int
<*> arbitrary -- nameSnakeCase :: Maybe Int
<*> arbitrary -- nameProperty :: Maybe Text
<*> arbitrary -- name123number :: Maybe Int
<*> arbitraryReducedMaybe n -- nameSnakeCase :: Maybe Int
<*> arbitraryReducedMaybe n -- nameProperty :: Maybe Text
<*> arbitraryReducedMaybe n -- name123number :: Maybe Int
instance Arbitrary NumberOnly where
arbitrary =
arbitrary = sized genNumberOnly
genNumberOnly :: Int -> Gen NumberOnly
genNumberOnly n =
NumberOnly
<$> arbitrary -- numberOnlyJustNumber :: Maybe Double
<$> arbitraryReducedMaybe n -- numberOnlyJustNumber :: Maybe Double
instance Arbitrary Order where
arbitrary =
arbitrary = sized genOrder
genOrder :: Int -> Gen Order
genOrder n =
Order
<$> arbitrary -- orderId :: Maybe Integer
<*> arbitrary -- orderPetId :: Maybe Integer
<*> arbitrary -- orderQuantity :: Maybe Int
<*> arbitrary -- orderShipDate :: Maybe DateTime
<*> arbitrary -- orderStatus :: Maybe Text
<*> arbitrary -- orderComplete :: Maybe Bool
<$> arbitraryReducedMaybe n -- orderId :: Maybe Integer
<*> arbitraryReducedMaybe n -- orderPetId :: Maybe Integer
<*> arbitraryReducedMaybe n -- orderQuantity :: Maybe Int
<*> arbitraryReducedMaybe n -- orderShipDate :: Maybe DateTime
<*> arbitraryReducedMaybe n -- orderStatus :: Maybe E'Status
<*> arbitraryReducedMaybe n -- orderComplete :: Maybe Bool
instance Arbitrary OuterComposite where
arbitrary =
arbitrary = sized genOuterComposite
genOuterComposite :: Int -> Gen OuterComposite
genOuterComposite n =
OuterComposite
<$> arbitrary -- outerCompositeMyNumber :: Maybe Double
<*> arbitrary -- outerCompositeMyString :: Maybe Text
<*> arbitrary -- outerCompositeMyBoolean :: Maybe Bool
<$> arbitraryReducedMaybe n -- outerCompositeMyNumber :: Maybe Double
<*> arbitraryReducedMaybe n -- outerCompositeMyString :: Maybe Text
<*> arbitraryReducedMaybe n -- outerCompositeMyBoolean :: Maybe Bool
instance Arbitrary Pet where
arbitrary =
arbitrary = sized genPet
genPet :: Int -> Gen Pet
genPet n =
Pet
<$> arbitrary -- petId :: Maybe Integer
<*> arbitrary -- petCategory :: Maybe Category
<$> arbitraryReducedMaybe n -- petId :: Maybe Integer
<*> arbitraryReducedMaybe n -- petCategory :: Maybe Category
<*> arbitrary -- petName :: Text
<*> arbitrary -- petPhotoUrls :: [Text]
<*> arbitrary -- petTags :: Maybe [Tag]
<*> arbitrary -- petStatus :: Maybe Text
<*> arbitraryReducedMaybe n -- petTags :: Maybe [Tag]
<*> arbitraryReducedMaybe n -- petStatus :: Maybe E'Status2
instance Arbitrary ReadOnlyFirst where
arbitrary =
arbitrary = sized genReadOnlyFirst
genReadOnlyFirst :: Int -> Gen ReadOnlyFirst
genReadOnlyFirst n =
ReadOnlyFirst
<$> arbitrary -- readOnlyFirstBar :: Maybe Text
<*> arbitrary -- readOnlyFirstBaz :: Maybe Text
<$> arbitraryReducedMaybe n -- readOnlyFirstBar :: Maybe Text
<*> arbitraryReducedMaybe n -- readOnlyFirstBaz :: Maybe Text
instance Arbitrary SpecialModelName where
arbitrary =
arbitrary = sized genSpecialModelName
genSpecialModelName :: Int -> Gen SpecialModelName
genSpecialModelName n =
SpecialModelName
<$> arbitrary -- specialModelNameSpecialPropertyName :: Maybe Integer
<$> arbitraryReducedMaybe n -- specialModelNameSpecialPropertyName :: Maybe Integer
instance Arbitrary Tag where
arbitrary =
arbitrary = sized genTag
genTag :: Int -> Gen Tag
genTag n =
Tag
<$> arbitrary -- tagId :: Maybe Integer
<*> arbitrary -- tagName :: Maybe Text
<$> arbitraryReducedMaybe n -- tagId :: Maybe Integer
<*> arbitraryReducedMaybe n -- tagName :: Maybe Text
instance Arbitrary TypeHolderDefault where
arbitrary =
arbitrary = sized genTypeHolderDefault
genTypeHolderDefault :: Int -> Gen TypeHolderDefault
genTypeHolderDefault n =
TypeHolderDefault
<$> arbitrary -- typeHolderDefaultStringItem :: Text
<*> arbitrary -- typeHolderDefaultNumberItem :: Double
@ -312,7 +423,10 @@ instance Arbitrary TypeHolderDefault where
<*> arbitrary -- typeHolderDefaultArrayItem :: [Int]
instance Arbitrary TypeHolderExample where
arbitrary =
arbitrary = sized genTypeHolderExample
genTypeHolderExample :: Int -> Gen TypeHolderExample
genTypeHolderExample n =
TypeHolderExample
<$> arbitrary -- typeHolderExampleStringItem :: Text
<*> arbitrary -- typeHolderExampleNumberItem :: Double
@ -321,49 +435,55 @@ instance Arbitrary TypeHolderExample where
<*> arbitrary -- typeHolderExampleArrayItem :: [Int]
instance Arbitrary User where
arbitrary =
arbitrary = sized genUser
genUser :: Int -> Gen User
genUser n =
User
<$> arbitrary -- userId :: Maybe Integer
<*> arbitrary -- userUsername :: Maybe Text
<*> arbitrary -- userFirstName :: Maybe Text
<*> arbitrary -- userLastName :: Maybe Text
<*> arbitrary -- userEmail :: Maybe Text
<*> arbitrary -- userPassword :: Maybe Text
<*> arbitrary -- userPhone :: Maybe Text
<*> arbitrary -- userUserStatus :: Maybe Int
<$> arbitraryReducedMaybe n -- userId :: Maybe Integer
<*> arbitraryReducedMaybe n -- userUsername :: Maybe Text
<*> arbitraryReducedMaybe n -- userFirstName :: Maybe Text
<*> arbitraryReducedMaybe n -- userLastName :: Maybe Text
<*> arbitraryReducedMaybe n -- userEmail :: Maybe Text
<*> arbitraryReducedMaybe n -- userPassword :: Maybe Text
<*> arbitraryReducedMaybe n -- userPhone :: Maybe Text
<*> arbitraryReducedMaybe n -- userUserStatus :: Maybe Int
instance Arbitrary XmlItem where
arbitrary =
arbitrary = sized genXmlItem
genXmlItem :: Int -> Gen XmlItem
genXmlItem n =
XmlItem
<$> arbitrary -- xmlItemAttributeString :: Maybe Text
<*> arbitrary -- xmlItemAttributeNumber :: Maybe Double
<*> arbitrary -- xmlItemAttributeInteger :: Maybe Int
<*> arbitrary -- xmlItemAttributeBoolean :: Maybe Bool
<*> arbitrary -- xmlItemWrappedArray :: Maybe [Int]
<*> arbitrary -- xmlItemNameString :: Maybe Text
<*> arbitrary -- xmlItemNameNumber :: Maybe Double
<*> arbitrary -- xmlItemNameInteger :: Maybe Int
<*> arbitrary -- xmlItemNameBoolean :: Maybe Bool
<*> arbitrary -- xmlItemNameArray :: Maybe [Int]
<*> arbitrary -- xmlItemNameWrappedArray :: Maybe [Int]
<*> arbitrary -- xmlItemPrefixString :: Maybe Text
<*> arbitrary -- xmlItemPrefixNumber :: Maybe Double
<*> arbitrary -- xmlItemPrefixInteger :: Maybe Int
<*> arbitrary -- xmlItemPrefixBoolean :: Maybe Bool
<*> arbitrary -- xmlItemPrefixArray :: Maybe [Int]
<*> arbitrary -- xmlItemPrefixWrappedArray :: Maybe [Int]
<*> arbitrary -- xmlItemNamespaceString :: Maybe Text
<*> arbitrary -- xmlItemNamespaceNumber :: Maybe Double
<*> arbitrary -- xmlItemNamespaceInteger :: Maybe Int
<*> arbitrary -- xmlItemNamespaceBoolean :: Maybe Bool
<*> arbitrary -- xmlItemNamespaceArray :: Maybe [Int]
<*> arbitrary -- xmlItemNamespaceWrappedArray :: Maybe [Int]
<*> arbitrary -- xmlItemPrefixNsString :: Maybe Text
<*> arbitrary -- xmlItemPrefixNsNumber :: Maybe Double
<*> arbitrary -- xmlItemPrefixNsInteger :: Maybe Int
<*> arbitrary -- xmlItemPrefixNsBoolean :: Maybe Bool
<*> arbitrary -- xmlItemPrefixNsArray :: Maybe [Int]
<*> arbitrary -- xmlItemPrefixNsWrappedArray :: Maybe [Int]
<$> arbitraryReducedMaybe n -- xmlItemAttributeString :: Maybe Text
<*> arbitraryReducedMaybe n -- xmlItemAttributeNumber :: Maybe Double
<*> arbitraryReducedMaybe n -- xmlItemAttributeInteger :: Maybe Int
<*> arbitraryReducedMaybe n -- xmlItemAttributeBoolean :: Maybe Bool
<*> arbitraryReducedMaybe n -- xmlItemWrappedArray :: Maybe [Int]
<*> arbitraryReducedMaybe n -- xmlItemNameString :: Maybe Text
<*> arbitraryReducedMaybe n -- xmlItemNameNumber :: Maybe Double
<*> arbitraryReducedMaybe n -- xmlItemNameInteger :: Maybe Int
<*> arbitraryReducedMaybe n -- xmlItemNameBoolean :: Maybe Bool
<*> arbitraryReducedMaybe n -- xmlItemNameArray :: Maybe [Int]
<*> arbitraryReducedMaybe n -- xmlItemNameWrappedArray :: Maybe [Int]
<*> arbitraryReducedMaybe n -- xmlItemPrefixString :: Maybe Text
<*> arbitraryReducedMaybe n -- xmlItemPrefixNumber :: Maybe Double
<*> arbitraryReducedMaybe n -- xmlItemPrefixInteger :: Maybe Int
<*> arbitraryReducedMaybe n -- xmlItemPrefixBoolean :: Maybe Bool
<*> arbitraryReducedMaybe n -- xmlItemPrefixArray :: Maybe [Int]
<*> arbitraryReducedMaybe n -- xmlItemPrefixWrappedArray :: Maybe [Int]
<*> arbitraryReducedMaybe n -- xmlItemNamespaceString :: Maybe Text
<*> arbitraryReducedMaybe n -- xmlItemNamespaceNumber :: Maybe Double
<*> arbitraryReducedMaybe n -- xmlItemNamespaceInteger :: Maybe Int
<*> arbitraryReducedMaybe n -- xmlItemNamespaceBoolean :: Maybe Bool
<*> arbitraryReducedMaybe n -- xmlItemNamespaceArray :: Maybe [Int]
<*> arbitraryReducedMaybe n -- xmlItemNamespaceWrappedArray :: Maybe [Int]
<*> arbitraryReducedMaybe n -- xmlItemPrefixNsString :: Maybe Text
<*> arbitraryReducedMaybe n -- xmlItemPrefixNsNumber :: Maybe Double
<*> arbitraryReducedMaybe n -- xmlItemPrefixNsInteger :: Maybe Int
<*> arbitraryReducedMaybe n -- xmlItemPrefixNsBoolean :: Maybe Bool
<*> arbitraryReducedMaybe n -- xmlItemPrefixNsArray :: Maybe [Int]
<*> arbitraryReducedMaybe n -- xmlItemPrefixNsWrappedArray :: Maybe [Int]
@ -406,3 +526,4 @@ instance Arbitrary EnumClass where
instance Arbitrary OuterEnum where
arbitrary = arbitraryBoundedEnum

View File

@ -17,7 +17,7 @@ import OpenAPIPetstore.MimeTypes
main :: IO ()
main =
hspec $ modifyMaxSize (const 5) $ do
hspec $ modifyMaxSize (const 10) $ do
describe "JSON instances" $ do
pure ()
propMimeEq MimeJSON (Proxy :: Proxy AdditionalPropertiesClass)