diff options
Diffstat (limited to 'spec/frontend/jira_import')
-rw-r--r-- | spec/frontend/jira_import/components/jira_import_form_spec.js | 81 | ||||
-rw-r--r-- | spec/frontend/jira_import/mock_data.js | 2 | ||||
-rw-r--r-- | spec/frontend/jira_import/utils/jira_import_utils_spec.js | 2 |
3 files changed, 73 insertions, 12 deletions
diff --git a/spec/frontend/jira_import/components/jira_import_form_spec.js b/spec/frontend/jira_import/components/jira_import_form_spec.js index 00fb8f5435e..7a550d85204 100644 --- a/spec/frontend/jira_import/components/jira_import_form_spec.js +++ b/spec/frontend/jira_import/components/jira_import_form_spec.js @@ -1,11 +1,21 @@ -import { GlAlert, GlButton, GlDropdown, GlFormSelect, GlLabel, GlTable } from '@gitlab/ui'; +import { + GlAlert, + GlButton, + GlDropdown, + GlDropdownItem, + GlFormSelect, + GlLabel, + GlSearchBoxByType, + GlTable, +} from '@gitlab/ui'; import { getByRole } from '@testing-library/dom'; import { mount, shallowMount } from '@vue/test-utils'; import AxiosMockAdapter from 'axios-mock-adapter'; -import axios from '~/lib/utils/axios_utils'; import JiraImportForm from '~/jira_import/components/jira_import_form.vue'; import getJiraUserMappingMutation from '~/jira_import/queries/get_jira_user_mapping.mutation.graphql'; import initiateJiraImportMutation from '~/jira_import/queries/initiate_jira_import.mutation.graphql'; +import searchProjectMembersQuery from '~/jira_import/queries/search_project_members.query.graphql'; +import axios from '~/lib/utils/axios_utils'; import { imports, issuesPath, @@ -19,6 +29,7 @@ import { describe('JiraImportForm', () => { let axiosMock; let mutateSpy; + let querySpy; let wrapper; const currentUsername = 'mrgitlab'; @@ -72,6 +83,7 @@ describe('JiraImportForm', () => { $apollo: { loading, mutate, + query: querySpy, }, }, currentUsername, @@ -79,19 +91,21 @@ describe('JiraImportForm', () => { beforeEach(() => { axiosMock = new AxiosMockAdapter(axios); - mutateSpy = jest.fn(() => - Promise.resolve({ - data: { - jiraImportStart: { errors: [] }, - jiraImportUsers: { jiraUsers: [], errors: [] }, - }, - }), - ); + mutateSpy = jest.fn().mockResolvedValue({ + data: { + jiraImportStart: { errors: [] }, + jiraImportUsers: { jiraUsers: [], errors: [] }, + }, + }); + querySpy = jest.fn().mockResolvedValue({ + data: { project: { projectMembers: { nodes: [] } } }, + }); }); afterEach(() => { axiosMock.restore(); mutateSpy.mockRestore(); + querySpy.mockRestore(); wrapper.destroy(); wrapper = null; }); @@ -236,6 +250,53 @@ describe('JiraImportForm', () => { }); }); + describe('member search', () => { + describe('when searching for a member', () => { + beforeEach(() => { + querySpy = jest.fn().mockResolvedValue({ + data: { + project: { + projectMembers: { + nodes: [ + { + user: { + id: 7, + name: 'Frederic Chopin', + username: 'fchopin', + }, + }, + ], + }, + }, + }, + }); + + wrapper = mountComponent({ mountFunction: mount }); + + wrapper.find(GlSearchBoxByType).vm.$emit('input', 'fred'); + }); + + it('makes a GraphQL call', () => { + const queryArgument = { + query: searchProjectMembersQuery, + variables: { + fullPath: projectPath, + search: 'fred', + }, + }; + + expect(querySpy).toHaveBeenCalledWith(expect.objectContaining(queryArgument)); + }); + + it('updates the user list', () => { + expect(getUserDropdown().findAll(GlDropdownItem)).toHaveLength(1); + expect(getUserDropdown().find(GlDropdownItem).text()).toContain( + 'fchopin (Frederic Chopin)', + ); + }); + }); + }); + describe('buttons', () => { describe('"Continue" button', () => { it('is shown', () => { diff --git a/spec/frontend/jira_import/mock_data.js b/spec/frontend/jira_import/mock_data.js index 51dd939283e..8dc8ce08f49 100644 --- a/spec/frontend/jira_import/mock_data.js +++ b/spec/frontend/jira_import/mock_data.js @@ -1,6 +1,6 @@ import getJiraImportDetailsQuery from '~/jira_import/queries/get_jira_import_details.query.graphql'; -import { IMPORT_STATE } from '~/jira_import/utils/jira_import_utils'; import { userMappingsPageSize } from '~/jira_import/utils/constants'; +import { IMPORT_STATE } from '~/jira_import/utils/jira_import_utils'; export const fullPath = 'gitlab-org/gitlab-test'; diff --git a/spec/frontend/jira_import/utils/jira_import_utils_spec.js b/spec/frontend/jira_import/utils/jira_import_utils_spec.js index 0992c9e8d16..9696d95f8c4 100644 --- a/spec/frontend/jira_import/utils/jira_import_utils_spec.js +++ b/spec/frontend/jira_import/utils/jira_import_utils_spec.js @@ -1,4 +1,5 @@ import { useLocalStorageSpy } from 'helpers/local_storage_helper'; +import { JIRA_IMPORT_SUCCESS_ALERT_HIDE_MAP_KEY } from '~/issues_list/constants'; import { calculateJiraImportLabel, extractJiraProjectsOptions, @@ -8,7 +9,6 @@ import { setFinishedAlertHideMap, shouldShowFinishedAlert, } from '~/jira_import/utils/jira_import_utils'; -import { JIRA_IMPORT_SUCCESS_ALERT_HIDE_MAP_KEY } from '~/issues_list/constants'; useLocalStorageSpy(); |