From 9edab310aa3ccd2db05eb59a1f830fbf2062ff88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marina=20A=C3=ADsa?= Date: Mon, 8 May 2023 19:23:38 +0200 Subject: [PATCH] [rdar://108515663] feat: it renders a `Reference` with an overwritten title of type=text --- src/components/ContentNode.vue | 4 ++- src/components/ContentNode/Reference.vue | 2 +- tests/unit/components/ContentNode.spec.js | 30 +++++++++++++++++++ .../components/ContentNode/Reference.spec.js | 16 ++++++++++ 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/components/ContentNode.vue b/src/components/ContentNode.vue index 8b72e04ac..38eeadf7a 100644 --- a/src/components/ContentNode.vue +++ b/src/components/ContentNode.vue @@ -430,10 +430,12 @@ function renderNode(createElement, references) { const titleInlineContent = node.overridingTitleInlineContent || reference.titleInlineContent; const titlePlainText = node.overridingTitle || reference.title; + const kind = node.overridingTitleInlineContent + ? node.overridingTitleInlineContent[0].type : reference.kind; return createElement(Reference, { props: { url: reference.url, - kind: reference.kind, + kind, role: reference.role, isActive: node.isActive, ideTitle: reference.ideTitle, diff --git a/src/components/ContentNode/Reference.vue b/src/components/ContentNode/Reference.vue index 07109220f..e5abcf1e3 100644 --- a/src/components/ContentNode/Reference.vue +++ b/src/components/ContentNode/Reference.vue @@ -43,7 +43,7 @@ export default { return name !== notFoundRouteName; }, isSymbolReference() { - return this.kind === 'symbol' + return (this.kind === 'symbol' || this.kind === 'codeVoice') && (this.role === TopicRole.symbol || this.role === TopicRole.dictionarySymbol); }, isDisplaySymbol({ isSymbolReference, titleStyle, ideTitle }) { diff --git a/tests/unit/components/ContentNode.spec.js b/tests/unit/components/ContentNode.spec.js index c993fb3d1..64421267b 100644 --- a/tests/unit/components/ContentNode.spec.js +++ b/tests/unit/components/ContentNode.spec.js @@ -1254,6 +1254,7 @@ describe('ContentNode', () => { const reference = wrapper.find('.content').find(Reference); expect(reference.exists()).toBe(true); expect(reference.props('url')).toBe('/foo/bar'); + expect(reference.props('kind')).toBe('codeVoice'); const codeVoice = reference.find(CodeVoice); expect(codeVoice.exists()).toBe(true); @@ -1261,6 +1262,35 @@ describe('ContentNode', () => { expect(codeVoice.text()).toBe('Foo the Bar with Code Voice'); }); + it('renders a `Reference` with an overwritten title of type="text"', () => { + const wrapper = mountWithItem({ + type: 'reference', + identifier: 'foobar', + overridingTitle: 'Foo with Text', + overridingTitleInlineContent: [ + { + type: 'text', + text: 'Foo the Bar with Text', + }, + ], + }, { + foobar: { + title: 'FooBar', + url: '/foo/bar', + kind: 'bla', + }, + }); + + const reference = wrapper.find('.content').find(Reference); + expect(reference.exists()).toBe(true); + expect(reference.props('kind')).toBe('text'); + + const codeVoice = reference.find(CodeVoice); + expect(codeVoice.exists()).toBe(false); + expect(reference.text()).not.toBe('FooBar with Code Voice'); + expect(reference.text()).toBe('Foo the Bar with Text'); + }); + it('renders a reference as a none link when isActive is false', () => { const wrapper = mountWithItem({ type: 'reference', diff --git a/tests/unit/components/ContentNode/Reference.spec.js b/tests/unit/components/ContentNode/Reference.spec.js index 237914161..7e0ec44f2 100644 --- a/tests/unit/components/ContentNode/Reference.spec.js +++ b/tests/unit/components/ContentNode/Reference.spec.js @@ -79,6 +79,22 @@ describe('Reference', () => { expect(ref.props('url')).toBe('/documentation/uikit/uiview'); }); + it('renders a `ReferenceInternalSymbol` for external "codeVoice" kind references', () => { + const wrapper = shallowMount(Reference, { + localVue, + router, + propsData: { + url: '/documentation/uikit/uiview', + kind: 'codeVoice', + role: TopicRole.symbol, + }, + slots: { default: 'UIView' }, + }); + const ref = wrapper.find(ReferenceInternalSymbol); + expect(ref.exists()).toBe(true); + expect(ref.props('url')).toBe('/documentation/uikit/uiview'); + }); + it('renders a `ReferenceInternal` for external "symbol" kind references with human readable name', () => { const wrapper = shallowMount(Reference, { localVue,