Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-docs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorSarah German <sgerman@gitlab.com>2023-02-01 02:00:59 +0300
committerDavid O'Regan <doregan@gitlab.com>2023-02-01 02:00:59 +0300
commite67b7d42efefac4bbb566299287e62813a517e4d (patch)
tree237da105ddd901760fca55f306e846e23880fc91 /spec
parentafefd480f4d05b48c9a890911d75a2965678ade8 (diff)
Add Google search forms
Diffstat (limited to 'spec')
-rw-r--r--spec/frontend/search/google_search_spec.js50
-rw-r--r--spec/frontend/search/lunr_search_spec.js4
-rw-r--r--spec/frontend/search/search_spec.js2
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"]';