未验证 提交 797929f1 编写于 作者: T Tim Lai 提交者: GitHub

fix(parameter-row): rendering of default/example values of 0 (#6454)

Co-authored-by: @danxmoran
上级 db2cca8e
......@@ -119,17 +119,26 @@ export default class ParameterRow extends Component {
//// Find an initial value
if (specSelectors.isSwagger2()) {
initialValue = paramWithMeta.get("x-example")
|| paramWithMeta.getIn(["schema", "example"])
|| (schema && schema.getIn(["default"]))
initialValue =
paramWithMeta.get("x-example") !== undefined
? paramWithMeta.get("x-example")
: paramWithMeta.getIn(["schema", "example"]) !== undefined
? paramWithMeta.getIn(["schema", "example"])
: (schema && schema.getIn(["default"]))
} else if (specSelectors.isOAS3()) {
const currentExampleKey = oas3Selectors.activeExamplesMember(...pathMethod, "parameters", this.getParamKey())
initialValue = paramWithMeta.getIn(["examples", currentExampleKey, "value"])
|| paramWithMeta.getIn(["content", parameterMediaType, "example"])
|| paramWithMeta.get("example")
|| (schema && schema.get("example"))
|| (schema && schema.get("default"))
|| paramWithMeta.get("default") // ensures support for `parameterMacro`
initialValue =
paramWithMeta.getIn(["examples", currentExampleKey, "value"]) !== undefined
? paramWithMeta.getIn(["examples", currentExampleKey, "value"])
: paramWithMeta.getIn(["content", parameterMediaType, "example"]) !== undefined
? paramWithMeta.getIn(["content", parameterMediaType, "example"])
: paramWithMeta.get("example") !== undefined
? paramWithMeta.get("example")
: (schema && schema.get("example")) !== undefined
? (schema && schema.get("example"))
: (schema && schema.get("default")) !== undefined
? (schema && schema.get("default"))
: paramWithMeta.get("default") // ensures support for `parameterMacro`
}
//// Process the initial value
......
import React from "react"
import { fromJS } from "immutable"
import { List, fromJS } from "immutable"
import { render } from "enzyme"
import ParameterRow from "components/parameter-row"
......@@ -84,3 +84,142 @@ describe("<ParameterRow/>", () => {
expect(wrapper.find(".parameter__type").text()).toEqual("string")
})
})
describe("bug #5573: zero default and example values", function () {
it("should apply a Swagger 2.0 default value of zero", function () {
const paramValue = fromJS({
description: "a pet",
type: "integer",
default: 0
})
let props = {
getComponent: () => "div",
specSelectors: {
security() { },
parameterWithMetaByIdentity() { return paramValue },
isOAS3() { return false },
isSwagger2() { return true }
},
fn: {},
operation: { get: () => { } },
onChange: jest.fn(),
param: paramValue,
rawParam: paramValue,
onChangeConsumes: () => { },
pathMethod: [],
getConfigs: () => { return {} },
specPath: List([])
}
render(<ParameterRow {...props} />)
expect(props.onChange).toHaveBeenCalled()
expect(props.onChange).toHaveBeenCalledWith(paramValue, "0", false)
})
it("should apply a Swagger 2.0 example value of zero", function () {
const paramValue = fromJS({
description: "a pet",
type: "integer",
schema: {
example: 0
}
})
let props = {
getComponent: () => "div",
specSelectors: {
security() { },
parameterWithMetaByIdentity() { return paramValue },
isOAS3() { return false },
isSwagger2() { return true }
},
fn: {},
operation: { get: () => { } },
onChange: jest.fn(),
param: paramValue,
rawParam: paramValue,
onChangeConsumes: () => { },
pathMethod: [],
getConfigs: () => { return {} },
specPath: List([])
}
render(<ParameterRow {...props} />)
expect(props.onChange).toHaveBeenCalled()
expect(props.onChange).toHaveBeenCalledWith(paramValue, "0", false)
})
it("should apply an OpenAPI 3.0 default value of zero", function () {
const paramValue = fromJS({
description: "a pet",
schema: {
type: "integer",
default: 0
}
})
let props = {
getComponent: () => "div",
specSelectors: {
security() { },
parameterWithMetaByIdentity() { return paramValue },
isOAS3() { return true },
isSwagger2() { return false }
},
oas3Selectors: {
activeExamplesMember: () => null
},
fn: {},
operation: { get: () => { } },
onChange: jest.fn(),
param: paramValue,
rawParam: paramValue,
onChangeConsumes: () => { },
pathMethod: [],
getConfigs: () => { return {} },
specPath: List([])
}
render(<ParameterRow {...props} />)
expect(props.onChange).toHaveBeenCalled()
expect(props.onChange).toHaveBeenCalledWith(paramValue, "0", false)
})
it("should apply an OpenAPI 3.0 example value of zero", function () {
const paramValue = fromJS({
description: "a pet",
schema: {
type: "integer",
example: 0
}
})
let props = {
getComponent: () => "div",
specSelectors: {
security() { },
parameterWithMetaByIdentity() { return paramValue },
isOAS3() { return true },
isSwagger2() { return false }
},
oas3Selectors: {
activeExamplesMember: () => null
},
fn: {},
operation: { get: () => { } },
onChange: jest.fn(),
param: paramValue,
rawParam: paramValue,
onChangeConsumes: () => { },
pathMethod: [],
getConfigs: () => { return {} },
specPath: List([])
}
render(<ParameterRow {...props} />)
expect(props.onChange).toHaveBeenCalled()
expect(props.onChange).toHaveBeenCalledWith(paramValue, "0", false)
})
})
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册