json-spec-openapi 0.3.0.0 → 0.3.1.0
raw patch · 3 files changed
+32/−14 lines, 3 filesdep ~json-specPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: json-spec
API changes (from Hackage documentation)
+ Data.JsonSpec.OpenApi: instance Data.JsonSpec.OpenApi.Schemaable 'Data.JsonSpec.Spec.JsonRaw
Files
- json-spec-openapi.cabal +4/−4
- src/Data/JsonSpec/OpenApi.hs +7/−3
- test/test.hs +21/−7
json-spec-openapi.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: json-spec-openapi-version: 0.3.0.0+version: 0.3.1.0 synopsis: json-spec-openapi description: This package provides a way to produce@@ -64,7 +64,7 @@ , aeson >= 2.2.1.0 && < 2.3 , base >= 4.19.0.0 && < 4.20 , insert-ordered-containers >= 0.2.5.3 && < 0.3- , json-spec >= 0.3.0.0 && < 0.4+ , json-spec >= 0.5.0.0 && < 0.6 , lens >= 5.2.3 && < 5.3 , openapi3 >= 3.2.4 && < 3.3 , text >= 2.1 && < 2.2@@ -96,6 +96,6 @@ build-depends: , json-spec-openapi - , hspec >= 2.11.1 && < 2.12- , time >= 1.12.2 && < 1.13+ , hspec >= 2.11.1 && < 2.12+ , time >= 1.12.2 && < 1.13
src/Data/JsonSpec/OpenApi.hs view
@@ -104,8 +104,8 @@ import Data.JsonSpec (FieldSpec(Optional, Required), HasJsonDecodingSpec(DecodingSpec), HasJsonEncodingSpec(EncodingSpec), Specification(JsonArray, JsonBool, JsonDateTime, JsonEither, JsonInt,- JsonLet, JsonNullable, JsonNum, JsonObject, JsonRef, JsonString,- JsonTag))+ JsonLet, JsonNullable, JsonNum, JsonObject, JsonRaw, JsonRef,+ JsonString, JsonTag)) import Data.OpenApi (AdditionalProperties(AdditionalPropertiesAllowed), HasAdditionalProperties(additionalProperties), HasEnum(enum_), HasFormat(format), HasItems(items), HasOneOf(oneOf),@@ -306,7 +306,6 @@ pure $ schema & over required (sym @key:)- instance (Schemaable spec) => Schemaable ('JsonArray spec) where schemaable Proxy = do elementSchema <- schemaable (Proxy @spec)@@ -384,6 +383,11 @@ , Inline schema ] )+instance Schemaable JsonRaw where+ schemaable Proxy =+ pure $+ mempty+ & set type_ (Just OpenApiObject) {-| Go through and make a declaration for each item in a JsonLet. -}
test/test.hs view
@@ -13,13 +13,13 @@ module Main (main) where import Control.Lens (At(at), (&), set)-import Data.Aeson (ToJSON(toJSON), FromJSON, encode)-import Data.JsonSpec (Field(Field, unField), FieldSpec(Optional,+import Data.Aeson (ToJSON(toJSON), FromJSON)+import Data.JsonSpec (Field(Field), FieldSpec(Optional, Required), HasJsonDecodingSpec(DecodingSpec, fromJSONStructure), HasJsonEncodingSpec(EncodingSpec, toJSONStructure), SpecJSON(SpecJSON), Specification(JsonArray, JsonBool, JsonDateTime, JsonEither, JsonInt,- JsonLet, JsonNullable, JsonNum, JsonObject, JsonRef, JsonString,- JsonTag))+ JsonLet, JsonNullable, JsonNum, JsonObject, JsonRaw, JsonRef,+ JsonString, JsonTag), unField) import Data.JsonSpec.OpenApi (EncodingSchema, toOpenApiSchema) import Data.OpenApi (Definitions, ToSchema) import Data.Proxy (Proxy(Proxy))@@ -28,6 +28,7 @@ import Prelude (Applicative(pure), Bool(False), Functor(fmap), Maybe(Just), Monoid(mempty), ($), Eq, IO, Show) import Test.Hspec (describe, hspec, it, shouldBe)+import qualified Data.Aeson as Aeson import qualified Data.HashMap.Strict.InsOrd as HMI import qualified Data.OpenApi as OA @@ -134,6 +135,19 @@ in actual `shouldBe` expected + it "raw" $+ let+ actual :: (Definitions OA.Schema, OA.Schema)+ actual = toOpenApiSchema (Proxy @JsonRaw)++ expected :: (Definitions OA.Schema, OA.Schema)+ expected =+ ( mempty+ , mempty & set OA.type_ (Just OA.OpenApiObject)+ )+ in+ actual `shouldBe` expected+ it "num" $ let actual :: (Definitions OA.Schema, OA.Schema)@@ -213,7 +227,7 @@ ) ) in- encode actual `shouldBe` encode expected+ Aeson.encode actual `shouldBe` Aeson.encode expected it "optional" $ let@@ -242,7 +256,7 @@ (Just (OA.AdditionalPropertiesAllowed False)) ) in- encode actual `shouldBe` encode expected+ Aeson.encode actual `shouldBe` Aeson.encode expected it "date-time" $ let@@ -362,7 +376,7 @@ (Just (OA.AdditionalPropertiesAllowed False)) in- encode actual `shouldBe` encode expected+ Aeson.encode actual `shouldBe` Aeson.encode expected {-