@@ -1,4 +1,5 @@
1{-# LANGUAGE GADTs #-}
1{-# LANGUAGE GADTs #-}
2+{-# LANGUAGE OverloadedLists #-}
2{-# LANGUAGE ScopedTypeVariables #-}
3{-# LANGUAGE ScopedTypeVariables #-}
4module Data.Swagger.Schema.Generator where
5module Data.Swagger.Schema.Generator where
@@ -79,7 +80,12 @@ schemaGen defns schema =
79 let presentKeys = take numProps $ S.toList reqKeys ++ shuffledOptional
80 let presentKeys = take numProps $ S.toList reqKeys ++ shuffledOptional
80 let presentProps = M.filterWithKey (\k _ -> k `elem` presentKeys) props
81 let presentProps = M.filterWithKey (\k _ -> k `elem` presentKeys) props
81 let gens = schemaGen defns <$> presentProps
82 let gens = schemaGen defns <$> presentProps
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)
82− x <- sequence gens
88+ x <- sequence $ gens <> additionalGens
83 return . Object $ M.toHashMap x
89 return . Object $ M.toHashMap x
85 dereference :: Definitions a -> Referenced a -> a
91 dereference :: Definitions a -> Referenced a -> a