* add `getParameterSchema` OAS helper * use `Parameter.content.[firstKey].schema` as schema value when present * `newValue` -> `initialValue` * make `paramWithMeta` a const * add trailing comma to `swagger2SchemaKeys` * refactor `helpers` to a folder * deprecate `src/core/utils.js` in favor of `src/core/helpers/` * support `Parameter.content.[mediaType].schema` in validateParam * reject `null` as an OAS3 object value * expose Fetch errors in the browser console * generate ParameterRow default values based on `content` values * add tests for `getParameterSchema` * remove debugger statement * remove debugger statement * don't apply `generatedSampleValue`s to parameters with `examples` * remove extra semi * disable JSON check in parameter runtime validation * stringify JsonSchema_object textarea values * add Cypress tests * swagger-client@3.9.4
143 lines
3.0 KiB
JavaScript
143 lines
3.0 KiB
JavaScript
/**
|
|
* @prettier
|
|
*/
|
|
|
|
import expect from "expect"
|
|
import Im, { fromJS } from "immutable"
|
|
import getParameterSchema from "../../../src/helpers/get-parameter-schema"
|
|
|
|
describe("getParameterSchema", () => {
|
|
it("should return an empty Map when given no parameters", () => {
|
|
const result = getParameterSchema()
|
|
|
|
expect(result).toEqual(fromJS({}))
|
|
})
|
|
|
|
it("should return an empty Map when given an empty Map", () => {
|
|
const result = getParameterSchema(fromJS({}))
|
|
|
|
expect(result).toEqual(fromJS({}))
|
|
})
|
|
|
|
it("should return a schema for a Swagger 2.0 query parameter", () => {
|
|
const result = getParameterSchema(
|
|
fromJS({
|
|
name: "id",
|
|
in: "query",
|
|
description: "ID of the object to fetch",
|
|
required: false,
|
|
type: "array",
|
|
items: {
|
|
type: "string",
|
|
},
|
|
collectionFormat: "multi",
|
|
})
|
|
)
|
|
|
|
expect(result.toJS()).toEqual({
|
|
type: "array",
|
|
items: {
|
|
type: "string",
|
|
},
|
|
})
|
|
})
|
|
|
|
it("should return a schema for a Swagger 2.0 body parameter", () => {
|
|
const result = getParameterSchema(
|
|
fromJS({
|
|
name: "user",
|
|
in: "body",
|
|
description: "user to add to the system",
|
|
required: true,
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "string",
|
|
},
|
|
},
|
|
})
|
|
)
|
|
|
|
expect(result.toJS()).toEqual({
|
|
type: "array",
|
|
items: {
|
|
type: "string",
|
|
},
|
|
})
|
|
})
|
|
|
|
it("should return a schema for an OpenAPI 3.0 query parameter", () => {
|
|
const result = getParameterSchema(
|
|
fromJS({
|
|
name: "id",
|
|
in: "query",
|
|
description: "ID of the object to fetch",
|
|
required: false,
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "string",
|
|
},
|
|
},
|
|
style: "form",
|
|
explode: true,
|
|
}),
|
|
{
|
|
isOAS3: true,
|
|
}
|
|
)
|
|
|
|
expect(result.toJS()).toEqual({
|
|
type: "array",
|
|
items: {
|
|
type: "string",
|
|
},
|
|
})
|
|
})
|
|
|
|
it("should return a schema for an OpenAPI 3.0 query parameter with `content`", () => {
|
|
const result = getParameterSchema(
|
|
fromJS({
|
|
in: "query",
|
|
name: "coordinates",
|
|
content: {
|
|
"application/json": {
|
|
schema: {
|
|
type: "object",
|
|
required: ["lat", "long"],
|
|
properties: {
|
|
lat: {
|
|
type: "number",
|
|
},
|
|
long: {
|
|
type: "number",
|
|
},
|
|
},
|
|
},
|
|
"should-ignore/the-second-media-type": {
|
|
type: "string",
|
|
default: "this shouldn't be returned",
|
|
},
|
|
},
|
|
},
|
|
}),
|
|
{
|
|
isOAS3: true,
|
|
}
|
|
)
|
|
|
|
expect(result.toJS()).toEqual({
|
|
type: "object",
|
|
required: ["lat", "long"],
|
|
properties: {
|
|
lat: {
|
|
type: "number",
|
|
},
|
|
long: {
|
|
type: "number",
|
|
},
|
|
},
|
|
})
|
|
})
|
|
})
|