packages feed

json-spec-openapi 0.2.0.0 → 0.2.1.0

raw patch · 3 files changed

+42/−9 lines, 3 filesdep ~insert-ordered-containersPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: insert-ordered-containers

API changes (from Hackage documentation)

+ Data.JsonSpec.OpenApi: instance Data.JsonSpec.OpenApi.Schemaable spec => Data.JsonSpec.OpenApi.Schemaable ('Data.JsonSpec.Spec.JsonNullable spec)

Files

json-spec-openapi.cabal view
@@ -1,6 +1,6 @@ cabal-version:       3.0 name:                json-spec-openapi-version:             0.2.0.0+version:             0.2.1.0 synopsis:            json-spec-openapi description:   This package provides a way to produce@@ -64,7 +64,7 @@   build-depends:     , aeson                     >= 2.2.1.0  && < 2.3     , base                      >= 4.19.0.0 && < 4.20-    , insert-ordered-containers >= 0.2.5    && < 0.3+    , insert-ordered-containers >= 0.2.5.3 && < 0.3     , json-spec                 >= 0.2.1.3  && < 0.3     , lens                      >= 5.2.3    && < 5.3     , openapi3                  >= 3.2.4    && < 3.3
src/Data/JsonSpec/OpenApi.hs view
@@ -104,16 +104,17 @@ import Data.Functor.Identity (Identity(runIdentity)) import Data.JsonSpec (HasJsonDecodingSpec(DecodingSpec),   HasJsonEncodingSpec(EncodingSpec), Specification(JsonArray, JsonBool,-  JsonDateTime, JsonEither, JsonInt, JsonLet, JsonNum, JsonObject,-  JsonRef, JsonString, JsonTag))+  JsonDateTime, JsonEither, JsonInt, JsonLet, JsonNullable, JsonNum,+  JsonObject, JsonRef, JsonString, JsonTag)) import Data.OpenApi (AdditionalProperties(AdditionalPropertiesAllowed),   HasAdditionalProperties(additionalProperties), HasEnum(enum_),   HasFormat(format), HasItems(items), HasOneOf(oneOf),   HasProperties(properties), HasRequired(required), HasType(type_),   NamedSchema(NamedSchema), OpenApiItems(OpenApiItemsObject),-  OpenApiType(OpenApiArray, OpenApiBoolean, OpenApiInteger, OpenApiNumber,-  OpenApiObject, OpenApiString), Reference(Reference), Referenced(Inline,-  Ref), ToSchema(declareNamedSchema), Definitions, Schema)+  OpenApiType(OpenApiArray, OpenApiBoolean, OpenApiInteger, OpenApiNull,+  OpenApiNumber, OpenApiObject, OpenApiString), Reference(Reference),+  Referenced(Inline, Ref), ToSchema(declareNamedSchema), Definitions,+  Schema) import Data.OpenApi.Declare (DeclareT(runDeclareT), MonadDeclare(declare)) import Data.String (IsString(fromString)) import Data.Text (Text)@@ -314,7 +315,7 @@       mempty         & set type_ (Just OpenApiString)         & set format (Just "date-time")-instance+instance {- Undefined Let -}     Unsatisfiable (       T "`JsonRef \"" :<>: T target :<>: T "\"` is not defined.\n"       :$$: T "You are trying to use a JsonRef as the \"top level\" "@@ -364,6 +365,16 @@     schemaable Proxy = do       mkDefs (Proxy @defs)       schemaable (Proxy @spec)+instance (Schemaable spec) => Schemaable (JsonNullable spec) where+  schemaable Proxy = do+    schema <- schemaable (Proxy @spec)+    pure $+      mempty+        & set oneOf (Just+            [ Inline (mempty & set type_ (Just OpenApiNull))+            , Inline schema+            ]+        )   {-| Go through and make a declaration for each item in a JsonLet.  -}
test/test.hs view
@@ -16,7 +16,8 @@ import Data.JsonSpec (Field(Field), HasJsonDecodingSpec(DecodingSpec,   fromJSONStructure), HasJsonEncodingSpec(EncodingSpec, toJSONStructure),   SpecJSON(SpecJSON), Specification(JsonArray, JsonBool, JsonDateTime,-  JsonEither, JsonLet, JsonNum, JsonObject, JsonRef, JsonString, JsonTag))+  JsonEither, JsonInt, JsonLet, JsonNullable, JsonNum, JsonObject,+  JsonRef, JsonString, JsonTag)) import Data.JsonSpec.OpenApi (EncodingSchema, toOpenApiSchema) import Data.OpenApi (Definitions, ToSchema) import Data.Proxy (Proxy(Proxy))@@ -190,6 +191,27 @@           expected = (mempty, boolSchema)         in           actual `shouldBe` expected++      it "nullable" $+        let+          actual :: (Definitions OA.Schema, OA.Schema)+          actual =+            toOpenApiSchema (Proxy @(JsonNullable JsonInt))++          expected :: (Definitions OA.Schema, OA.Schema)+          expected =+            ( mempty+            , mempty+                & set OA.oneOf (Just+                  [ OA.Inline $+                      mempty & set OA.type_ (Just OA.OpenApiNull)+                  , OA.Inline $+                      mempty & set OA.type_ (Just OA.OpenApiInteger)+                  ]+                )+            )+        in+          encode actual `shouldBe` encode expected        it "date-time" $         let