From ff5c1927fefc7c626315521ac07848907969d29e Mon Sep 17 00:00:00 2001 From: Derek Thompson Date: Thu, 28 Apr 2022 16:31:34 -0400 Subject: [PATCH 1/2] chore: update markdown-viewer versions and bump elements versions (#2137) Co-authored-by: Derek Thompson --- demo/package.json | 2 +- packages/elements-core/package.json | 4 ++-- packages/elements-dev-portal/package.json | 6 +++--- packages/elements/package.json | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/demo/package.json b/demo/package.json index f6010a357..b2770cf07 100644 --- a/demo/package.json +++ b/demo/package.json @@ -10,7 +10,7 @@ "type-check": "tsc --noEmit" }, "dependencies": { - "@stoplight/elements": "^7.5.17", + "@stoplight/elements": "^7.5.18", "@stoplight/mosaic": "^1.15.4", "history": "^5.0.0", "react": "16.14.0", diff --git a/packages/elements-core/package.json b/packages/elements-core/package.json index be9e05182..3f200d73a 100644 --- a/packages/elements-core/package.json +++ b/packages/elements-core/package.json @@ -1,6 +1,6 @@ { "name": "@stoplight/elements-core", - "version": "7.5.17", + "version": "7.5.18", "sideEffects": [ "web-components.min.js", "src/web-components/**", @@ -57,7 +57,7 @@ "@stoplight/json-schema-ref-parser": "^9.0.5", "@stoplight/json-schema-sampler": "0.2.2", "@stoplight/json-schema-viewer": "^4.5.0", - "@stoplight/markdown-viewer": "^5.4.6", + "@stoplight/markdown-viewer": "^5.4.7", "@stoplight/mosaic": "^1.19.1", "@stoplight/mosaic-code-editor": "^1.19.1", "@stoplight/mosaic-code-viewer": "^1.19.1", diff --git a/packages/elements-dev-portal/package.json b/packages/elements-dev-portal/package.json index 873391964..723762f9a 100644 --- a/packages/elements-dev-portal/package.json +++ b/packages/elements-dev-portal/package.json @@ -1,6 +1,6 @@ { "name": "@stoplight/elements-dev-portal", - "version": "1.7.1", + "version": "1.7.2", "description": "UI components for composing beautiful developer documentation.", "keywords": [], "sideEffects": [ @@ -58,8 +58,8 @@ }, "dependencies": { "@fortawesome/free-solid-svg-icons": "^5.10.2", - "@stoplight/elements-core": "~7.5.17", - "@stoplight/markdown-viewer": "^5.4.6", + "@stoplight/elements-core": "~7.5.18", + "@stoplight/markdown-viewer": "^5.4.7", "@stoplight/mosaic": "^1.16.2", "@stoplight/path": "^1.3.2", "@stoplight/types": "^13.0.0", diff --git a/packages/elements/package.json b/packages/elements/package.json index 1de431697..82f35dd9a 100644 --- a/packages/elements/package.json +++ b/packages/elements/package.json @@ -1,6 +1,6 @@ { "name": "@stoplight/elements", - "version": "7.5.17", + "version": "7.5.18", "description": "UI components for composing beautiful developer documentation.", "keywords": [], "sideEffects": [ @@ -57,7 +57,7 @@ }, "dependencies": { "@fortawesome/free-solid-svg-icons": "^5.14.0", - "@stoplight/elements-core": "~7.5.17", + "@stoplight/elements-core": "~7.5.18", "@stoplight/http-spec": "^5.1.0", "@stoplight/json": "^3.18.0", "@stoplight/mosaic": "^1.16.2", From b171d275a570d642d996f30079123ad441e03e25 Mon Sep 17 00:00:00 2001 From: Bas Tuijnman Date: Fri, 29 Apr 2022 23:27:43 +0200 Subject: [PATCH 2/2] fix: service tag names losing casing (#2040) Co-authored-by: Nauman Co-authored-by: Noah <3588798+Nezteb@users.noreply.github.com> --- cypress/integration/api.ts | 2 +- .../components/API/__tests__/utils.test.ts | 220 ++++++++++++++++++ packages/elements/src/components/API/utils.ts | 3 +- 3 files changed, 223 insertions(+), 2 deletions(-) diff --git a/cypress/integration/api.ts b/cypress/integration/api.ts index dbe7c7cf2..ab86684b3 100644 --- a/cypress/integration/api.ts +++ b/cypress/integration/api.ts @@ -69,7 +69,7 @@ describe('API component', () => { it('navigates via table of contents', () => { loadZoomApiPage(); - cy.findByText('groups').click(); + cy.findByText('Groups').click(); cy.findByText('Create a group').click(); cy.findByRole('heading', { name: /Create a group/i }).should('exist'); }); diff --git a/packages/elements/src/components/API/__tests__/utils.test.ts b/packages/elements/src/components/API/__tests__/utils.test.ts index 52aabde7b..db674d62e 100644 --- a/packages/elements/src/components/API/__tests__/utils.test.ts +++ b/packages/elements/src/components/API/__tests__/utils.test.ts @@ -337,6 +337,226 @@ describe('computeTagGroups', () => { const serviceNode = transformOasToServiceNode(apiDocument); expect(serviceNode ? computeTagGroups(serviceNode) : null).toEqual({ groups: [], ungrouped: [] }); }); + + it('leaves tag casing unchanged', () => { + const apiDocument: OpenAPIObject = { + openapi: '3.0.0', + info: { + title: 'some api', + version: '1.0.0', + description: 'some description', + }, + tags: [ + { + name: 'Beta', + }, + { + name: 'alpha', + }, + ], + paths: { + '/a': { + get: { + tags: ['alpha'], + }, + }, + '/b': { + get: { + tags: ['Beta'], + }, + }, + }, + }; + + const serviceNode = transformOasToServiceNode(apiDocument); + expect(serviceNode ? computeTagGroups(serviceNode) : null).toEqual({ + groups: [ + { + title: 'Beta', + items: [ + { + type: 'http_operation', + uri: '/paths/b/get', + data: { + id: '2b447d075652c', + method: 'get', + path: '/b', + responses: [], + servers: [], + request: { + body: { + contents: [], + id: '1b5f96cfcd9cb', + }, + headers: [], + query: [], + cookie: [], + path: [], + }, + tags: [ + { + name: 'Beta', + id: 'c028e10befb64', + }, + ], + security: [], + extensions: {}, + }, + name: '/b', + tags: ['Beta'], + }, + ], + }, + { + title: 'alpha', + items: [ + { + type: 'http_operation', + uri: '/paths/a/get', + data: { + id: '2b547d0756761', + method: 'get', + path: '/a', + responses: [], + servers: [], + request: { + body: { + contents: [], + id: 'c9a24d63f1884', + }, + headers: [], + query: [], + cookie: [], + path: [], + }, + tags: [ + { + id: '7d65d096f3728', + name: 'alpha', + }, + ], + security: [], + extensions: {}, + }, + name: '/a', + tags: ['alpha'], + }, + ], + }, + ], + ungrouped: [], + }); + }); + + it('matches mixed tag casing', () => { + const apiDocument: OpenAPIObject = { + openapi: '3.0.0', + info: { + title: 'some api', + version: '1.0.0', + description: 'some description', + }, + tags: [ + { + name: 'Beta', + }, + { + name: 'alpha', + }, + ], + paths: { + '/a': { + get: { + tags: ['alpha'], + }, + }, + '/b': { + get: { + tags: ['beta'], + }, + }, + }, + }; + + const serviceNode = transformOasToServiceNode(apiDocument); + expect(serviceNode ? computeTagGroups(serviceNode) : null).toEqual({ + groups: [ + { + title: 'Beta', + items: [ + { + type: 'http_operation', + uri: '/paths/b/get', + data: { + id: '2b447d075652c', + method: 'get', + path: '/b', + responses: [], + servers: [], + request: { + body: { + contents: [], + id: '1b5f96cfcd9cb', + }, + headers: [], + query: [], + cookie: [], + path: [], + }, + tags: [ + { + id: 'e01820f4e85ed', + name: 'beta', + }, + ], + security: [], + extensions: {}, + }, + name: '/b', + tags: ['beta'], + }, + ], + }, + { + title: 'alpha', + items: [ + { + type: 'http_operation', + uri: '/paths/a/get', + data: { + id: '2b547d0756761', + method: 'get', + path: '/a', + responses: [], + servers: [], + request: { + body: { + contents: [], + id: 'c9a24d63f1884', + }, + headers: [], + query: [], + cookie: [], + path: [], + }, + tags: [ + { + id: '7d65d096f3728', + name: 'alpha', + }, + ], + security: [], + extensions: {}, + }, + name: '/a', + tags: ['alpha'], + }, + ], + }, + ], + ungrouped: [], + }); + }); }); describe('computeAPITree', () => { diff --git a/packages/elements/src/components/API/utils.ts b/packages/elements/src/components/API/utils.ts index 07528f3bc..d605d268d 100644 --- a/packages/elements/src/components/API/utils.ts +++ b/packages/elements/src/components/API/utils.ts @@ -21,7 +21,8 @@ export const computeTagGroups = (serviceNode: ServiceNode) => { if (groupsByTagId[tagId]) { groupsByTagId[tagId].items.push(node); } else { - const serviceTagName = lowerCaseServiceTags.find(tn => tn === tagId); + const serviceTagIndex = lowerCaseServiceTags.findIndex(tn => tn === tagId); + const serviceTagName = serviceNode.tags[serviceTagIndex]; groupsByTagId[tagId] = { title: serviceTagName || tagName, items: [node],