diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-07-20 15:40:28 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-07-20 15:40:28 +0000 |
commit | b595cb0c1dec83de5bdee18284abe86614bed33b (patch) | |
tree | 8c3d4540f193c5ff98019352f554e921b3a41a72 /spec/frontend/ci_secure_files | |
parent | 2f9104a328fc8a4bddeaa4627b595166d24671d0 (diff) | |
download | gitlab-ce-b595cb0c1dec83de5bdee18284abe86614bed33b.tar.gz |
Add latest changes from gitlab-org/gitlab@15-2-stable-eev15.2.0-rc42
Diffstat (limited to 'spec/frontend/ci_secure_files')
-rw-r--r-- | spec/frontend/ci_secure_files/components/secure_files_list_spec.js | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/spec/frontend/ci_secure_files/components/secure_files_list_spec.js b/spec/frontend/ci_secure_files/components/secure_files_list_spec.js index ad5f8a56ced..04d38a3281a 100644 --- a/spec/frontend/ci_secure_files/components/secure_files_list_spec.js +++ b/spec/frontend/ci_secure_files/components/secure_files_list_spec.js @@ -1,10 +1,12 @@ -import { GlLoadingIcon } from '@gitlab/ui'; +import { GlLoadingIcon, GlModal } from '@gitlab/ui'; import MockAdapter from 'axios-mock-adapter'; import { mount } from '@vue/test-utils'; import axios from '~/lib/utils/axios_utils'; import SecureFilesList from '~/ci_secure_files/components/secure_files_list.vue'; import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue'; +import { mockTracking, unmockTracking } from 'helpers/tracking_helper'; import waitForPromises from 'helpers/wait_for_promises'; +import Api from '~/api'; import { secureFiles } from '../mock_data'; @@ -22,15 +24,18 @@ const expectedUrl = `${dummyUrlRoot}/api/${dummyApiVersion}/projects/${dummyProj describe('SecureFilesList', () => { let wrapper; let mock; + let trackingSpy; beforeEach(() => { originalGon = window.gon; + trackingSpy = mockTracking(undefined, undefined, jest.spyOn); window.gon = { ...dummyGon }; }); afterEach(() => { wrapper.destroy(); mock.restore(); + unmockTracking(); window.gon = originalGon; }); @@ -52,7 +57,9 @@ describe('SecureFilesList', () => { const findPagination = () => wrapper.findAll('ul.pagination'); const findLoadingIcon = () => wrapper.findComponent(GlLoadingIcon); const findUploadButton = () => wrapper.findAll('span.gl-button-text'); - const findDeleteButton = () => wrapper.findAll('tbody tr td button.btn-danger'); + const findDeleteModal = () => wrapper.findComponent(GlModal); + const findUploadInput = () => wrapper.findAll('input[type="file"]').at(0); + const findDeleteButton = () => wrapper.findAll('[data-testid="delete-button"]'); describe('when secure files exist in a project', () => { beforeEach(async () => { @@ -64,7 +71,7 @@ describe('SecureFilesList', () => { }); it('displays a table with expected headers', () => { - const headers = ['Filename', 'Uploaded']; + const headers = ['File name', 'Uploaded date']; headers.forEach((header, i) => { expect(findHeaderAt(i).text()).toBe(header); }); @@ -78,6 +85,30 @@ describe('SecureFilesList', () => { expect(findCell(0, 0).text()).toBe(secureFile.name); expect(findCell(0, 1).find(TimeAgoTooltip).props('time')).toBe(secureFile.created_at); }); + + describe('event tracking', () => { + it('sends tracking information on list load', () => { + expect(trackingSpy).toHaveBeenCalledWith(undefined, 'render_secure_files_list', {}); + }); + + it('sends tracking information on file upload', async () => { + Api.uploadProjectSecureFile = jest.fn().mockResolvedValue(); + Object.defineProperty(findUploadInput().element, 'files', { value: [{}] }); + findUploadInput().trigger('change'); + + await waitForPromises(); + + expect(trackingSpy).toHaveBeenCalledWith(undefined, 'upload_secure_file', {}); + }); + + it('sends tracking information on file deletion', async () => { + Api.deleteProjectSecureFile = jest.fn().mockResolvedValue(); + findDeleteModal().vm.$emit('ok'); + await waitForPromises(); + + expect(trackingSpy).toHaveBeenCalledWith(undefined, 'delete_secure_file', {}); + }); + }); }); describe('when no secure files exist in a project', () => { @@ -90,14 +121,14 @@ describe('SecureFilesList', () => { }); it('displays a table with expected headers', () => { - const headers = ['Filename', 'Uploaded']; + const headers = ['File name', 'Uploaded date']; headers.forEach((header, i) => { expect(findHeaderAt(i).text()).toBe(header); }); }); it('displays a table with a no records message', () => { - expect(findCell(0, 0).text()).toBe('There are no records to show'); + expect(findCell(0, 0).text()).toBe('There are no secure files yet.'); }); }); |