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 @@
@@ -55,14 +74,13 @@ export default {
@click="toggleCollapsed"
>
- {{ pageTitle }}
-
+ />
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', () => {