diff --git a/src/core/plugins/spec/reducers.js b/src/core/plugins/spec/reducers.js index c4b9d96fd95..c95c7ce9d31 100644 --- a/src/core/plugins/spec/reducers.js +++ b/src/core/plugins/spec/reducers.js @@ -118,7 +118,11 @@ export default { let operationPath = ["paths", ...path] let metaPath = ["meta", "paths", ...path] - if(!state.getIn(["json", ...operationPath]) && !state.getIn(["resolved", ...operationPath])) { + if( + !state.getIn(["json", ...operationPath]) + && !state.getIn(["resolved", ...operationPath]) + && !state.getIn(["resolvedSubtrees", ...operationPath]) + ) { // do nothing if the operation does not exist return state } diff --git a/test/e2e/scenarios/bugs/4485.js b/test/e2e/scenarios/bugs/4485.js new file mode 100644 index 00000000000..9587dd756cb --- /dev/null +++ b/test/e2e/scenarios/bugs/4485.js @@ -0,0 +1,31 @@ +describe("bug #4485: operation metadata storage when referenced via path item $ref", function () { + let mainPage + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() + + client.waitForElementVisible(".download-url-input", 5000) + .pause(2000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/bugs/4485/main.yaml") + .click("button.download-url-button") + .pause(1000) + + done() + }) + afterEach(function (client, done) { + done() + }) + it("sets a consumes value for a body parameter correctly", function (client) { + client.waitForElementVisible(".opblock-tag-section", 10000) + .click(".opblock") + .waitForElementVisible(".opblock-body", 5000) + .click("button.btn.try-out__btn") + .click("select.content-type [value=\"application/xml\"]") + .pause(500) + .assert.value("select.content-type", "application/xml") + + client.end() + }) +}) diff --git a/test/e2e/specs/bugs/4485/book.yaml b/test/e2e/specs/bugs/4485/book.yaml new file mode 100644 index 00000000000..5d42f063d40 --- /dev/null +++ b/test/e2e/specs/bugs/4485/book.yaml @@ -0,0 +1,15 @@ +--- +post: + description: Book + operationId: buy + summary: Buy a book + tags: + - Book + consumes: + - application/json + - application/xml + parameters: + - name: requestBody + in: body + description: Buy a Book + required: true diff --git a/test/e2e/specs/bugs/4485/main.yaml b/test/e2e/specs/bugs/4485/main.yaml new file mode 100644 index 00000000000..af774a7734f --- /dev/null +++ b/test/e2e/specs/bugs/4485/main.yaml @@ -0,0 +1,5 @@ +--- +swagger: '2.0' +paths: + "/v1/book": + "$ref": "./book.yaml"