bug: enum Select crashes when selecting the empty value (via #5463)
* add failing tests * fix property access * @babel/plugin-proposal-optional-chaining
This commit is contained in:
1
.babelrc
1
.babelrc
@@ -23,6 +23,7 @@
|
|||||||
"corejs": "2"
|
"corejs": "2"
|
||||||
}],
|
}],
|
||||||
"@babel/plugin-proposal-class-properties",
|
"@babel/plugin-proposal-class-properties",
|
||||||
|
"@babel/plugin-proposal-optional-chaining",
|
||||||
["transform-react-remove-prop-types", {
|
["transform-react-remove-prop-types", {
|
||||||
"additionalLibraries": ["react-immutable-proptypes"]
|
"additionalLibraries": ["react-immutable-proptypes"]
|
||||||
}],
|
}],
|
||||||
|
|||||||
@@ -84,7 +84,7 @@
|
|||||||
"@babel/core": "^7.0.0",
|
"@babel/core": "^7.0.0",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.5.0",
|
"@babel/plugin-proposal-class-properties": "^7.5.0",
|
||||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
|
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
|
||||||
"@babel/plugin-proposal-optional-chaining": "^7.0.0",
|
"@babel/plugin-proposal-optional-chaining": "^7.2.0",
|
||||||
"@babel/plugin-transform-runtime": "^7.0.0",
|
"@babel/plugin-transform-runtime": "^7.0.0",
|
||||||
"@babel/preset-env": "^7.0.0",
|
"@babel/preset-env": "^7.0.0",
|
||||||
"@babel/preset-react": "^7.0.0",
|
"@babel/preset-react": "^7.0.0",
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ export class Select extends React.Component {
|
|||||||
|
|
||||||
render(){
|
render(){
|
||||||
let { allowedValues, multiple, allowEmptyValue, disabled } = this.props
|
let { allowedValues, multiple, allowEmptyValue, disabled } = this.props
|
||||||
let value = this.state.value.toJS ? this.state.value.toJS() : this.state.value
|
let value = this.state.value?.toJS?.() || this.state.value
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<select className={this.props.className} multiple={ multiple } value={value} onChange={ this.onChange } disabled={disabled} >
|
<select className={this.props.className} multiple={ multiple } value={value} onChange={ this.onChange } disabled={disabled} >
|
||||||
|
|||||||
20
test/e2e-cypress/static/documents/bugs/5452/openapi.yaml
Normal file
20
test/e2e-cypress/static/documents/bugs/5452/openapi.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
openapi: "3.0.0"
|
||||||
|
info:
|
||||||
|
title: Testcase API
|
||||||
|
version: 2.0.0
|
||||||
|
paths:
|
||||||
|
'/endpoint':
|
||||||
|
get:
|
||||||
|
parameters:
|
||||||
|
- name: type
|
||||||
|
in: query
|
||||||
|
example: fruit
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- fruit
|
||||||
|
- vegetable
|
||||||
|
- drink
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: 200 response
|
||||||
19
test/e2e-cypress/static/documents/bugs/5452/swagger.yaml
Normal file
19
test/e2e-cypress/static/documents/bugs/5452/swagger.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
swagger: "2.0"
|
||||||
|
info:
|
||||||
|
title: Testcase API
|
||||||
|
version: 2.0.0
|
||||||
|
paths:
|
||||||
|
'/endpoint':
|
||||||
|
get:
|
||||||
|
parameters:
|
||||||
|
- name: type
|
||||||
|
in: query
|
||||||
|
x-example: fruit
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- fruit
|
||||||
|
- vegetable
|
||||||
|
- drink
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: 200 response
|
||||||
34
test/e2e-cypress/tests/bugs/5452.js
Normal file
34
test/e2e-cypress/tests/bugs/5452.js
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
/**
|
||||||
|
* @prettier
|
||||||
|
*/
|
||||||
|
|
||||||
|
describe("#5452: <Select /> crashing in Parameters", function() {
|
||||||
|
describe("in OpenAPI 3", () => {
|
||||||
|
it("should not result in a render error", function() {
|
||||||
|
cy.visit("http://localhost:3230/?url=/documents/bugs/5452/openapi.yaml")
|
||||||
|
.get("#operations-default-get_endpoint")
|
||||||
|
.click()
|
||||||
|
.get(".parameters > tbody > tr > .col > select")
|
||||||
|
.select("")
|
||||||
|
.get(".parameters > tbody > tr > .col > select")
|
||||||
|
.should("exist")
|
||||||
|
.select("fruit")
|
||||||
|
.get(".parameters > tbody > tr > .col > select")
|
||||||
|
.should("exist")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
describe("in Swagger 2", () => {
|
||||||
|
it("should not result in a render error", function() {
|
||||||
|
cy.visit("http://localhost:3230/?url=/documents/bugs/5452/swagger.yaml")
|
||||||
|
.get("#operations-default-get_endpoint")
|
||||||
|
.click()
|
||||||
|
.get(".parameters > tbody > tr > .col > select")
|
||||||
|
.select("")
|
||||||
|
.get(".parameters > tbody > tr > .col > select")
|
||||||
|
.should("exist")
|
||||||
|
.select("fruit")
|
||||||
|
.get(".parameters > tbody > tr > .col > select")
|
||||||
|
.should("exist")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user