Skip to content

Commit

Permalink
feat(samples): add support for const keyword (#8884)
Browse files Browse the repository at this point in the history
This change is specific to JSON Schema 2020-12
and OpenAPI 3.1.0.

Refs #8577
  • Loading branch information
char0n authored Jun 6, 2023
1 parent 3587696 commit bdad2fe
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ const liftSampleHelper = (oldSchema, target, config = {}) => {
"enum",
"xml",
"type",
"const",
...objectContracts,
...arrayContracts,
...numberContracts,
Expand Down Expand Up @@ -683,7 +684,10 @@ export const sampleFromSchemaGeneric = (
}

let value
if (schema && Array.isArray(schema.enum)) {
if (typeof schema?.const !== "undefined") {
// display const value
value = schema.const
} else if (schema && Array.isArray(schema.enum)) {
//display enum first value
value = normalizeArray(schema.enum)[0]
} else if (schema) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,32 +86,33 @@ describe("sampleFromSchema", () => {
})

it("should handle type keyword defined as list of types", function () {
const definition = fromJS({
type: ["object", "string"],
})
const definition = fromJS({ type: ["object", "string"] })
const expected = {}

expect(sampleFromSchema(definition)).toEqual(expected)
})

it("should prioritize array when array and object defined as list of types", function () {
const definition = fromJS({
type: ["object", "array"],
})
const definition = fromJS({ type: ["object", "array"] })
const expected = []

expect(sampleFromSchema(definition)).toEqual(expected)
})

it("should handle primitive types defined as list of types", function () {
const definition = fromJS({
type: ["string", "number"],
})
const definition = fromJS({ type: ["string", "number"] })
const expected = "string"

expect(sampleFromSchema(definition)).toEqual(expected)
})

it("should return const value", function () {
const definition = fromJS({ const: 3 })
const expected = 3

expect(sampleFromSchema(definition)).toStrictEqual(expected)
})

it("handles Immutable.js objects for nested schemas", function () {
const definition = fromJS({
type: "object",
Expand Down

0 comments on commit bdad2fe

Please sign in to comment.