diff --git a/src/core/components/info.jsx b/src/core/components/info.jsx index 2926bd77a1d..e9bb392af6e 100644 --- a/src/core/components/info.jsx +++ b/src/core/components/info.jsx @@ -66,7 +66,7 @@ class License extends React.Component { let { license, getComponent, selectedServer, url: specUrl } = this.props const Link = getComponent("Link") - let name = license.get("name") || "License" + let name = license.get("name") || "License" let url = buildUrl(license.get("url"), specUrl, {selectedServer}) return ( @@ -113,7 +113,12 @@ export default class Info extends React.Component { let version = info.get("version") let description = info.get("description") let title = info.get("title") - let termsOfServiceUrl = buildUrl(info.get("termsOfService"), specUrl, {selectedServer}) + let termsOfServiceUrl + try { + termsOfServiceUrl = buildUrl(info.get("termsOfService"), specUrl, {selectedServer}) + } catch (error) { + termsOfServiceUrl = info.get("termsOfService") + } let contact = info.get("contact") let license = info.get("license") let rawExternalDocsUrl = externalDocs && externalDocs.get("url") diff --git a/test/unit/components/info-wrapper.jsx b/test/unit/components/info-wrapper.jsx index 256ee1d3041..8d9b0b8688a 100644 --- a/test/unit/components/info-wrapper.jsx +++ b/test/unit/components/info-wrapper.jsx @@ -15,6 +15,7 @@ describe("", function () { basePath () {}, host () {}, externalDocs () {}, + termsOfService () {}, }, oas3Selectors: { selectedServer () {}, @@ -37,6 +38,38 @@ describe("", function () { expect(renderedInfo.length).toEqual(1) }) + it("renders Info inside InfoContainer with inline termsOfService", function () { + + // Given + let props = {...mockedProps} + props.specSelectors = {...mockedProps.specSelectors} + props.specSelectors.info = function () {return fromJS(["info1"])} + props.specSelectors.info.termsOfService = "foo bar baz" + + // When + let wrapper = mount() + + // Then + const renderedInfo = wrapper.find("span.mocked-info") + expect(renderedInfo.length).toEqual(1) + }) + + it("renders Info inside InfoContainer with termsOfService URL", function () { + + // Given + let props = {...mockedProps} + props.specSelectors = {...mockedProps.specSelectors} + props.specSelectors.info = function () {return fromJS(["info1"])} + props.specSelectors.info.termsOfService = "https://foo.bar/baz" + + // When + let wrapper = mount() + + // Then + const renderedInfo = wrapper.find("span.mocked-info") + expect(renderedInfo.length).toEqual(1) + }) + it("does not render Info inside InfoContainer if no info is provided", function () { // Given