diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-21 10:08:36 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-21 10:08:36 +0300 |
commit | 48aff82709769b098321c738f3444b9bdaa694c6 (patch) | |
tree | e00c7c43e2d9b603a5a6af576b1685e400410dee /spec/frontend/environments | |
parent | 879f5329ee916a948223f8f43d77fba4da6cd028 (diff) |
Add latest changes from gitlab-org/gitlab@13-5-stable-eev13.5.0-rc42
Diffstat (limited to 'spec/frontend/environments')
-rw-r--r-- | spec/frontend/environments/enable_review_app_modal_spec.js (renamed from spec/frontend/environments/enable_review_app_button_spec.js) | 20 | ||||
-rw-r--r-- | spec/frontend/environments/environment_actions_spec.js | 15 | ||||
-rw-r--r-- | spec/frontend/environments/environments_app_spec.js | 99 | ||||
-rw-r--r-- | spec/frontend/environments/folder/environments_folder_view_spec.js | 17 |
4 files changed, 111 insertions, 40 deletions
diff --git a/spec/frontend/environments/enable_review_app_button_spec.js b/spec/frontend/environments/enable_review_app_modal_spec.js index 5549a1737fc..7ea49a6e1d0 100644 --- a/spec/frontend/environments/enable_review_app_button_spec.js +++ b/spec/frontend/environments/enable_review_app_modal_spec.js @@ -1,6 +1,6 @@ -import { shallowMount, mount } from '@vue/test-utils'; +import { shallowMount } from '@vue/test-utils'; import ModalCopyButton from '~/vue_shared/components/modal_copy_button.vue'; -import EnableReviewAppButton from '~/environments/components/enable_review_app_button.vue'; +import EnableReviewAppButton from '~/environments/components/enable_review_app_modal.vue'; describe('Enable Review App Button', () => { let wrapper; @@ -9,19 +9,13 @@ describe('Enable Review App Button', () => { wrapper.destroy(); }); - describe('renders button with text', () => { - beforeEach(() => { - wrapper = mount(EnableReviewAppButton); - }); - - it('renders Enable Review text', () => { - expect(wrapper.text()).toBe('Enable review app'); - }); - }); - describe('renders the modal', () => { beforeEach(() => { - wrapper = shallowMount(EnableReviewAppButton); + wrapper = shallowMount(EnableReviewAppButton, { + propsData: { + modalId: 'fake-id', + }, + }); }); it('renders the copyToClipboard button', () => { diff --git a/spec/frontend/environments/environment_actions_spec.js b/spec/frontend/environments/environment_actions_spec.js index ebdc4923045..d305f5e90bd 100644 --- a/spec/frontend/environments/environment_actions_spec.js +++ b/spec/frontend/environments/environment_actions_spec.js @@ -1,14 +1,22 @@ import { shallowMount } from '@vue/test-utils'; import { TEST_HOST } from 'helpers/test_constants'; import { GlLoadingIcon, GlIcon } from '@gitlab/ui'; +import { createMockDirective, getBinding } from 'helpers/vue_mock_directive'; import eventHub from '~/environments/event_hub'; import EnvironmentActions from '~/environments/components/environment_actions.vue'; describe('EnvironmentActions Component', () => { let vm; + const findEnvironmentActionsButton = () => vm.find('[data-testid="environment-actions-button"]'); + beforeEach(() => { - vm = shallowMount(EnvironmentActions, { propsData: { actions: [] } }); + vm = shallowMount(EnvironmentActions, { + propsData: { actions: [] }, + directives: { + GlTooltip: createMockDirective(), + }, + }); }); afterEach(() => { @@ -23,6 +31,11 @@ describe('EnvironmentActions Component', () => { expect(vm.find('.dropdown-new').attributes('aria-label')).toEqual('Deploy to...'); }); + it('should render a tooltip', () => { + const tooltip = getBinding(findEnvironmentActionsButton().element, 'gl-tooltip'); + expect(tooltip).toBeDefined(); + }); + describe('is loading', () => { beforeEach(() => { vm.setData({ isLoading: true }); diff --git a/spec/frontend/environments/environments_app_spec.js b/spec/frontend/environments/environments_app_spec.js index fe32bf918dd..bb114e31063 100644 --- a/spec/frontend/environments/environments_app_spec.js +++ b/spec/frontend/environments/environments_app_spec.js @@ -1,9 +1,11 @@ import { mount, shallowMount } from '@vue/test-utils'; import MockAdapter from 'axios-mock-adapter'; -import axios from '~/lib/utils/axios_utils'; +import { extendedWrapper } from 'helpers/vue_test_utils_helper'; +import EnableReviewAppModal from '~/environments/components/enable_review_app_modal.vue'; import Container from '~/environments/components/container.vue'; import EmptyState from '~/environments/components/empty_state.vue'; import EnvironmentsApp from '~/environments/components/environments_app.vue'; +import axios from '~/lib/utils/axios_utils'; import { environment, folder } from './mock_data'; describe('Environment', () => { @@ -34,12 +36,18 @@ describe('Environment', () => { }); }; - const createWrapper = (shallow = false) => { + const createWrapper = (shallow = false, props = {}) => { const fn = shallow ? shallowMount : mount; - wrapper = fn(EnvironmentsApp, { propsData: mockData }); + wrapper = extendedWrapper(fn(EnvironmentsApp, { propsData: { ...mockData, ...props } })); return axios.waitForAll(); }; + const findEnableReviewAppButton = () => wrapper.findByTestId('enable-review-app'); + const findEnableReviewAppModal = () => wrapper.findAll(EnableReviewAppModal); + const findNewEnvironmentButton = () => wrapper.findByTestId('new-environment'); + const findEnvironmentsTabAvailable = () => wrapper.find('.js-environments-tab-available > a'); + const findEnvironmentsTabStopped = () => wrapper.find('.js-environments-tab-stopped > a'); + beforeEach(() => { mock = new MockAdapter(axios); }); @@ -59,19 +67,6 @@ describe('Environment', () => { it('should render the empty state', () => { expect(wrapper.find(EmptyState).exists()).toBe(true); }); - - describe('when it is possible to enable a review app', () => { - beforeEach(() => { - mockRequest(200, { environments: [], review_app: { can_setup_review_app: true } }); - return createWrapper(); - }); - - it('should render the enable review app button', () => { - expect(wrapper.find('.js-enable-review-app-button').text()).toContain( - 'Enable review app', - ); - }); - }); }); describe('with paginated environments', () => { @@ -86,7 +81,7 @@ describe('Environment', () => { return createWrapper(); }); - it('should render a conatiner table with environments', () => { + it('should render a container table with environments', () => { const containerTable = wrapper.find(Container); expect(containerTable.exists()).toBe(true); @@ -108,9 +103,16 @@ describe('Environment', () => { it('should make an API request when using tabs', () => { jest.spyOn(wrapper.vm, 'updateContent').mockImplementation(() => {}); - wrapper.find('.js-environments-tab-stopped').trigger('click'); + findEnvironmentsTabStopped().trigger('click'); expect(wrapper.vm.updateContent).toHaveBeenCalledWith({ scope: 'stopped', page: '1' }); }); + + it('should not make the same API request when clicking on the current scope tab', () => { + // component starts at available + jest.spyOn(wrapper.vm, 'updateContent').mockImplementation(() => {}); + findEnvironmentsTabAvailable().trigger('click'); + expect(wrapper.vm.updateContent).toHaveBeenCalledTimes(0); + }); }); }); }); @@ -165,4 +167,65 @@ describe('Environment', () => { expect(wrapper.find('.text-center > a.btn').text()).toContain('Show all'); }); }); + + describe('environment button', () => { + describe('when user can create environment', () => { + beforeEach(() => { + mockRequest(200, { environments: [] }); + return createWrapper(true); + }); + + it('should render', () => { + expect(findNewEnvironmentButton().exists()).toBe(true); + }); + }); + + describe('when user can not create environment', () => { + beforeEach(() => { + mockRequest(200, { environments: [] }); + return createWrapper(true, { ...mockData, canCreateEnvironment: false }); + }); + + it('should not render', () => { + expect(findNewEnvironmentButton().exists()).toBe(false); + }); + }); + }); + + describe('review app modal', () => { + describe('when it is not possible to enable a review app', () => { + beforeEach(() => { + mockRequest(200, { environments: [] }); + return createWrapper(true); + }); + + it('should not render the enable review app button', () => { + expect(findEnableReviewAppButton().exists()).toBe(false); + }); + + it('should not render a review app modal', () => { + const modal = findEnableReviewAppModal(); + expect(modal).toHaveLength(0); + expect(modal.exists()).toBe(false); + }); + }); + + describe('when it is possible to enable a review app', () => { + beforeEach(() => { + mockRequest(200, { environments: [], review_app: { can_setup_review_app: true } }); + return createWrapper(true); + }); + + it('should render the enable review app button', () => { + expect(findEnableReviewAppButton().exists()).toBe(true); + expect(findEnableReviewAppButton().text()).toContain('Enable review app'); + }); + + it('should render only one review app modal', () => { + const modal = findEnableReviewAppModal(); + expect(modal).toHaveLength(1); + expect(modal.at(0).exists()).toBe(true); + }); + }); + }); }); diff --git a/spec/frontend/environments/folder/environments_folder_view_spec.js b/spec/frontend/environments/folder/environments_folder_view_spec.js index f33c8de0094..f55cb851dde 100644 --- a/spec/frontend/environments/folder/environments_folder_view_spec.js +++ b/spec/frontend/environments/folder/environments_folder_view_spec.js @@ -1,10 +1,10 @@ +import { GlPagination } from '@gitlab/ui'; import { mount } from '@vue/test-utils'; import MockAdapter from 'axios-mock-adapter'; import { removeBreakLine, removeWhitespace } from 'helpers/text_helper'; -import { GlPagination } from '@gitlab/ui'; -import axios from '~/lib/utils/axios_utils'; -import EnvironmentsFolderViewComponent from '~/environments/folder/environments_folder_view.vue'; import EnvironmentTable from '~/environments/components/environments_table.vue'; +import EnvironmentsFolderViewComponent from '~/environments/folder/environments_folder_view.vue'; +import axios from '~/lib/utils/axios_utils'; import { environmentsList } from '../mock_data'; describe('Environments Folder View', () => { @@ -46,9 +46,10 @@ describe('Environments Folder View', () => { wrapper = mount(EnvironmentsFolderViewComponent, { propsData: mockData }); }; - const findEnvironmentsTabAvailable = () => wrapper.find('.js-environments-tab-available'); + const findEnvironmentsTabAvailable = () => + wrapper.find('[data-testid="environments-tab-available"]'); - const findEnvironmentsTabStopped = () => wrapper.find('.js-environments-tab-stopped'); + const findEnvironmentsTabStopped = () => wrapper.find('[data-testid="environments-tab-stopped"]'); beforeEach(() => { mock = new MockAdapter(axios); @@ -88,9 +89,9 @@ describe('Environments Folder View', () => { }); it('should render parent folder name', () => { - expect(removeBreakLine(removeWhitespace(wrapper.find('.js-folder-name').text()))).toContain( - 'Environments / review', - ); + expect( + removeBreakLine(removeWhitespace(wrapper.find('[data-testid="folder-name"]').text())), + ).toContain('Environments / review'); }); describe('pagination', () => { |