diff options
Diffstat (limited to 'spec/frontend/pages/projects')
5 files changed, 70 insertions, 48 deletions
diff --git a/spec/frontend/pages/projects/forks/new/components/fork_groups_list_spec.js b/spec/frontend/pages/projects/forks/new/components/fork_groups_list_spec.js index 979dff78eba..2ec608569e3 100644 --- a/spec/frontend/pages/projects/forks/new/components/fork_groups_list_spec.js +++ b/spec/frontend/pages/projects/forks/new/components/fork_groups_list_spec.js @@ -1,14 +1,14 @@ import AxiosMockAdapter from 'axios-mock-adapter'; -import axios from '~/lib/utils/axios_utils'; import { shallowMount } from '@vue/test-utils'; import { GlLoadingIcon, GlSearchBoxByType } from '@gitlab/ui'; import { nextTick } from 'vue'; -import createFlash from '~/flash'; +import waitForPromises from 'helpers/wait_for_promises'; +import axios from '~/lib/utils/axios_utils'; +import { deprecatedCreateFlash as createFlash } from '~/flash'; import ForkGroupsList from '~/pages/projects/forks/new/components/fork_groups_list.vue'; import ForkGroupsListItem from '~/pages/projects/forks/new/components/fork_groups_list_item.vue'; -import waitForPromises from 'helpers/wait_for_promises'; -jest.mock('~/flash', () => jest.fn()); +jest.mock('~/flash'); describe('Fork groups list component', () => { let wrapper; diff --git a/spec/frontend/pages/projects/graphs/__snapshots__/code_coverage_spec.js.snap b/spec/frontend/pages/projects/graphs/__snapshots__/code_coverage_spec.js.snap index 94089ea922b..211f4ea20f5 100644 --- a/spec/frontend/pages/projects/graphs/__snapshots__/code_coverage_spec.js.snap +++ b/spec/frontend/pages/projects/graphs/__snapshots__/code_coverage_spec.js.snap @@ -9,10 +9,10 @@ exports[`Code Coverage when fetching data is successful matches the snapshot 1`] <!----> - <gl-dropdown-stub + <gl-deprecated-dropdown-stub text="rspec" > - <gl-dropdown-item-stub + <gl-deprecated-dropdown-item-stub value="rspec" > <div @@ -32,8 +32,8 @@ exports[`Code Coverage when fetching data is successful matches the snapshot 1`] </span> </div> - </gl-dropdown-item-stub> - <gl-dropdown-item-stub + </gl-deprecated-dropdown-item-stub> + <gl-deprecated-dropdown-item-stub value="cypress" > <div @@ -49,8 +49,8 @@ exports[`Code Coverage when fetching data is successful matches the snapshot 1`] </span> </div> - </gl-dropdown-item-stub> - <gl-dropdown-item-stub + </gl-deprecated-dropdown-item-stub> + <gl-deprecated-dropdown-item-stub value="karma" > <div @@ -66,8 +66,8 @@ exports[`Code Coverage when fetching data is successful matches the snapshot 1`] </span> </div> - </gl-dropdown-item-stub> - </gl-dropdown-stub> + </gl-deprecated-dropdown-item-stub> + </gl-deprecated-dropdown-stub> </div> <gl-area-chart-stub diff --git a/spec/frontend/pages/projects/graphs/code_coverage_spec.js b/spec/frontend/pages/projects/graphs/code_coverage_spec.js index 30c7ff78c6e..54a080fb62b 100644 --- a/spec/frontend/pages/projects/graphs/code_coverage_spec.js +++ b/spec/frontend/pages/projects/graphs/code_coverage_spec.js @@ -1,12 +1,12 @@ import MockAdapter from 'axios-mock-adapter'; import { shallowMount } from '@vue/test-utils'; -import { GlAlert, GlIcon, GlDropdown, GlDropdownItem } from '@gitlab/ui'; +import { GlAlert, GlIcon, GlDeprecatedDropdown, GlDeprecatedDropdownItem } from '@gitlab/ui'; import { GlAreaChart } from '@gitlab/ui/dist/charts'; +import waitForPromises from 'helpers/wait_for_promises'; import axios from '~/lib/utils/axios_utils'; import CodeCoverage from '~/pages/projects/graphs/components/code_coverage.vue'; import { codeCoverageMockData, sortedDataByDates } from './mock_data'; -import waitForPromises from 'helpers/wait_for_promises'; import httpStatusCodes from '~/lib/utils/http_status'; describe('Code Coverage', () => { @@ -17,7 +17,7 @@ describe('Code Coverage', () => { const findAlert = () => wrapper.find(GlAlert); const findAreaChart = () => wrapper.find(GlAreaChart); - const findAllDropdownItems = () => wrapper.findAll(GlDropdownItem); + const findAllDropdownItems = () => wrapper.findAll(GlDeprecatedDropdownItem); const findFirstDropdownItem = () => findAllDropdownItems().at(0); const findSecondDropdownItem = () => findAllDropdownItems().at(1); @@ -124,7 +124,7 @@ describe('Code Coverage', () => { }); it('renders the dropdown with all custom names as options', () => { - expect(wrapper.contains(GlDropdown)).toBeDefined(); + expect(wrapper.contains(GlDeprecatedDropdown)).toBeDefined(); expect(findAllDropdownItems()).toHaveLength(codeCoverageMockData.length); expect(findFirstDropdownItem().text()).toBe(codeCoverageMockData[0].group_name); }); diff --git a/spec/frontend/pages/projects/pipeline_schedules/shared/components/timezone_dropdown_spec.js b/spec/frontend/pages/projects/pipeline_schedules/shared/components/timezone_dropdown_spec.js index 8917251d285..4c73225b54c 100644 --- a/spec/frontend/pages/projects/pipeline_schedules/shared/components/timezone_dropdown_spec.js +++ b/spec/frontend/pages/projects/pipeline_schedules/shared/components/timezone_dropdown_spec.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import GLDropdown from '~/gl_dropdown'; // eslint-disable-line no-unused-vars +import '~/gl_dropdown'; import TimezoneDropdown, { formatUtcOffset, formatTimezone, diff --git a/spec/frontend/pages/projects/shared/permissions/components/settings_panel_spec.js b/spec/frontend/pages/projects/shared/permissions/components/settings_panel_spec.js index 1f7eec567b8..a50ceed5d09 100644 --- a/spec/frontend/pages/projects/shared/permissions/components/settings_panel_spec.js +++ b/spec/frontend/pages/projects/shared/permissions/components/settings_panel_spec.js @@ -6,6 +6,8 @@ import { visibilityLevelDescriptions, visibilityOptions, } from '~/pages/projects/shared/permissions/constants'; +import projectFeatureSetting from '~/pages/projects/shared/permissions/components/project_feature_setting.vue'; +import projectFeatureToggle from '~/vue_shared/components/toggle_button.vue'; const defaultProps = { currentSettings: { @@ -65,7 +67,13 @@ describe('Settings Panel', () => { return mountComponent({ ...extraProps, currentSettings: currentSettingsProps }); }; - const findLFSSettingsMessage = () => wrapper.find({ ref: 'git-lfs-settings' }).find('p'); + const findLFSSettingsRow = () => wrapper.find({ ref: 'git-lfs-settings' }); + const findLFSSettingsMessage = () => findLFSSettingsRow().find('p'); + const findLFSFeatureToggle = () => findLFSSettingsRow().find(projectFeatureToggle); + + const findRepositoryFeatureProjectRow = () => wrapper.find({ ref: 'repository-settings' }); + const findRepositoryFeatureSetting = () => + findRepositoryFeatureProjectRow().find(projectFeatureSetting); beforeEach(() => { wrapper = mountComponent(); @@ -154,7 +162,7 @@ describe('Settings Panel', () => { it('should set the repository help text when the visibility level is set to private', () => { wrapper = overrideCurrentSettings({ visibilityLevel: visibilityOptions.PRIVATE }); - expect(wrapper.find({ ref: 'repository-settings' }).props().helpText).toEqual( + expect(findRepositoryFeatureProjectRow().props().helpText).toBe( 'View and edit files in this project', ); }); @@ -162,7 +170,7 @@ describe('Settings Panel', () => { it('should set the repository help text with a read access warning when the visibility level is set to non-private', () => { wrapper = overrideCurrentSettings({ visibilityLevel: visibilityOptions.PUBLIC }); - expect(wrapper.find({ ref: 'repository-settings' }).props().helpText).toEqual( + expect(findRepositoryFeatureProjectRow().props().helpText).toBe( 'View and edit files in this project. Non-project members will only have read access', ); }); @@ -176,7 +184,7 @@ describe('Settings Panel', () => { wrapper .find('[name="project[project_feature_attributes][merge_requests_access_level]"]') .props().disabledInput, - ).toEqual(false); + ).toBe(false); }); it('should disable the merge requests access level input when the repository is disabled', () => { @@ -186,7 +194,7 @@ describe('Settings Panel', () => { wrapper .find('[name="project[project_feature_attributes][merge_requests_access_level]"]') .props().disabledInput, - ).toEqual(true); + ).toBe(true); }); }); @@ -197,7 +205,7 @@ describe('Settings Panel', () => { expect( wrapper.find('[name="project[project_feature_attributes][forking_access_level]"]').props() .disabledInput, - ).toEqual(false); + ).toBe(false); }); it('should disable the forking access level input when the repository is disabled', () => { @@ -206,7 +214,7 @@ describe('Settings Panel', () => { expect( wrapper.find('[name="project[project_feature_attributes][forking_access_level]"]').props() .disabledInput, - ).toEqual(true); + ).toBe(true); }); }); @@ -217,7 +225,7 @@ describe('Settings Panel', () => { expect( wrapper.find('[name="project[project_feature_attributes][builds_access_level]"]').props() .disabledInput, - ).toEqual(false); + ).toBe(false); }); it('should disable the builds access level input when the repository is disabled', () => { @@ -226,7 +234,7 @@ describe('Settings Panel', () => { expect( wrapper.find('[name="project[project_feature_attributes][builds_access_level]"]').props() .disabledInput, - ).toEqual(true); + ).toBe(true); }); }); @@ -287,7 +295,7 @@ describe('Settings Panel', () => { expect( wrapper.find('[name="project[container_registry_enabled]"]').props().disabledInput, - ).toEqual(false); + ).toBe(false); }); it('should disable the container registry input when the repository is disabled', () => { @@ -298,7 +306,7 @@ describe('Settings Panel', () => { expect( wrapper.find('[name="project[container_registry_enabled]"]').props().disabledInput, - ).toEqual(true); + ).toBe(true); }); }); @@ -307,7 +315,7 @@ describe('Settings Panel', () => { wrapper.setProps({ lfsAvailable: true }); return wrapper.vm.$nextTick(() => { - expect(wrapper.find({ ref: 'git-lfs-settings' }).exists()).toEqual(true); + expect(findLFSSettingsRow().exists()).toBe(true); }); }); @@ -315,14 +323,12 @@ describe('Settings Panel', () => { wrapper.setProps({ lfsAvailable: false }); return wrapper.vm.$nextTick(() => { - expect(wrapper.find({ ref: 'git-lfs-settings' }).exists()).toEqual(false); + expect(findLFSSettingsRow().exists()).toBe(false); }); }); it('should set the LFS settings help path', () => { - expect(wrapper.find({ ref: 'git-lfs-settings' }).props().helpPath).toBe( - defaultProps.lfsHelpPath, - ); + expect(findLFSSettingsRow().props().helpPath).toBe(defaultProps.lfsHelpPath); }); it('should enable the LFS input when the repository is enabled', () => { @@ -331,7 +337,7 @@ describe('Settings Panel', () => { { lfsAvailable: true }, ); - expect(wrapper.find('[name="project[lfs_enabled]"]').props().disabledInput).toEqual(false); + expect(findLFSFeatureToggle().props().disabledInput).toBe(false); }); it('should disable the LFS input when the repository is disabled', () => { @@ -340,7 +346,27 @@ describe('Settings Panel', () => { { lfsAvailable: true }, ); - expect(wrapper.find('[name="project[lfs_enabled]"]').props().disabledInput).toEqual(true); + expect(findLFSFeatureToggle().props().disabledInput).toBe(true); + }); + + it('should not change lfsEnabled when disabling the repository', async () => { + // mount over shallowMount, because we are aiming to test rendered state of toggle + wrapper = mountComponent({ currentSettings: { lfsEnabled: true } }, mount); + + const repositoryFeatureToggleButton = findRepositoryFeatureSetting().find('button'); + const lfsFeatureToggleButton = findLFSFeatureToggle().find('button'); + const isToggleButtonChecked = toggleButton => toggleButton.classes('is-checked'); + + // assert the initial state + expect(isToggleButtonChecked(lfsFeatureToggleButton)).toBe(true); + expect(isToggleButtonChecked(repositoryFeatureToggleButton)).toBe(true); + + repositoryFeatureToggleButton.trigger('click'); + await wrapper.vm.$nextTick(); + + expect(isToggleButtonChecked(repositoryFeatureToggleButton)).toBe(false); + // LFS toggle should still be checked + expect(isToggleButtonChecked(lfsFeatureToggleButton)).toBe(true); }); describe.each` @@ -364,14 +390,14 @@ describe('Settings Panel', () => { expect(message.text()).toContain( 'LFS objects from this repository are still available to forks', ); - expect(link.text()).toEqual('How do I remove them?'); - expect(link.attributes('href')).toEqual( + expect(link.text()).toBe('How do I remove them?'); + expect(link.attributes('href')).toBe( '/help/topics/git/lfs/index#removing-objects-from-lfs', ); }); } else { it('does not show warning message', () => { - expect(findLFSSettingsMessage().exists()).toEqual(false); + expect(findLFSSettingsMessage().exists()).toBe(false); }); } }, @@ -383,7 +409,7 @@ describe('Settings Panel', () => { wrapper.setProps({ packagesAvailable: true }); return wrapper.vm.$nextTick(() => { - expect(wrapper.find({ ref: 'package-settings' }).exists()).toEqual(true); + expect(wrapper.find({ ref: 'package-settings' }).exists()).toBe(true); }); }); @@ -391,7 +417,7 @@ describe('Settings Panel', () => { wrapper.setProps({ packagesAvailable: false }); return wrapper.vm.$nextTick(() => { - expect(wrapper.find({ ref: 'package-settings' }).exists()).toEqual(false); + expect(wrapper.find({ ref: 'package-settings' }).exists()).toBe(false); }); }); @@ -411,9 +437,7 @@ describe('Settings Panel', () => { { packagesAvailable: true }, ); - expect(wrapper.find('[name="project[packages_enabled]"]').props().disabledInput).toEqual( - false, - ); + expect(wrapper.find('[name="project[packages_enabled]"]').props().disabledInput).toBe(false); }); it('should disable the packages input when the repository is disabled', () => { @@ -422,9 +446,7 @@ describe('Settings Panel', () => { { packagesAvailable: true }, ); - expect(wrapper.find('[name="project[packages_enabled]"]').props().disabledInput).toEqual( - true, - ); + expect(wrapper.find('[name="project[packages_enabled]"]').props().disabledInput).toBe(true); }); }); @@ -503,7 +525,7 @@ describe('Settings Panel', () => { }); it('should contain help text', () => { - expect(wrapper.find({ ref: 'metrics-visibility-settings' }).props().helpText).toEqual( + expect(wrapper.find({ ref: 'metrics-visibility-settings' }).props().helpText).toBe( 'With Metrics Dashboard you can visualize this project performance metrics', ); }); @@ -514,7 +536,7 @@ describe('Settings Panel', () => { const metricsSettingsRow = wrapper.find({ ref: 'metrics-visibility-settings' }); expect(wrapper.vm.metricsOptionsDropdownEnabled).toBe(true); - expect(metricsSettingsRow.find('select').attributes('disabled')).toEqual('disabled'); + expect(metricsSettingsRow.find('select').attributes('disabled')).toBe('disabled'); }); }); }); |