diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-15 15:08:28 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-15 15:08:28 +0300 |
commit | 927df95cc4453bdacbc59960df32008b02c4e28a (patch) | |
tree | 24c2af26a0b7a06661bdf077c3d0300684602e39 /spec/frontend | |
parent | e5731d5194e20deb33725943248c5899e4fdf05d (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend')
-rw-r--r-- | spec/frontend/header_spec.js | 16 | ||||
-rw-r--r-- | spec/frontend/monitoring/components/dashboard_spec.js | 69 | ||||
-rw-r--r-- | spec/frontend/monitoring/components/dashboard_template_spec.js | 3 | ||||
-rw-r--r-- | spec/frontend/monitoring/store_utils.js | 11 | ||||
-rw-r--r-- | spec/frontend/notes/components/note_header_spec.js | 15 | ||||
-rw-r--r-- | spec/frontend/releases/stores/modules/detail/mutations_spec.js | 24 |
6 files changed, 61 insertions, 77 deletions
diff --git a/spec/frontend/header_spec.js b/spec/frontend/header_spec.js index 0a74799283a..6d2d7976196 100644 --- a/spec/frontend/header_spec.js +++ b/spec/frontend/header_spec.js @@ -60,8 +60,8 @@ describe('Header', () => { beforeEach(() => { setFixtures(` <li class="js-nav-user-dropdown"> - <a class="js-buy-ci-minutes-link" data-track-event="click_buy_ci_minutes" data-track-label="free" data-track-property="user_dropdown">Buy CI minutes - </a> + <a class="js-buy-ci-minutes-link" data-track-event="click_buy_ci_minutes" data-track-label="free" data-track-property="user_dropdown">Buy CI minutes</a> + <a class="js-upgrade-plan-link" data-track-event="click_upgrade_link" data-track-label="free" data-track-property="user_dropdown">Upgrade</a> </li>`); trackingSpy = mockTracking('_category_', $('.js-nav-user-dropdown').element, jest.spyOn); @@ -77,8 +77,16 @@ describe('Header', () => { it('sends a tracking event when the dropdown is opened and contains Buy CI minutes link', () => { $('.js-nav-user-dropdown').trigger('shown.bs.dropdown'); - expect(trackingSpy).toHaveBeenCalledTimes(1); - expect(trackingSpy).toHaveBeenCalledWith(undefined, 'show_buy_ci_minutes', { + expect(trackingSpy).toHaveBeenCalledWith('some:page', 'show_buy_ci_minutes', { + label: 'free', + property: 'user_dropdown', + }); + }); + + it('sends a tracking event when the dropdown is opened and contains Upgrade link', () => { + $('.js-nav-user-dropdown').trigger('shown.bs.dropdown'); + + expect(trackingSpy).toHaveBeenCalledWith('some:page', 'show_upgrade_link', { label: 'free', property: 'user_dropdown', }); diff --git a/spec/frontend/monitoring/components/dashboard_spec.js b/spec/frontend/monitoring/components/dashboard_spec.js index 22bc3eef5f8..1fc02f0abe1 100644 --- a/spec/frontend/monitoring/components/dashboard_spec.js +++ b/spec/frontend/monitoring/components/dashboard_spec.js @@ -19,6 +19,7 @@ import DashboardPanel from '~/monitoring/components/dashboard_panel.vue'; import { createStore } from '~/monitoring/stores'; import * as types from '~/monitoring/stores/mutation_types'; import { + setupAllDashboards, setupStoreWithDashboard, setMetricResult, setupStoreWithData, @@ -279,7 +280,7 @@ describe('Dashboard', () => { expect(window.history.pushState).toHaveBeenCalledWith( expect.anything(), // state expect.any(String), // document title - expect.stringContaining(`?${expectedSearch}`), + expect.stringContaining(`${expectedSearch}`), ); }); }); @@ -302,7 +303,7 @@ describe('Dashboard', () => { expect(window.history.pushState).toHaveBeenCalledWith( expect.anything(), // state expect.any(String), // document title - expect.stringContaining(`?${expectedSearch}`), + expect.stringContaining(`${expectedSearch}`), ); }); }); @@ -317,7 +318,7 @@ describe('Dashboard', () => { expect(window.history.pushState).toHaveBeenCalledWith( expect.anything(), // state expect.any(String), // document title - expect.not.stringContaining('?'), // no params + expect.not.stringMatching(/group|title|y_label/), // no panel params ); }); }); @@ -359,6 +360,7 @@ describe('Dashboard', () => { beforeEach(() => { createShallowWrapper(); + setupAllDashboards(store); }); it('toggle star button is shown', () => { @@ -380,10 +382,7 @@ describe('Dashboard', () => { const getToggleTooltip = () => findToggleStar().element.parentElement.getAttribute('title'); beforeEach(() => { - wrapper.vm.$store.commit( - `monitoringDashboard/${types.SET_ALL_DASHBOARDS}`, - dashboardGitResponse, - ); + setupAllDashboards(store); jest.spyOn(store, 'dispatch'); }); @@ -400,7 +399,9 @@ describe('Dashboard', () => { describe('when dashboard is not starred', () => { beforeEach(() => { - wrapper.setProps({ currentDashboard: dashboardGitResponse[0].path }); + store.commit(`monitoringDashboard/${types.SET_INITIAL_STATE}`, { + currentDashboard: dashboardGitResponse[0].path, + }); return wrapper.vm.$nextTick(); }); @@ -415,7 +416,9 @@ describe('Dashboard', () => { describe('when dashboard is starred', () => { beforeEach(() => { - wrapper.setProps({ currentDashboard: dashboardGitResponse[1].path }); + store.commit(`monitoringDashboard/${types.SET_INITIAL_STATE}`, { + currentDashboard: dashboardGitResponse[1].path, + }); return wrapper.vm.$nextTick(); }); @@ -551,7 +554,7 @@ describe('Dashboard', () => { it('sets a link to the expanded panel', () => { const searchQuery = - '?group=System%20metrics%20(Kubernetes)&title=Memory%20Usage%20(Total)&y_label=Total%20Memory%20Used%20(GB)'; + '?dashboard=config%2Fprometheus%2Fcommon_metrics.yml&group=System%20metrics%20(Kubernetes)&title=Memory%20Usage%20(Total)&y_label=Total%20Memory%20Used%20(GB)'; expect(findExpandedPanel().attributes('clipboard-text')).toEqual( expect.stringContaining(searchQuery), @@ -808,10 +811,7 @@ describe('Dashboard', () => { beforeEach(() => { createShallowWrapper({ hasMetrics: true }); - wrapper.vm.$store.commit( - `monitoringDashboard/${types.SET_ALL_DASHBOARDS}`, - dashboardGitResponse, - ); + setupAllDashboards(store); return wrapper.vm.$nextTick(); }); @@ -820,10 +820,11 @@ describe('Dashboard', () => { }); it('is present for a custom dashboard, and links to its edit_path', () => { - const dashboard = dashboardGitResponse[1]; // non-default dashboard - const currentDashboard = dashboard.path; + const dashboard = dashboardGitResponse[1]; + store.commit(`monitoringDashboard/${types.SET_INITIAL_STATE}`, { + currentDashboard: dashboard.path, + }); - wrapper.setProps({ currentDashboard }); return wrapper.vm.$nextTick().then(() => { expect(findEditLink().exists()).toBe(true); expect(findEditLink().attributes('href')).toBe(dashboard.project_blob_path); @@ -834,12 +835,7 @@ describe('Dashboard', () => { describe('Dashboard dropdown', () => { beforeEach(() => { createMountedWrapper({ hasMetrics: true }); - - wrapper.vm.$store.commit( - `monitoringDashboard/${types.SET_ALL_DASHBOARDS}`, - dashboardGitResponse, - ); - + setupAllDashboards(store); return wrapper.vm.$nextTick(); }); @@ -872,7 +868,7 @@ describe('Dashboard', () => { }); describe('Clipboard text in panels', () => { - const currentDashboard = 'TEST_DASHBOARD'; + const currentDashboard = dashboardGitResponse[1].path; const panelIndex = 1; // skip expanded panel const getClipboardTextFirstPanel = () => @@ -882,37 +878,20 @@ describe('Dashboard', () => { .props('clipboardText'); beforeEach(() => { + setupStoreWithData(store); createShallowWrapper({ hasMetrics: true, currentDashboard }); - setupStoreWithData(wrapper.vm.$store); - return wrapper.vm.$nextTick(); }); it('contains a link to the dashboard', () => { - expect(getClipboardTextFirstPanel()).toContain(`dashboard=${currentDashboard}`); + const dashboardParam = `dashboard=${encodeURIComponent(currentDashboard)}`; + + expect(getClipboardTextFirstPanel()).toContain(dashboardParam); expect(getClipboardTextFirstPanel()).toContain(`group=`); expect(getClipboardTextFirstPanel()).toContain(`title=`); expect(getClipboardTextFirstPanel()).toContain(`y_label=`); }); - - it('strips the undefined parameter', () => { - wrapper.setProps({ currentDashboard: undefined }); - - return wrapper.vm.$nextTick(() => { - expect(getClipboardTextFirstPanel()).not.toContain(`dashboard=`); - expect(getClipboardTextFirstPanel()).toContain(`y_label=`); - }); - }); - - it('null parameter is stripped', () => { - wrapper.setProps({ currentDashboard: null }); - - return wrapper.vm.$nextTick(() => { - expect(getClipboardTextFirstPanel()).not.toContain(`dashboard=`); - expect(getClipboardTextFirstPanel()).toContain(`y_label=`); - }); - }); }); describe('add custom metrics', () => { diff --git a/spec/frontend/monitoring/components/dashboard_template_spec.js b/spec/frontend/monitoring/components/dashboard_template_spec.js index 0257515f18e..cc0ac348b11 100644 --- a/spec/frontend/monitoring/components/dashboard_template_spec.js +++ b/spec/frontend/monitoring/components/dashboard_template_spec.js @@ -3,6 +3,7 @@ import MockAdapter from 'axios-mock-adapter'; import axios from '~/lib/utils/axios_utils'; import Dashboard from '~/monitoring/components/dashboard.vue'; import { createStore } from '~/monitoring/stores'; +import { setupAllDashboards } from '../store_utils'; import { propsData } from '../mock_data'; jest.mock('~/lib/utils/url_utility'); @@ -15,6 +16,8 @@ describe('Dashboard template', () => { beforeEach(() => { store = createStore(); mock = new MockAdapter(axios); + + setupAllDashboards(store); }); afterEach(() => { diff --git a/spec/frontend/monitoring/store_utils.js b/spec/frontend/monitoring/store_utils.js index b3f87fb7abf..3cfd3baaee7 100644 --- a/spec/frontend/monitoring/store_utils.js +++ b/spec/frontend/monitoring/store_utils.js @@ -1,5 +1,5 @@ import * as types from '~/monitoring/stores/mutation_types'; -import { metricsResult, environmentData } from './mock_data'; +import { metricsResult, environmentData, dashboardGitResponse } from './mock_data'; import { metricsDashboardPayload } from './fixture_data'; export const setMetricResult = ({ $store, result, group = 0, panel = 0, metric = 0 }) => { @@ -16,11 +16,19 @@ const setEnvironmentData = $store => { $store.commit(`monitoringDashboard/${types.RECEIVE_ENVIRONMENTS_DATA_SUCCESS}`, environmentData); }; +export const setupAllDashboards = $store => { + $store.commit(`monitoringDashboard/${types.SET_ALL_DASHBOARDS}`, dashboardGitResponse); +}; + export const setupStoreWithDashboard = $store => { $store.commit( `monitoringDashboard/${types.RECEIVE_METRICS_DASHBOARD_SUCCESS}`, metricsDashboardPayload, ); + $store.commit( + `monitoringDashboard/${types.RECEIVE_METRICS_DASHBOARD_SUCCESS}`, + metricsDashboardPayload, + ); }; export const setupStoreWithVariable = $store => { @@ -30,6 +38,7 @@ export const setupStoreWithVariable = $store => { }; export const setupStoreWithData = $store => { + setupAllDashboards($store); setupStoreWithDashboard($store); setMetricResult({ $store, result: [], panel: 0 }); diff --git a/spec/frontend/notes/components/note_header_spec.js b/spec/frontend/notes/components/note_header_spec.js index 8cb78720c7e..9b9ce0a8ed0 100644 --- a/spec/frontend/notes/components/note_header_spec.js +++ b/spec/frontend/notes/components/note_header_spec.js @@ -2,7 +2,6 @@ import { shallowMount, createLocalVue } from '@vue/test-utils'; import { nextTick } from 'vue'; import Vuex from 'vuex'; import NoteHeader from '~/notes/components/note_header.vue'; -import GitlabTeamMemberBadge from '~/vue_shared/components/user_avatar/badges/gitlab_team_member_badge.vue'; const localVue = createLocalVue(); localVue.use(Vuex); @@ -141,20 +140,6 @@ describe('NoteHeader component', () => { }); }); - test.each` - props | expected | message1 | message2 - ${{ author: { ...author, is_gitlab_employee: true } }} | ${true} | ${'renders'} | ${'true'} - ${{ author: { ...author, is_gitlab_employee: false } }} | ${false} | ${"doesn't render"} | ${'false'} - ${{ author }} | ${false} | ${"doesn't render"} | ${'undefined'} - `( - '$message1 GitLab team member badge when `is_gitlab_employee` is $message2', - ({ props, expected }) => { - createComponent(props); - - expect(wrapper.find(GitlabTeamMemberBadge).exists()).toBe(expected); - }, - ); - describe('loading spinner', () => { it('shows spinner when showSpinner is true', () => { createComponent(); diff --git a/spec/frontend/releases/stores/modules/detail/mutations_spec.js b/spec/frontend/releases/stores/modules/detail/mutations_spec.js index 155390c2cee..f3f7ca797b4 100644 --- a/spec/frontend/releases/stores/modules/detail/mutations_spec.js +++ b/spec/frontend/releases/stores/modules/detail/mutations_spec.js @@ -20,7 +20,7 @@ describe('Release detail mutations', () => { release = convertObjectPropsToCamelCase(originalRelease); }); - describe(types.REQUEST_RELEASE, () => { + describe(`${types.REQUEST_RELEASE}`, () => { it('set state.isFetchingRelease to true', () => { mutations[types.REQUEST_RELEASE](state); @@ -28,7 +28,7 @@ describe('Release detail mutations', () => { }); }); - describe(types.RECEIVE_RELEASE_SUCCESS, () => { + describe(`${types.RECEIVE_RELEASE_SUCCESS}`, () => { it('handles a successful response from the server', () => { mutations[types.RECEIVE_RELEASE_SUCCESS](state, release); @@ -42,7 +42,7 @@ describe('Release detail mutations', () => { }); }); - describe(types.RECEIVE_RELEASE_ERROR, () => { + describe(`${types.RECEIVE_RELEASE_ERROR}`, () => { it('handles an unsuccessful response from the server', () => { const error = { message: 'An error occurred!' }; mutations[types.RECEIVE_RELEASE_ERROR](state, error); @@ -55,7 +55,7 @@ describe('Release detail mutations', () => { }); }); - describe(types.UPDATE_RELEASE_TITLE, () => { + describe(`${types.UPDATE_RELEASE_TITLE}`, () => { it("updates the release's title", () => { state.release = release; const newTitle = 'The new release title'; @@ -65,7 +65,7 @@ describe('Release detail mutations', () => { }); }); - describe(types.UPDATE_RELEASE_NOTES, () => { + describe(`${types.UPDATE_RELEASE_NOTES}`, () => { it("updates the release's notes", () => { state.release = release; const newNotes = 'The new release notes'; @@ -75,7 +75,7 @@ describe('Release detail mutations', () => { }); }); - describe(types.REQUEST_UPDATE_RELEASE, () => { + describe(`${types.REQUEST_UPDATE_RELEASE}`, () => { it('set state.isUpdatingRelease to true', () => { mutations[types.REQUEST_UPDATE_RELEASE](state); @@ -83,7 +83,7 @@ describe('Release detail mutations', () => { }); }); - describe(types.RECEIVE_UPDATE_RELEASE_SUCCESS, () => { + describe(`${types.RECEIVE_UPDATE_RELEASE_SUCCESS}`, () => { it('handles a successful response from the server', () => { mutations[types.RECEIVE_UPDATE_RELEASE_SUCCESS](state, release); @@ -93,7 +93,7 @@ describe('Release detail mutations', () => { }); }); - describe(types.RECEIVE_UPDATE_RELEASE_ERROR, () => { + describe(`${types.RECEIVE_UPDATE_RELEASE_ERROR}`, () => { it('handles an unsuccessful response from the server', () => { const error = { message: 'An error occurred!' }; mutations[types.RECEIVE_UPDATE_RELEASE_ERROR](state, error); @@ -104,7 +104,7 @@ describe('Release detail mutations', () => { }); }); - describe(types.ADD_EMPTY_ASSET_LINK, () => { + describe(`${types.ADD_EMPTY_ASSET_LINK}`, () => { it('adds a new, empty link object to the release', () => { state.release = release; @@ -123,7 +123,7 @@ describe('Release detail mutations', () => { }); }); - describe(types.UPDATE_ASSET_LINK_URL, () => { + describe(`${types.UPDATE_ASSET_LINK_URL}`, () => { it('updates an asset link with a new URL', () => { state.release = release; @@ -138,7 +138,7 @@ describe('Release detail mutations', () => { }); }); - describe(types.UPDATE_ASSET_LINK_NAME, () => { + describe(`${types.UPDATE_ASSET_LINK_NAME}`, () => { it('updates an asset link with a new name', () => { state.release = release; @@ -153,7 +153,7 @@ describe('Release detail mutations', () => { }); }); - describe(types.REMOVE_ASSET_LINK, () => { + describe(`${types.REMOVE_ASSET_LINK}`, () => { it('removes an asset link from the release', () => { state.release = release; |