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/monitoring/components/dashboard_url_time_spec.js')
-rw-r--r--spec/frontend/monitoring/components/dashboard_url_time_spec.js159
1 files changed, 0 insertions, 159 deletions
diff --git a/spec/frontend/monitoring/components/dashboard_url_time_spec.js b/spec/frontend/monitoring/components/dashboard_url_time_spec.js
deleted file mode 100644
index b123d1e7d79..00000000000
--- a/spec/frontend/monitoring/components/dashboard_url_time_spec.js
+++ /dev/null
@@ -1,159 +0,0 @@
-import { mount } from '@vue/test-utils';
-import MockAdapter from 'axios-mock-adapter';
-import { nextTick } from 'vue';
-import { createAlert } from '~/alert';
-import axios from '~/lib/utils/axios_utils';
-import {
- queryToObject,
- redirectTo, // eslint-disable-line import/no-deprecated
- removeParams,
- mergeUrlParams,
- updateHistory,
-} from '~/lib/utils/url_utility';
-
-import Dashboard from '~/monitoring/components/dashboard.vue';
-import DashboardHeader from '~/monitoring/components/dashboard_header.vue';
-import { createStore } from '~/monitoring/stores';
-import { defaultTimeRange } from '~/vue_shared/constants';
-import { dashboardProps } from '../fixture_data';
-import { mockProjectDir } from '../mock_data';
-
-jest.mock('~/alert');
-jest.mock('~/lib/utils/url_utility');
-
-describe('dashboard invalid url parameters', () => {
- let store;
- let wrapper;
- let mock;
-
- const createMountedWrapper = (props = { hasMetrics: true }, options = {}) => {
- wrapper = mount(Dashboard, {
- propsData: { ...dashboardProps, ...props },
- store,
- stubs: { 'graph-group': true, 'dashboard-panel': true, 'dashboard-header': DashboardHeader },
- ...options,
- });
- };
-
- const findDateTimePicker = () =>
- wrapper.findComponent(DashboardHeader).findComponent({ ref: 'dateTimePicker' });
-
- beforeEach(() => {
- store = createStore();
- jest.spyOn(store, 'dispatch');
-
- mock = new MockAdapter(axios);
- });
-
- afterEach(() => {
- mock.restore();
- queryToObject.mockReset();
- });
-
- it('passes default url parameters to the time range picker', async () => {
- queryToObject.mockReturnValue({});
-
- createMountedWrapper();
-
- await nextTick();
- expect(findDateTimePicker().props('value')).toEqual(defaultTimeRange);
-
- expect(store.dispatch).toHaveBeenCalledWith(
- 'monitoringDashboard/setTimeRange',
- expect.any(Object),
- );
- expect(store.dispatch).toHaveBeenCalledWith('monitoringDashboard/fetchData', undefined);
- });
-
- it('passes a fixed time range in the URL to the time range picker', async () => {
- const params = {
- start: '2019-01-01T00:00:00.000Z',
- end: '2019-01-10T00:00:00.000Z',
- };
-
- queryToObject.mockReturnValue(params);
-
- createMountedWrapper();
-
- await nextTick();
- expect(findDateTimePicker().props('value')).toEqual(params);
-
- expect(store.dispatch).toHaveBeenCalledWith('monitoringDashboard/setTimeRange', params);
- expect(store.dispatch).toHaveBeenCalledWith('monitoringDashboard/fetchData', undefined);
- });
-
- it('passes a rolling time range in the URL to the time range picker', async () => {
- queryToObject.mockReturnValue({
- duration_seconds: '120',
- });
-
- createMountedWrapper();
-
- await nextTick();
- const expectedTimeRange = {
- duration: { seconds: 60 * 2 },
- };
-
- expect(findDateTimePicker().props('value')).toMatchObject(expectedTimeRange);
-
- expect(store.dispatch).toHaveBeenCalledWith(
- 'monitoringDashboard/setTimeRange',
- expectedTimeRange,
- );
- expect(store.dispatch).toHaveBeenCalledWith('monitoringDashboard/fetchData', undefined);
- });
-
- it('shows an error message and loads a default time range if invalid url parameters are passed', async () => {
- queryToObject.mockReturnValue({
- start: '<script>alert("XSS")</script>',
- end: '<script>alert("XSS")</script>',
- });
-
- createMountedWrapper();
-
- await nextTick();
- expect(createAlert).toHaveBeenCalled();
-
- expect(findDateTimePicker().props('value')).toEqual(defaultTimeRange);
-
- expect(store.dispatch).toHaveBeenCalledWith(
- 'monitoringDashboard/setTimeRange',
- defaultTimeRange,
- );
- expect(store.dispatch).toHaveBeenCalledWith('monitoringDashboard/fetchData', undefined);
- });
-
- it('redirects to different time range', async () => {
- const toUrl = `${mockProjectDir}/-/metrics?environment=1`;
- removeParams.mockReturnValueOnce(toUrl);
-
- createMountedWrapper();
-
- await nextTick();
- findDateTimePicker().vm.$emit('input', {
- duration: { seconds: 120 },
- });
-
- // redirect to with new parameters
- expect(mergeUrlParams).toHaveBeenCalledWith({ duration_seconds: '120' }, toUrl);
- expect(redirectTo).toHaveBeenCalledTimes(1); // eslint-disable-line import/no-deprecated
- });
-
- it('changes the url when a panel moves the time slider', async () => {
- const timeRange = {
- start: '2020-01-01T00:00:00.000Z',
- end: '2020-01-01T01:00:00.000Z',
- };
-
- queryToObject.mockReturnValue(timeRange);
-
- createMountedWrapper();
-
- await nextTick();
- wrapper.vm.onTimeRangeZoom(timeRange);
-
- expect(updateHistory).toHaveBeenCalled();
- expect(wrapper.vm.selectedTimeRange.start.toString()).toBe(timeRange.start);
- expect(wrapper.vm.selectedTimeRange.end.toString()).toBe(timeRange.end);
- });
-});