diff --git a/app/assets/javascripts/pages/shared/wikis/components/wiki_sidebar_entries.vue b/app/assets/javascripts/pages/shared/wikis/components/wiki_sidebar_entries.vue index 0337cdd01db48a9a5c2fc49f60c25f98267b78d4..2964d70c18b01574e0fbb26eb43e5919ae4b2f7a 100644 --- a/app/assets/javascripts/pages/shared/wikis/components/wiki_sidebar_entries.vue +++ b/app/assets/javascripts/pages/shared/wikis/components/wiki_sidebar_entries.vue @@ -1,5 +1,5 @@ diff --git a/locale/gitlab.pot b/locale/gitlab.pot index b3a43330111ed3b7a319e481e67bc0e5023e7974..9d46392523e0a79539bf0f9bcd4060e5403053d9 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -59492,6 +59492,9 @@ msgstr "" msgid "Wiki|Pages" msgstr "" +msgid "Wiki|Search pages" +msgstr "" + msgid "Wiki|Sidebar was successfully created." msgstr "" diff --git a/spec/frontend/pages/shared/wikis/components/wiki_sidebar_entries_spec.js b/spec/frontend/pages/shared/wikis/components/wiki_sidebar_entries_spec.js index 047436a32620904a013719a160b3d81aad8632d6..60e1bd783c8401e133920032be2fdf74f2455bc1 100644 --- a/spec/frontend/pages/shared/wikis/components/wiki_sidebar_entries_spec.js +++ b/spec/frontend/pages/shared/wikis/components/wiki_sidebar_entries_spec.js @@ -1,4 +1,4 @@ -import { GlSkeletonLoader } from '@gitlab/ui'; +import { GlSkeletonLoader, GlSearchBoxByType } from '@gitlab/ui'; import MockAdapter from 'axios-mock-adapter'; import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; import axios from '~/lib/utils/axios_utils'; @@ -46,6 +46,7 @@ describe('pages/shared/wikis/components/wiki_sidebar_entry', () => { const findAllEntries = () => wrapper.findAllComponents(WikiSidebarEntry); const findAndMapEntriesToPages = () => findAllEntries().wrappers.map((entry) => ({ ...entry.props('page') })); + const findSearchBox = () => wrapper.findComponent(GlSearchBoxByType); function buildWrapper(props = {}, provide = {}) { wrapper = shallowMountExtended(WikiSidebarEntries, { @@ -57,7 +58,9 @@ describe('pages/shared/wikis/components/wiki_sidebar_entry', () => { canCreate: false, ...provide, }, - stubs: {}, + stubs: { + GlSearchBoxByType, + }, }); } @@ -171,4 +174,38 @@ describe('pages/shared/wikis/components/wiki_sidebar_entry', () => { expect(findViewAllPagesButton().attributes('href')).toBe(MOCK_VIEW_ALL_PAGES_PATH); }); }); + + describe('when searching for pages', () => { + beforeEach(async () => { + mock.onGet(MOCK_SIDEBAR_PAGES_API).reply(HTTP_STATUS_OK, MOCK_ENTRIES_MORE_THAN_LIMIT); + buildWrapper(); + + await waitForPromises(); + + findSearchBox().vm.$emit('input', 'Page 1'); + }); + + it('lists all the filtered search results', () => { + expect(findAndMapEntriesToPages()).toEqual([ + { slug: 'page-1', path: 'path/to/page-1', title: 'Page 1', children: [] }, + { slug: 'page-10', path: 'path/to/page-10', title: 'Page 10', children: [] }, + { slug: 'page-11', path: 'path/to/page-11', title: 'Page 11', children: [] }, + { slug: 'page-12', path: 'path/to/page-12', title: 'Page 12', children: [] }, + { slug: 'page-13', path: 'path/to/page-13', title: 'Page 13', children: [] }, + { slug: 'page-14', path: 'path/to/page-14', title: 'Page 14', children: [] }, + { slug: 'page-15', path: 'path/to/page-15', title: 'Page 15', children: [] }, + { slug: 'page-16', path: 'path/to/page-16', title: 'Page 16', children: [] }, + { slug: 'page-17', path: 'path/to/page-17', title: 'Page 17', children: [] }, + ]); + }); + + it('does not display + X more text', () => { + expect(wrapper.text()).not.toMatch(/\+ \d+ more/); + }); + + it('has a "View all pages" button', () => { + expect(findViewAllPagesButton().exists()).toBe(true); + expect(findViewAllPagesButton().attributes('href')).toBe(MOCK_VIEW_ALL_PAGES_PATH); + }); + }); }); diff --git a/spec/frontend/pages/shared/wikis/components/wiki_sidebar_entry_spec.js b/spec/frontend/pages/shared/wikis/components/wiki_sidebar_entry_spec.js index 31d0e05162b8aa95a7e7cb9ada62ead437002304..fb5877594847542691487d642fe250e322361250 100644 --- a/spec/frontend/pages/shared/wikis/components/wiki_sidebar_entry_spec.js +++ b/spec/frontend/pages/shared/wikis/components/wiki_sidebar_entry_spec.js @@ -50,6 +50,12 @@ describe('pages/shared/wikis/components/wiki_sidebar_entry', () => { expect(wrapper.findByTestId('wiki-list-create-child-button').exists()).toBe(true); }); + + it('highlights the searchTerm in the page title', () => { + buildWrapper({ page: { title: 'Foo', path: '/foo', children: [] }, searchTerm: 'Fo' }); + + expect(wrapper.html()).toContain('Foo'); + }); }); describe('when the page has children', () => {