Jon Schoning 8bd7d3912b [haskell-http-client] fixes for fake-endpoints (#6597)
* fix compile errors / sanitization for petstore-with-fake-endpoints-models-for-testing.yaml
* correct mimetype logic
* add makefile
2017-10-01 18:18:46 +08:00

337 lines
9.3 KiB
Haskell

{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module Instances where
import Data.Text (Text, pack)
import Data.Char (isSpace)
import Data.List (sort)
import qualified Data.Time as TI
import Test.QuickCheck
import qualified Data.HashMap.Strict as HM
import qualified Data.Set as Set
import qualified Data.ByteString.Lazy as BL
import ApproxEq
import SwaggerPetstore.Model
instance Arbitrary Text where
arbitrary = pack <$> arbitrary
instance Arbitrary TI.Day where
arbitrary = TI.ModifiedJulianDay . (2000 +) <$> arbitrary
shrink = (TI.ModifiedJulianDay <$>) . shrink . TI.toModifiedJulianDay
instance Arbitrary TI.UTCTime where
arbitrary =
TI.UTCTime <$> arbitrary <*> (TI.secondsToDiffTime <$> choose (0, 86401))
instance Arbitrary BL.ByteString where
arbitrary = BL.pack <$> arbitrary
shrink xs = BL.pack <$> shrink (BL.unpack xs)
instance Arbitrary ByteArray where
arbitrary = ByteArray <$> arbitrary
shrink (ByteArray xs) = ByteArray <$> shrink xs
instance Arbitrary Binary where
arbitrary = Binary <$> arbitrary
shrink (Binary xs) = Binary <$> shrink xs
instance Arbitrary DateTime where
arbitrary = DateTime <$> arbitrary
shrink (DateTime xs) = DateTime <$> shrink xs
instance Arbitrary Date where
arbitrary = Date <$> arbitrary
shrink (Date xs) = Date <$> shrink xs
-- | Checks if a given list has no duplicates in _O(n log n)_.
hasNoDups
:: (Ord a)
=> [a] -> Bool
hasNoDups = go Set.empty
where
go _ [] = True
go s (x:xs)
| s' <- Set.insert x s
, Set.size s' > Set.size s = go s' xs
| otherwise = False
instance ApproxEq TI.Day where
(=~) = (==)
-- * Models
instance Arbitrary AdditionalPropertiesClass where
arbitrary =
AdditionalPropertiesClass
<$> arbitrary -- additionalPropertiesClassMapProperty :: Maybe (Map.Map String Text)
<*> arbitrary -- additionalPropertiesClassMapOfMapProperty :: Maybe (Map.Map String (Map.Map String Text))
instance Arbitrary Animal where
arbitrary =
Animal
<$> arbitrary -- animalClassName :: Text
<*> arbitrary -- animalColor :: Maybe Text
instance Arbitrary AnimalFarm where
arbitrary =
pure AnimalFarm
instance Arbitrary ApiResponse where
arbitrary =
ApiResponse
<$> arbitrary -- apiResponseCode :: Maybe Int
<*> arbitrary -- apiResponseType :: Maybe Text
<*> arbitrary -- apiResponseMessage :: Maybe Text
instance Arbitrary ArrayOfArrayOfNumberOnly where
arbitrary =
ArrayOfArrayOfNumberOnly
<$> arbitrary -- arrayOfArrayOfNumberOnlyArrayArrayNumber :: Maybe [[Double]]
instance Arbitrary ArrayOfNumberOnly where
arbitrary =
ArrayOfNumberOnly
<$> arbitrary -- arrayOfNumberOnlyArrayNumber :: Maybe [Double]
instance Arbitrary ArrayTest where
arbitrary =
ArrayTest
<$> arbitrary -- arrayTestArrayOfString :: Maybe [Text]
<*> arbitrary -- arrayTestArrayArrayOfInteger :: Maybe [[Integer]]
<*> arbitrary -- arrayTestArrayArrayOfModel :: Maybe [[ReadOnlyFirst]]
instance Arbitrary Capitalization where
arbitrary =
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
instance Arbitrary Category where
arbitrary =
Category
<$> arbitrary -- categoryId :: Maybe Integer
<*> arbitrary -- categoryName :: Maybe Text
instance Arbitrary ClassModel where
arbitrary =
ClassModel
<$> arbitrary -- classModelClass :: Maybe Text
instance Arbitrary Client where
arbitrary =
Client
<$> arbitrary -- clientClient :: Maybe Text
instance Arbitrary EnumArrays where
arbitrary =
EnumArrays
<$> arbitrary -- enumArraysJustSymbol :: Maybe Text
<*> arbitrary -- enumArraysArrayEnum :: Maybe [Text]
instance Arbitrary EnumClass where
arbitrary =
pure EnumClass
instance Arbitrary EnumTest where
arbitrary =
EnumTest
<$> arbitrary -- enumTestEnumString :: Maybe Text
<*> arbitrary -- enumTestEnumInteger :: Maybe Int
<*> arbitrary -- enumTestEnumNumber :: Maybe Double
<*> arbitrary -- enumTestOuterEnum :: Maybe OuterEnum
instance Arbitrary FormatTest where
arbitrary =
FormatTest
<$> arbitrary -- formatTestInteger :: Maybe Int
<*> arbitrary -- formatTestInt32 :: Maybe Int
<*> arbitrary -- formatTestInt64 :: Maybe Integer
<*> arbitrary -- formatTestNumber :: Double
<*> arbitrary -- formatTestFloat :: Maybe Float
<*> arbitrary -- formatTestDouble :: Maybe Double
<*> arbitrary -- formatTestString :: Maybe Text
<*> arbitrary -- formatTestByte :: ByteArray
<*> arbitrary -- formatTestBinary :: Maybe Binary
<*> arbitrary -- formatTestDate :: Date
<*> arbitrary -- formatTestDateTime :: Maybe DateTime
<*> arbitrary -- formatTestUuid :: Maybe Text
<*> arbitrary -- formatTestPassword :: Text
instance Arbitrary HasOnlyReadOnly where
arbitrary =
HasOnlyReadOnly
<$> arbitrary -- hasOnlyReadOnlyBar :: Maybe Text
<*> arbitrary -- hasOnlyReadOnlyFoo :: Maybe Text
instance Arbitrary MapTest where
arbitrary =
MapTest
<$> arbitrary -- mapTestMapMapOfString :: Maybe (Map.Map String (Map.Map String Text))
<*> arbitrary -- mapTestMapOfEnumString :: Maybe (Map.Map String Text)
instance Arbitrary MixedPropertiesAndAdditionalPropertiesClass where
arbitrary =
MixedPropertiesAndAdditionalPropertiesClass
<$> arbitrary -- mixedPropertiesAndAdditionalPropertiesClassUuid :: Maybe Text
<*> arbitrary -- mixedPropertiesAndAdditionalPropertiesClassDateTime :: Maybe DateTime
<*> arbitrary -- mixedPropertiesAndAdditionalPropertiesClassMap :: Maybe (Map.Map String Animal)
instance Arbitrary Model200Response where
arbitrary =
Model200Response
<$> arbitrary -- model200ResponseName :: Maybe Int
<*> arbitrary -- model200ResponseClass :: Maybe Text
instance Arbitrary ModelList where
arbitrary =
ModelList
<$> arbitrary -- modelList123List :: Maybe Text
instance Arbitrary ModelReturn where
arbitrary =
ModelReturn
<$> arbitrary -- modelReturnReturn :: Maybe Int
instance Arbitrary Name where
arbitrary =
Name
<$> arbitrary -- nameName :: Int
<*> arbitrary -- nameSnakeCase :: Maybe Int
<*> arbitrary -- nameProperty :: Maybe Text
<*> arbitrary -- name123Number :: Maybe Int
instance Arbitrary NumberOnly where
arbitrary =
NumberOnly
<$> arbitrary -- numberOnlyJustNumber :: Maybe Double
instance Arbitrary Order where
arbitrary =
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
instance Arbitrary OuterBoolean where
arbitrary =
pure OuterBoolean
instance Arbitrary OuterComposite where
arbitrary =
OuterComposite
<$> arbitrary -- outerCompositeMyNumber :: Maybe OuterNumber
<*> arbitrary -- outerCompositeMyString :: Maybe OuterString
<*> arbitrary -- outerCompositeMyBoolean :: Maybe OuterBoolean
instance Arbitrary OuterEnum where
arbitrary =
pure OuterEnum
instance Arbitrary OuterNumber where
arbitrary =
pure OuterNumber
instance Arbitrary OuterString where
arbitrary =
pure OuterString
instance Arbitrary Pet where
arbitrary =
Pet
<$> arbitrary -- petId :: Maybe Integer
<*> arbitrary -- petCategory :: Maybe Category
<*> arbitrary -- petName :: Text
<*> arbitrary -- petPhotoUrls :: [Text]
<*> arbitrary -- petTags :: Maybe [Tag]
<*> arbitrary -- petStatus :: Maybe Text
instance Arbitrary ReadOnlyFirst where
arbitrary =
ReadOnlyFirst
<$> arbitrary -- readOnlyFirstBar :: Maybe Text
<*> arbitrary -- readOnlyFirstBaz :: Maybe Text
instance Arbitrary SpecialModelName where
arbitrary =
SpecialModelName
<$> arbitrary -- specialModelNameSpecialPropertyName :: Maybe Integer
instance Arbitrary Tag where
arbitrary =
Tag
<$> arbitrary -- tagId :: Maybe Integer
<*> arbitrary -- tagName :: Maybe Text
instance Arbitrary User where
arbitrary =
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
instance Arbitrary Cat where
arbitrary =
Cat
<$> arbitrary -- catClassName :: Text
<*> arbitrary -- catColor :: Maybe Text
<*> arbitrary -- catDeclawed :: Maybe Bool
instance Arbitrary Dog where
arbitrary =
Dog
<$> arbitrary -- dogClassName :: Text
<*> arbitrary -- dogColor :: Maybe Text
<*> arbitrary -- dogBreed :: Maybe Text