diff options
author | Sarah German <sgerman@gitlab.com> | 2023-02-01 02:00:59 +0300 |
---|---|---|
committer | David O'Regan <doregan@gitlab.com> | 2023-02-01 02:00:59 +0300 |
commit | e67b7d42efefac4bbb566299287e62813a517e4d (patch) | |
tree | 237da105ddd901760fca55f306e846e23880fc91 /spec | |
parent | afefd480f4d05b48c9a890911d75a2965678ade8 (diff) |
Add Google search forms
Diffstat (limited to 'spec')
-rw-r--r-- | spec/frontend/search/google_search_spec.js | 50 | ||||
-rw-r--r-- | spec/frontend/search/lunr_search_spec.js | 4 | ||||
-rw-r--r-- | spec/frontend/search/search_spec.js | 2 |
3 files changed, 53 insertions, 3 deletions
diff --git a/spec/frontend/search/google_search_spec.js b/spec/frontend/search/google_search_spec.js new file mode 100644 index 00000000..3d2554b9 --- /dev/null +++ b/spec/frontend/search/google_search_spec.js @@ -0,0 +1,50 @@ +/** + * @jest-environment jsdom + */ + +import { shallowMount } from '@vue/test-utils'; +import SearchPage from '../../../content/frontend/search/components/google_results.vue'; +import { GPS_ENDPOINT } from '../../../content/frontend/services/google_search_api'; + +describe('content/frontend/search/components/google_results.vue', () => { + it('Search form renders', () => { + const wrapper = shallowMount(SearchPage); + expect(wrapper.findComponent(SearchPage).isVisible()).toBe(true); + }); + + it('API request failure shows an error', async () => { + const wrapper = shallowMount(SearchPage); + const fetch = jest.fn(() => { + Promise.reject(new Error('HTTP error')).catch(() => null); + }); + try { + await fetch(GPS_ENDPOINT); + } catch (e) { + expect(wrapper.find('[data-testid="search-error"]').isVisible()).toBe(true); + } + }); + + it('Google authentication failure shows an error', async () => { + const wrapper = shallowMount(SearchPage); + const fetch = jest.fn(() => { + Promise.resolve({ e: { error: { code: 400 } } }).catch(() => null); + }); + try { + await fetch(GPS_ENDPOINT); + } catch (e) { + expect(wrapper.find('[data-testid="search-error"]').isVisible()).toBe(true); + } + }); + + it('Google successful request shows results', async () => { + const wrapper = shallowMount(SearchPage); + const fetch = jest.fn(() => { + Promise.resolve({ items: [{ title: 'GitLab Docs' }] }).catch(() => null); + }); + try { + await fetch(GPS_ENDPOINT); + } catch (e) { + expect(wrapper.find('[data-testid="search-results"]').isVisible()).toBe(true); + } + }); +}); diff --git a/spec/frontend/search/lunr_search_spec.js b/spec/frontend/search/lunr_search_spec.js index 234fa794..9f890b35 100644 --- a/spec/frontend/search/lunr_search_spec.js +++ b/spec/frontend/search/lunr_search_spec.js @@ -3,9 +3,9 @@ */ import { shallowMount } from '@vue/test-utils'; -import SearchPage from '../../../content/frontend/search/components/lunr_page.vue'; +import SearchPage from '../../../content/frontend/search/components/lunr_results.vue'; -describe('content/frontend/search/components/lunr_page.vue', () => { +describe('content/frontend/search/components/lunr_results.vue', () => { it('Search form renders', () => { const wrapper = shallowMount(SearchPage); expect(wrapper.findComponent(SearchPage).isVisible()).toBe(true); diff --git a/spec/frontend/search/search_spec.js b/spec/frontend/search/search_spec.js index 2d80473d..0809f639 100644 --- a/spec/frontend/search/search_spec.js +++ b/spec/frontend/search/search_spec.js @@ -3,7 +3,7 @@ */ import { mount } from '@vue/test-utils'; -import SearchPage from '../../../content/frontend/search/components/search_page.vue'; +import SearchPage from '../../../content/frontend/search/components/instantsearch_results.vue'; const propsData = { docsVersion: 'main', algoliaCredentials: {} }; const searchFormSelector = '[data-testid="docs-search"]'; |