From a7e62ac0a2f2c0c4e71b2c085b2df8bfd1b3aeab Mon Sep 17 00:00:00 2001 From: Hanqing Huang Date: Wed, 16 Mar 2022 13:22:38 -0700 Subject: [PATCH 1/5] WIP: Add language switcher for TargetIDE WIP: Add language switcher for TargetIDE, remove hideSummary, fix test --- app/public/theme-settings.json | 3 --- src/components/DocumentationTopic.vue | 20 ++++++---------- .../DocumentationTopic/DocumentationHero.vue | 4 ---- .../DocumentationTopic/DocumentationNav.vue | 3 ++- .../Summary/Availability.vue | 6 +---- .../Summary/LanguageSwitcher.vue | 24 ++++++++++++------- .../DocumentationTopic/Summary/Section.vue | 3 +-- .../DocumentationTopic/Summary/Title.vue | 8 +++++-- .../components/DocumentationTopic.spec.js | 23 ++++-------------- 9 files changed, 37 insertions(+), 57 deletions(-) diff --git a/app/public/theme-settings.json b/app/public/theme-settings.json index 729decd5e..4b841880e 100644 --- a/app/public/theme-settings.json +++ b/app/public/theme-settings.json @@ -54,9 +54,6 @@ }, "features": { "docs": { - "summary": { - "hide": false - }, "navigator": { "enable": false } diff --git a/src/components/DocumentationTopic.vue b/src/components/DocumentationTopic.vue index b6cca99b9..bb3683f0e 100644 --- a/src/components/DocumentationTopic.vue +++ b/src/components/DocumentationTopic.vue @@ -1,7 +1,7 @@ + + + + + + diff --git a/src/components/NavMenuItems.vue b/src/components/NavMenuItems.vue index d2546bd0d..6ec9126c7 100644 --- a/src/components/NavMenuItems.vue +++ b/src/components/NavMenuItems.vue @@ -1,7 +1,7 @@ - - - - - - diff --git a/src/components/DocumentationTopic/Summary/LanguageSwitcher.vue b/src/components/DocumentationTopic/Summary/LanguageSwitcher.vue index 225f8d22b..05dfe401c 100644 --- a/src/components/DocumentationTopic/Summary/LanguageSwitcher.vue +++ b/src/components/DocumentationTopic/Summary/LanguageSwitcher.vue @@ -124,7 +124,7 @@ export default { .language { padding-bottom: 10px; - justify-content: right; + justify-content: flex-end; } .language, .language-list { diff --git a/src/components/NavMenuItems.vue b/src/components/NavMenuItems.vue index 6ec9126c7..8368de712 100644 --- a/src/components/NavMenuItems.vue +++ b/src/components/NavMenuItems.vue @@ -41,7 +41,6 @@ $vertical-padding: $nav-height-small - $nav-padding-small; .nav-menu-items { display: flex; justify-content: flex-end; - align-items: center; // adds a subtle fade-in animation effect on mobile @include nav-in-breakpoint { diff --git a/tests/unit/components/DocumentationTopic.spec.js b/tests/unit/components/DocumentationTopic.spec.js index 518d1c0ac..7aaa8f0fc 100644 --- a/tests/unit/components/DocumentationTopic.spec.js +++ b/tests/unit/components/DocumentationTopic.spec.js @@ -345,17 +345,15 @@ describe('DocumentationTopic', () => { }); }); - describe('isTargetIDE', () => { + it('renders a `LanguageSwitcher` if TargetIDE', () => { const provide = { isTargetIDE: true }; - it('renders a `LanguageSwitcher`', () => { - wrapper = shallowMount(DocumentationTopic, { propsData, provide }); - const switcher = wrapper.find(LanguageSwitcher); - expect(switcher.exists()).toBe(true); - expect(switcher.props()).toEqual({ - interfaceLanguage: propsData.interfaceLanguage, - objcPath: propsData.languagePaths.occ[0], - swiftPath: propsData.languagePaths.swift[0], - }); + wrapper = shallowMount(DocumentationTopic, { propsData, provide }); + const switcher = wrapper.find(LanguageSwitcher); + expect(switcher.exists()).toBe(true); + expect(switcher.props()).toEqual({ + interfaceLanguage: propsData.interfaceLanguage, + objcPath: propsData.languagePaths.occ[0], + swiftPath: propsData.languagePaths.swift[0], }); }); diff --git a/tests/unit/components/DocumentationTopic/DocumentationNav.spec.js b/tests/unit/components/DocumentationTopic/DocumentationNav.spec.js index defb6b3df..f1a82cb54 100644 --- a/tests/unit/components/DocumentationTopic/DocumentationNav.spec.js +++ b/tests/unit/components/DocumentationTopic/DocumentationNav.spec.js @@ -63,7 +63,7 @@ describe('DocumentationNav', () => { }], interfaceLanguage: 'swift', swiftPath: 'documentation/foo', - objcPath: 'documentation/foo', + objcPath: 'documentation/bar', references, }; @@ -208,8 +208,8 @@ describe('DocumentationNav', () => { expect(toggle.exists()).toBe(true); expect(toggle.props()).toEqual({ interfaceLanguage: propsData.interfaceLanguage, - objcPath: propsData.swiftPath, - swiftPath: propsData.objcPath, + swiftPath: propsData.swiftPath, + objcPath: propsData.objcPath, }); }); diff --git a/tests/unit/components/DocumentationTopic/Summary.spec.js b/tests/unit/components/DocumentationTopic/Summary.spec.js deleted file mode 100644 index 63153961d..000000000 --- a/tests/unit/components/DocumentationTopic/Summary.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors -*/ - -import { shallowMount } from '@vue/test-utils'; -import Summary from 'docc-render/components/DocumentationTopic/Summary.vue'; - -describe('Summary', () => { - it('renders a `.summary` class at the root', () => { - const wrapper = shallowMount(Summary); - - expect(wrapper.classes('summary')).toBe(true); - }); - - it('renders slot content', () => { - const wrapper = shallowMount(Summary, { - slots: { default: '

foobar

' }, - }); - - expect(wrapper.contains('p')).toBe(true); - expect(wrapper.text()).toBe('foobar'); - }); -}); From 6761db97ed4a2aa9b300e615d9eeb597c9052fe4 Mon Sep 17 00:00:00 2001 From: Hanqing Huang Date: Thu, 17 Mar 2022 11:39:13 -0700 Subject: [PATCH 5/5] Add test for `menu-items` slot Add test for `menu-items` slot --- .../DocumentationTopic/DocumentationNav.spec.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/unit/components/DocumentationTopic/DocumentationNav.spec.js b/tests/unit/components/DocumentationTopic/DocumentationNav.spec.js index f1a82cb54..bd34ea181 100644 --- a/tests/unit/components/DocumentationTopic/DocumentationNav.spec.js +++ b/tests/unit/components/DocumentationTopic/DocumentationNav.spec.js @@ -219,6 +219,19 @@ describe('DocumentationNav', () => { expect(wrapper.contains(LanguageToggle)).toBe(false); }); + it('exposes a `menu-items` slot ', () => { + const menuItems = 'Menu Items'; + wrapper = shallowMount(DocumentationNav, { + stubs, + propsData, + mocks, + slots: { + 'menu-items': menuItems, + }, + }); + expect(wrapper.text()).toContain(menuItems); + }); + it('exposes a `after-content` slot ', () => { const afterContent = 'After Content'; wrapper = shallowMount(DocumentationNav, {