fix(parameter-row): rendering of default/example values of 0 (#6454)
Co-authored-by: @danxmoran
This commit is contained in:
@@ -119,17 +119,26 @@ export default class ParameterRow extends Component {
|
|||||||
//// Find an initial value
|
//// Find an initial value
|
||||||
|
|
||||||
if (specSelectors.isSwagger2()) {
|
if (specSelectors.isSwagger2()) {
|
||||||
initialValue = paramWithMeta.get("x-example")
|
initialValue =
|
||||||
|| paramWithMeta.getIn(["schema", "example"])
|
paramWithMeta.get("x-example") !== undefined
|
||||||
|| (schema && schema.getIn(["default"]))
|
? paramWithMeta.get("x-example")
|
||||||
|
: paramWithMeta.getIn(["schema", "example"]) !== undefined
|
||||||
|
? paramWithMeta.getIn(["schema", "example"])
|
||||||
|
: (schema && schema.getIn(["default"]))
|
||||||
} else if (specSelectors.isOAS3()) {
|
} else if (specSelectors.isOAS3()) {
|
||||||
const currentExampleKey = oas3Selectors.activeExamplesMember(...pathMethod, "parameters", this.getParamKey())
|
const currentExampleKey = oas3Selectors.activeExamplesMember(...pathMethod, "parameters", this.getParamKey())
|
||||||
initialValue = paramWithMeta.getIn(["examples", currentExampleKey, "value"])
|
initialValue =
|
||||||
|| paramWithMeta.getIn(["content", parameterMediaType, "example"])
|
paramWithMeta.getIn(["examples", currentExampleKey, "value"]) !== undefined
|
||||||
|| paramWithMeta.get("example")
|
? paramWithMeta.getIn(["examples", currentExampleKey, "value"])
|
||||||
|| (schema && schema.get("example"))
|
: paramWithMeta.getIn(["content", parameterMediaType, "example"]) !== undefined
|
||||||
|| (schema && schema.get("default"))
|
? paramWithMeta.getIn(["content", parameterMediaType, "example"])
|
||||||
|| paramWithMeta.get("default") // ensures support for `parameterMacro`
|
: 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
|
//// Process the initial value
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import React from "react"
|
import React from "react"
|
||||||
import { fromJS } from "immutable"
|
import { List, fromJS } from "immutable"
|
||||||
import { render } from "enzyme"
|
import { render } from "enzyme"
|
||||||
import ParameterRow from "components/parameter-row"
|
import ParameterRow from "components/parameter-row"
|
||||||
|
|
||||||
@@ -84,3 +84,142 @@ describe("<ParameterRow/>", () => {
|
|||||||
expect(wrapper.find(".parameter__type").text()).toEqual("string")
|
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)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user