summaryrefslogtreecommitdiff
path: root/spec/frontend/ci_secure_files
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-07-20 15:40:28 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-07-20 15:40:28 +0000
commitb595cb0c1dec83de5bdee18284abe86614bed33b (patch)
tree8c3d4540f193c5ff98019352f554e921b3a41a72 /spec/frontend/ci_secure_files
parent2f9104a328fc8a4bddeaa4627b595166d24671d0 (diff)
downloadgitlab-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.js41
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.');
});
});