From 6db4def00aaaa271e518018e5555047177eea760 Mon Sep 17 00:00:00 2001 From: dalbrx-forcam Date: Tue, 3 Nov 2020 20:18:08 +0100 Subject: [PATCH] fix: externalDocs url for tags when using swagger v2.0 (#6579) * added operation tag test --- src/core/components/operation-tag.jsx | 4 +- test/unit/components/operation-tag.jsx | 52 ++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 test/unit/components/operation-tag.jsx diff --git a/src/core/components/operation-tag.jsx b/src/core/components/operation-tag.jsx index b656714a..7eb89de7 100644 --- a/src/core/components/operation-tag.jsx +++ b/src/core/components/operation-tag.jsx @@ -60,7 +60,9 @@ export default class OperationTag extends React.Component { let tagExternalDocsUrl if (isFunc(oas3Selectors) && isFunc(oas3Selectors.selectedServer)) { tagExternalDocsUrl = buildUrl( rawTagExternalDocsUrl, specUrl, { selectedServer: oas3Selectors.selectedServer() } ) - } + } else { + tagExternalDocsUrl = rawTagExternalDocsUrl + } let isShownKey = ["operations-tag", tag] let showTag = layoutSelectors.isShown(isShownKey, docExpansion === "full" || docExpansion === "list") diff --git a/test/unit/components/operation-tag.jsx b/test/unit/components/operation-tag.jsx new file mode 100644 index 00000000..773549e6 --- /dev/null +++ b/test/unit/components/operation-tag.jsx @@ -0,0 +1,52 @@ +import React from "react" +import { shallow } from "enzyme" +import OperationTag from "components/operation-tag" +import Im from "immutable" +import { Link } from "components/layout-utils" + +describe("", function(){ + it("render externalDocs URL for swagger v2", function(){ + + const dummyComponent = () => null + const components = { + Collapse: () => dummyComponent, + Markdown: () => dummyComponent, + DeepLink: () => dummyComponent, + Link + } + + let props = { + tagObj: Im.fromJS({ + tagDetails: { + externalDocs: { + description: "Find out more", + url: "http://swagger.io" + } + } + }), + tag: "testtag", + getConfigs: () => ({}), + getComponent: c => components[c], + layoutSelectors: { + currentFilter() { + return null + }, + isShown() { + return true + }, + show() { + return true + } + } + } + + let wrapper = shallow() + + const opblockTag = wrapper.find(".opblock-tag") + expect(opblockTag.length).toEqual(1) + + const renderedLink = wrapper.find("Link") + expect(renderedLink.length).toEqual(1) + expect(renderedLink.props().href).toEqual("http://swagger.io") + }) +})