@@ -6,10 +6,13 @@ module Data.Swagger.SchemaSpec where
7import Data.Aeson
7import Data.Aeson
8import Data.Aeson.QQ
8import Data.Aeson.QQ
9import Data.Proxy
10import Data.Proxy
10import GHC.Generics
11import GHC.Generics
12import Data.Swagger
13import Data.Swagger
14+import Data.Swagger.Schema
13import SpecCommon
16import SpecCommon
14import Test.Hspec
17import Test.Hspec
@@ -21,6 +24,7 @@ spec = do
21 describe "Generic ToSchema" $ do
24 describe "Generic ToSchema" $ do
22 context "Person" $ checkToSchema (Proxy :: Proxy Person) personSchemaJSON
25 context "Person" $ checkToSchema (Proxy :: Proxy Person) personSchemaJSON
23 context "ISPair" $ checkToSchema (Proxy :: Proxy ISPair) ispairSchemaJSON
26 context "ISPair" $ checkToSchema (Proxy :: Proxy ISPair) ispairSchemaJSON
27+ context "Point (custom fieldLabelModifier)" $ checkToSchema (Proxy :: Proxy Point) pointSchemaJSON
25main :: IO ()
29main :: IO ()
26main = hspec spec
30main = hspec spec
@@ -60,3 +64,25 @@ ispairSchemaJSON = [aesonQQ|
72+instance ToSchema Point where
73+ toSchema = genericToSchema defaultSchemaOptions
74+ { fieldLabelModifier = map toLower . drop (length "point") }
76+pointSchemaJSON :: Value
77+pointSchemaJSON = [aesonQQ|
82+ "x": { "type": "number" },
83+ "y": { "type": "number" }
85+ "required": ["x", "y"]