diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-20 14:10:13 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-20 14:10:13 +0300 |
commit | 0ea3fcec397b69815975647f5e2aa5fe944a8486 (patch) | |
tree | 7979381b89d26011bcf9bdc989a40fcc2f1ed4ff /spec/frontend/admin | |
parent | 72123183a20411a36d607d70b12d57c484394c8e (diff) |
Add latest changes from gitlab-org/gitlab@15-1-stable-eev15.1.0-rc42
Diffstat (limited to 'spec/frontend/admin')
-rw-r--r-- | spec/frontend/admin/application_settings/inactive_project_deletion/components/form_spec.js | 148 | ||||
-rw-r--r-- | spec/frontend/admin/users/index_spec.js | 8 |
2 files changed, 152 insertions, 4 deletions
diff --git a/spec/frontend/admin/application_settings/inactive_project_deletion/components/form_spec.js b/spec/frontend/admin/application_settings/inactive_project_deletion/components/form_spec.js new file mode 100644 index 00000000000..2db997942a7 --- /dev/null +++ b/spec/frontend/admin/application_settings/inactive_project_deletion/components/form_spec.js @@ -0,0 +1,148 @@ +import { GlFormCheckbox } from '@gitlab/ui'; +import { shallowMountExtended, mountExtended } from 'helpers/vue_test_utils_helper'; +import SettingsForm from '~/admin/application_settings/inactive_project_deletion/components/form.vue'; + +describe('Form component', () => { + let wrapper; + + const findEnabledCheckbox = () => wrapper.findComponent(GlFormCheckbox); + const findProjectDeletionSettings = () => + wrapper.findByTestId('inactive-project-deletion-settings'); + const findMinSizeGroup = () => wrapper.findByTestId('min-size-group'); + const findMinSizeInputGroup = () => wrapper.findByTestId('min-size-input-group'); + const findMinSizeInput = () => wrapper.findByTestId('min-size-input'); + const findDeleteAfterMonthsGroup = () => wrapper.findByTestId('delete-after-months-group'); + const findDeleteAfterMonthsInputGroup = () => + wrapper.findByTestId('delete-after-months-input-group'); + const findDeleteAfterMonthsInput = () => wrapper.findByTestId('delete-after-months-input'); + const findSendWarningEmailAfterMonthsGroup = () => + wrapper.findByTestId('send-warning-email-after-months-group'); + const findSendWarningEmailAfterMonthsInputGroup = () => + wrapper.findByTestId('send-warning-email-after-months-input-group'); + const findSendWarningEmailAfterMonthsInput = () => + wrapper.findByTestId('send-warning-email-after-months-input'); + + const createComponent = ( + mountFn = shallowMountExtended, + propsData = { deleteInactiveProjects: true }, + ) => { + wrapper = mountFn(SettingsForm, { propsData }); + }; + + afterEach(() => { + wrapper.destroy(); + }); + + describe('Enable inactive project deletion', () => { + it('has the checkbox', () => { + createComponent(); + + expect(findEnabledCheckbox().exists()).toBe(true); + }); + + it.each([[true], [false]])( + 'when the checkbox is %s then the project deletion settings visibility is set to %s', + (visible) => { + createComponent(shallowMountExtended, { deleteInactiveProjects: visible }); + + expect(findProjectDeletionSettings().exists()).toBe(visible); + }, + ); + }); + + describe('Minimum size for deletion', () => { + beforeEach(() => { + createComponent(mountExtended); + }); + + it('has the minimum size input', () => { + expect(findMinSizeInput().exists()).toBe(true); + }); + + it('has the field description', () => { + expect(findMinSizeGroup().text()).toContain('Delete inactive projects that exceed'); + }); + + it('has the appended text on the field', () => { + expect(findMinSizeInputGroup().text()).toContain('MB'); + }); + + it.each` + value | valid + ${'0'} | ${true} + ${'250'} | ${true} + ${'-1'} | ${false} + `( + 'when the minimum size input has a value of $value, then its validity should be $valid', + async ({ value, valid }) => { + await findMinSizeInput().find('input').setValue(value); + + expect(findMinSizeGroup().classes('is-valid')).toBe(valid); + expect(findMinSizeInput().classes('is-valid')).toBe(valid); + }, + ); + }); + + describe('Delete project after', () => { + beforeEach(() => { + createComponent(mountExtended); + }); + + it('has the delete after months input', () => { + expect(findDeleteAfterMonthsInput().exists()).toBe(true); + }); + + it('has the appended text on the field', () => { + expect(findDeleteAfterMonthsInputGroup().text()).toContain('months'); + }); + + it.each` + value | valid + ${'0'} | ${false} + ${'1'} | ${false /* Less than the default send warning email months */} + ${'2'} | ${true} + `( + 'when the delete after months input has a value of $value, then its validity should be $valid', + async ({ value, valid }) => { + await findDeleteAfterMonthsInput().find('input').setValue(value); + + expect(findDeleteAfterMonthsGroup().classes('is-valid')).toBe(valid); + expect(findDeleteAfterMonthsInput().classes('is-valid')).toBe(valid); + }, + ); + }); + + describe('Send warning email', () => { + beforeEach(() => { + createComponent(mountExtended); + }); + + it('has the send warning email after months input', () => { + expect(findSendWarningEmailAfterMonthsInput().exists()).toBe(true); + }); + + it('has the field description', () => { + expect(findSendWarningEmailAfterMonthsGroup().text()).toContain( + 'Send email to maintainers after project is inactive for', + ); + }); + + it('has the appended text on the field', () => { + expect(findSendWarningEmailAfterMonthsInputGroup().text()).toContain('months'); + }); + + it.each` + value | valid + ${'2'} | ${true} + ${'0'} | ${false} + `( + 'when the minimum size input has a value of $value, then its validity should be $valid', + async ({ value, valid }) => { + await findSendWarningEmailAfterMonthsInput().find('input').setValue(value); + + expect(findSendWarningEmailAfterMonthsGroup().classes('is-valid')).toBe(valid); + expect(findSendWarningEmailAfterMonthsInput().classes('is-valid')).toBe(valid); + }, + ); + }); +}); diff --git a/spec/frontend/admin/users/index_spec.js b/spec/frontend/admin/users/index_spec.js index 06dbadd6d3d..961fa96acdd 100644 --- a/spec/frontend/admin/users/index_spec.js +++ b/spec/frontend/admin/users/index_spec.js @@ -12,8 +12,8 @@ describe('initAdminUsersApp', () => { beforeEach(() => { el = document.createElement('div'); - el.setAttribute('data-users', JSON.stringify(users)); - el.setAttribute('data-paths', JSON.stringify(paths)); + el.dataset.users = JSON.stringify(users); + el.dataset.paths = JSON.stringify(paths); wrapper = createWrapper(initAdminUsersApp(el)); }); @@ -40,8 +40,8 @@ describe('initAdminUserActions', () => { beforeEach(() => { el = document.createElement('div'); - el.setAttribute('data-user', JSON.stringify(user)); - el.setAttribute('data-paths', JSON.stringify(paths)); + el.dataset.user = JSON.stringify(user); + el.dataset.paths = JSON.stringify(paths); wrapper = createWrapper(initAdminUserActions(el)); }); |