Skip to content

Commit

Permalink
bug: enum Select crashes when selecting the empty value (via #5463)
Browse files Browse the repository at this point in the history
* add failing tests

* fix property access

* @babel/plugin-proposal-optional-chaining
  • Loading branch information
shockey authored Jul 13, 2019
1 parent 7479253 commit eaa1f4a
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 2 deletions.
1 change: 1 addition & 0 deletions .babelrc
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"corejs": "2"
}],
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-optional-chaining",
["transform-react-remove-prop-types", {
"additionalLibraries": ["react-immutable-proptypes"]
}],
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
"@babel/core": "^7.0.0",
"@babel/plugin-proposal-class-properties": "^7.5.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/preset-env": "^7.0.0",
"@babel/preset-react": "^7.0.0",
Expand Down
2 changes: 1 addition & 1 deletion src/core/components/layout-utils.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ export class Select extends React.Component {

render(){
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 (
<select className={this.props.className} multiple={ multiple } value={value} onChange={ this.onChange } disabled={disabled} >
Expand Down
20 changes: 20 additions & 0 deletions test/e2e-cypress/static/documents/bugs/5452/openapi.yaml
Original file line number Diff line number Diff line change
@@ -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 changes: 19 additions & 0 deletions test/e2e-cypress/static/documents/bugs/5452/swagger.yaml
Original file line number Diff line number Diff line change
@@ -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 changes: 34 additions & 0 deletions test/e2e-cypress/tests/bugs/5452.js
Original file line number Diff line number Diff line change
@@ -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")
})
})
})

0 comments on commit eaa1f4a

Please sign in to comment.