@@ -1,4 +1,5 @@
11{-# LANGUAGE GADTs #-}
2+{-# LANGUAGE OverloadedLists #-}
23{-# LANGUAGE ScopedTypeVariables #-}
34
45module Data.Swagger.Schema.Generator where
@@ -79,7 +80,12 @@ schemaGen defns schema =
7980 let presentKeys = take numProps $ S.toList reqKeys ++ shuffledOptional
8081 let presentProps = M.filterWithKey (\k _ -> k `elem` presentKeys) props
8182 let gens = schemaGen defns <$> presentProps
82− x <- sequence gens
83+ additionalGens <- case schema ^. additionalProperties of
84+ Just (AdditionalPropertiesSchema addlSchema) -> do
85+ additionalKeys <- sequence . take (numProps - length presentProps) . repeat $ T.pack <$> arbitrary
86+ return . M.fromList $ zip additionalKeys (repeat . schemaGen defns $ dereference defns addlSchema)
87+ _ -> return []
88+ x <- sequence $ gens <> additionalGens
8389 return . Object $ M.toHashMap x
8490 where
8591 dereference :: Definitions a -> Referenced a -> a