From eaa1f4a8b4e0d0c9e55b9592950cdd51c819f6c5 Mon Sep 17 00:00:00 2001 From: kyle Date: Fri, 12 Jul 2019 23:05:00 -0500 Subject: [PATCH] bug: enum Select crashes when selecting the empty value (via #5463) * add failing tests * fix property access * @babel/plugin-proposal-optional-chaining --- .babelrc | 1 + package.json | 2 +- src/core/components/layout-utils.jsx | 2 +- .../static/documents/bugs/5452/openapi.yaml | 20 +++++++++++ .../static/documents/bugs/5452/swagger.yaml | 19 +++++++++++ test/e2e-cypress/tests/bugs/5452.js | 34 +++++++++++++++++++ 6 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 test/e2e-cypress/static/documents/bugs/5452/openapi.yaml create mode 100644 test/e2e-cypress/static/documents/bugs/5452/swagger.yaml create mode 100644 test/e2e-cypress/tests/bugs/5452.js diff --git a/.babelrc b/.babelrc index 8ef27c31..b5abf321 100644 --- a/.babelrc +++ b/.babelrc @@ -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"] }], diff --git a/package.json b/package.json index 17bfdc6c..49252b80 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/core/components/layout-utils.jsx b/src/core/components/layout-utils.jsx index 936b2e87..99cd175b 100644 --- a/src/core/components/layout-utils.jsx +++ b/src/core/components/layout-utils.jsx @@ -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 ( 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") + }) + }) +})