git.iko.soy/typeable/swagger2
on master help sign in
Merge pull request #143 from GetShopTV/fix-single-field-maybe

Fix optional property for unary records

commitfff19d2fb66152962510f84d27e1c565b5658757 authorNickolay Kudasov <fizruk@users.noreply.github.com> dateWed 7 Mar 2018, 06:23 (9 years ago) parentc669a64eca1182
2 files changed+23−1
src/Data/Swagger/Internal/Schema.hs+1−1 test/Data/Swagger/SchemaSpec.hs+22
src/Data/Swagger/Internal/Schema.hs+1−1
@@ -725,7 +725,7 @@ instance OVERLAPPING_ Constructor c => GToSchema (C1 c U1) where
725725 gdeclareNamedSchema = gdeclareNamedSumSchema
726726
727727-- | Single field constructor.
728−instance (Selector s, GToSchema f) => GToSchema (C1 c (S1 s f)) where
728+instance (Selector s, GToSchema f, GToSchema (S1 s f)) => GToSchema (C1 c (S1 s f)) where
729729 gdeclareNamedSchema opts _ s
730730 | unwrapUnaryRecords opts = fieldSchema
731731 | otherwise =
test/Data/Swagger/SchemaSpec.hs+22
@@ -78,6 +78,7 @@ spec = do
7878 context "Email (unwrapUnaryRecords)" $ checkToSchema (Proxy :: Proxy Email) emailSchemaJSON
7979 context "UserId (non-record newtype)" $ checkToSchema (Proxy :: Proxy UserId) userIdSchemaJSON
8080 context "Player (unary record)" $ checkToSchema (Proxy :: Proxy Player) playerSchemaJSON
81+ context "SingleMaybeField (unary record with Maybe)" $ checkToSchema (Proxy :: Proxy SingleMaybeField) singleMaybeFieldSchemaJSON
8182 context "Players (inlining schema)" $ checkToSchema (Proxy :: Proxy Players) playersSchemaJSON
8283 context "MyRoseTree (datatypeNameModifier)" $ checkToSchema (Proxy :: Proxy MyRoseTree) myRoseTreeSchemaJSON
8384 context "MyRoseTree' (datatypeNameModifier)" $ checkToSchema (Proxy :: Proxy MyRoseTree') myRoseTreeSchemaJSON'
@@ -722,3 +723,24 @@ buttonImagesSchemaJSON = [aesonQQ|
722723}
723724|]
724725
726+
727+-- ========================================================================
728+-- SingleMaybeField (single field data with optional field)
729+-- ========================================================================
730+
731+data SingleMaybeField = SingleMaybeField { singleMaybeField :: Maybe String }
732+ deriving (Show, Generic)
733+
734+instance ToJSON SingleMaybeField
735+instance ToSchema SingleMaybeField
736+
737+singleMaybeFieldSchemaJSON :: Value
738+singleMaybeFieldSchemaJSON = [aesonQQ|
739+{
740+ "type": "object",
741+ "properties":
742+ {
743+ "singleMaybeField": { "type": "string" }
744+ }
745+}
746+|]