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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/alert_management/components/alert_status_spec.js')
-rw-r--r--spec/frontend/alert_management/components/alert_status_spec.js151
1 files changed, 0 insertions, 151 deletions
diff --git a/spec/frontend/alert_management/components/alert_status_spec.js b/spec/frontend/alert_management/components/alert_status_spec.js
deleted file mode 100644
index 6f2ddb86020..00000000000
--- a/spec/frontend/alert_management/components/alert_status_spec.js
+++ /dev/null
@@ -1,151 +0,0 @@
-import { shallowMount } from '@vue/test-utils';
-import { GlDropdown, GlDropdownItem } from '@gitlab/ui';
-import waitForPromises from 'helpers/wait_for_promises';
-import { trackAlertStatusUpdateOptions } from '~/alert_management/constants';
-import AlertManagementStatus from '~/alert_management/components/alert_status.vue';
-import updateAlertStatusMutation from '~/graphql_shared/mutations/update_alert_status.mutation.graphql';
-import Tracking from '~/tracking';
-import mockAlerts from '../mocks/alerts.json';
-
-const mockAlert = mockAlerts[0];
-
-describe('AlertManagementStatus', () => {
- let wrapper;
- const findStatusDropdown = () => wrapper.find(GlDropdown);
- const findFirstStatusOption = () => findStatusDropdown().find(GlDropdownItem);
-
- const selectFirstStatusOption = () => {
- findFirstStatusOption().vm.$emit('click');
-
- return waitForPromises();
- };
-
- function mountComponent({ props = {}, loading = false, stubs = {} } = {}) {
- wrapper = shallowMount(AlertManagementStatus, {
- propsData: {
- alert: { ...mockAlert },
- projectPath: 'gitlab-org/gitlab',
- isSidebar: false,
- ...props,
- },
- mocks: {
- $apollo: {
- mutate: jest.fn(),
- queries: {
- alert: {
- loading,
- },
- },
- },
- },
- stubs,
- });
- }
-
- beforeEach(() => {
- mountComponent();
- });
-
- afterEach(() => {
- if (wrapper) {
- wrapper.destroy();
- wrapper = null;
- }
- });
-
- describe('updating the alert status', () => {
- const iid = '1527542';
- const mockUpdatedMutationResult = {
- data: {
- updateAlertStatus: {
- errors: [],
- alert: {
- iid,
- status: 'acknowledged',
- },
- },
- },
- };
-
- beforeEach(() => {
- mountComponent({});
- });
-
- it('calls `$apollo.mutate` with `updateAlertStatus` mutation and variables containing `iid`, `status`, & `projectPath`', () => {
- jest.spyOn(wrapper.vm.$apollo, 'mutate').mockResolvedValue(mockUpdatedMutationResult);
- findFirstStatusOption().vm.$emit('click');
-
- expect(wrapper.vm.$apollo.mutate).toHaveBeenCalledWith({
- mutation: updateAlertStatusMutation,
- variables: {
- iid,
- status: 'TRIGGERED',
- projectPath: 'gitlab-org/gitlab',
- },
- });
- });
-
- describe('when a request fails', () => {
- beforeEach(() => {
- jest.spyOn(wrapper.vm.$apollo, 'mutate').mockReturnValue(Promise.reject(new Error()));
- });
-
- it('emits an error', async () => {
- await selectFirstStatusOption();
-
- expect(wrapper.emitted('alert-error')[0]).toEqual([
- 'There was an error while updating the status of the alert. Please try again.',
- ]);
- });
-
- it('emits an error when triggered a second time', async () => {
- await selectFirstStatusOption();
- await wrapper.vm.$nextTick();
- await selectFirstStatusOption();
- // Should emit two errors [0,1]
- expect(wrapper.emitted('alert-error').length > 1).toBe(true);
- });
- });
-
- it('shows an error when response includes HTML errors', async () => {
- const mockUpdatedMutationErrorResult = {
- data: {
- updateAlertStatus: {
- errors: ['<span data-testid="htmlError" />'],
- alert: {
- iid,
- status: 'acknowledged',
- },
- },
- },
- };
-
- jest.spyOn(wrapper.vm.$apollo, 'mutate').mockResolvedValue(mockUpdatedMutationErrorResult);
-
- await selectFirstStatusOption();
-
- expect(wrapper.emitted('alert-error').length > 0).toBe(true);
- expect(wrapper.emitted('alert-error')[0]).toEqual([
- 'There was an error while updating the status of the alert. <span data-testid="htmlError" />',
- ]);
- });
- });
-
- describe('Snowplow tracking', () => {
- beforeEach(() => {
- jest.spyOn(Tracking, 'event');
- mountComponent({});
- });
-
- it('should track alert status updates', () => {
- Tracking.event.mockClear();
- jest.spyOn(wrapper.vm.$apollo, 'mutate').mockResolvedValue({});
- findFirstStatusOption().vm.$emit('click');
- const status = findFirstStatusOption().text();
- setImmediate(() => {
- const { category, action, label } = trackAlertStatusUpdateOptions;
- expect(Tracking.event).toHaveBeenCalledWith(category, action, { label, property: status });
- });
- });
- });
-});