json-spec-openapi 1.0.0.0 → 1.0.1.0
raw patch · 3 files changed
+60/−30 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.JsonSpec.OpenApi: instance (Data.JsonSpec.OpenApi.Inlineable (Data.JsonSpec.OpenApi.Concat newDefs defs) spec, Data.JsonSpec.OpenApi.Defs newDefs newDefs) => Data.JsonSpec.OpenApi.Inlineable defs ('Data.JsonSpec.Spec.JsonLet newDefs spec)
+ Data.JsonSpec.OpenApi: instance (Data.JsonSpec.OpenApi.Inlineable (Data.JsonSpec.OpenApi.Concat newDefs defs) spec, Data.JsonSpec.OpenApi.Defs (Data.JsonSpec.OpenApi.Concat newDefs defs) newDefs) => Data.JsonSpec.OpenApi.Inlineable defs ('Data.JsonSpec.Spec.JsonLet newDefs spec)
Files
- json-spec-openapi.cabal +1/−1
- src/Data/JsonSpec/OpenApi.hs +2/−2
- test/test.hs +57/−27
json-spec-openapi.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: json-spec-openapi-version: 1.0.0.0+version: 1.0.1.0 synopsis: json-spec-openapi description: This package provides a way to produce
src/Data/JsonSpec/OpenApi.hs view
@@ -342,13 +342,13 @@ & set type_ (Just OpenApiObject) instance {- Inlineable defs (JsonLet newDefs spec) -} ( Inlineable (Concat newDefs defs) spec- , Defs newDefs newDefs+ , Defs (Concat newDefs defs) newDefs ) => Inlineable defs (JsonLet newDefs spec) where inlineable = do- mkDefs @newDefs @newDefs+ mkDefs @(Concat newDefs defs) @newDefs inlineable @(Concat newDefs defs) @spec instance {- Inlineable defs (JsonRef target) -} ( Deref defs defs target
test/test.hs view
@@ -287,37 +287,67 @@ in actual `shouldBe` expected - it "let expression" $- let- actual :: (Definitions OA.Schema, OA.Schema)- actual =- toOpenApiSchema (Proxy @(- JsonLet '[- '("thing", JsonString)- ]- (- JsonObject '[- Required "foo" (JsonRef "thing")+ describe "let bindings" $ do+ it "basic let expression" $+ let+ actual :: (Definitions OA.Schema, OA.Schema)+ actual =+ toOpenApiSchema (Proxy @(+ JsonLet '[+ '("thing", JsonString) ]+ (+ JsonObject '[+ Required "foo" (JsonRef "thing")+ ]+ )+ ))++ expected :: (Definitions OA.Schema, OA.Schema)+ expected =+ ( HMI.singleton "thing" stringSchema+ , mempty+ & set OA.type_ (Just OA.OpenApiObject)+ & set OA.properties (+ mempty+ & set (at "foo") (Just (OA.Ref (OA.Reference "thing")))+ )+ & set OA.required ["foo"]+ & set+ OA.additionalProperties+ (Just (OA.AdditionalPropertiesAllowed False)) )- ))+ in+ actual `shouldBe` expected - expected :: (Definitions OA.Schema, OA.Schema)- expected =- ( HMI.singleton "thing" stringSchema- , mempty- & set OA.type_ (Just OA.OpenApiObject)- & set OA.properties (- mempty- & set (at "foo") (Just (OA.Ref (OA.Reference "thing")))+ it "back reference" $+ let+ actual :: (Definitions OA.Schema, OA.Schema)+ actual =+ toOpenApiSchema (Proxy @(+ JsonLet+ '[ '( "thing1"+ , JsonString+ )+ , '( "thing2"+ , JsonRef "thing1"+ )+ ]+ (+ JsonRef "thing2" )- & set OA.required ["foo"]- & set- OA.additionalProperties- (Just (OA.AdditionalPropertiesAllowed False))- )- in- actual `shouldBe` expected+ ))++ expected :: (Definitions OA.Schema, OA.Schema)+ expected =+ ( HMI.fromList+ [ ("thing1", stringSchema)+ , ("thing2", stringSchema)+ ]+ , stringSchema+ )+ in+ actual `shouldBe` expected it "top level reference" $ let