summaryrefslogtreecommitdiff
path: root/spec/frontend/packages_and_registries/settings/group/components/package_settings_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/packages_and_registries/settings/group/components/package_settings_spec.js')
-rw-r--r--spec/frontend/packages_and_registries/settings/group/components/package_settings_spec.js115
1 files changed, 79 insertions, 36 deletions
diff --git a/spec/frontend/packages_and_registries/settings/group/components/package_settings_spec.js b/spec/frontend/packages_and_registries/settings/group/components/package_settings_spec.js
index 274930ce668..13eba39ec8c 100644
--- a/spec/frontend/packages_and_registries/settings/group/components/package_settings_spec.js
+++ b/spec/frontend/packages_and_registries/settings/group/components/package_settings_spec.js
@@ -1,13 +1,13 @@
import Vue, { nextTick } from 'vue';
+import { GlToggle } from '@gitlab/ui';
import VueApollo from 'vue-apollo';
-import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
+import { mountExtended, shallowMountExtended } from 'helpers/vue_test_utils_helper';
import createMockApollo from 'helpers/mock_apollo_helper';
import waitForPromises from 'helpers/wait_for_promises';
-import DuplicatesSettings from '~/packages_and_registries/settings/group/components/duplicates_settings.vue';
-import GenericSettings from '~/packages_and_registries/settings/group/components/generic_settings.vue';
+import ExceptionsInput from '~/packages_and_registries/settings/group/components/exceptions_input.vue';
import component from '~/packages_and_registries/settings/group/components/packages_settings.vue';
-import MavenSettings from '~/packages_and_registries/settings/group/components/maven_settings.vue';
import {
+ DUPLICATES_TOGGLE_LABEL,
PACKAGE_SETTINGS_HEADER,
PACKAGE_SETTINGS_DESCRIPTION,
} from '~/packages_and_registries/settings/group/constants';
@@ -35,6 +35,7 @@ describe('Packages Settings', () => {
};
const mountComponent = ({
+ mountFn = shallowMountExtended,
mutationResolver = jest.fn().mockResolvedValue(groupPackageSettingsMutationMock()),
} = {}) => {
Vue.use(VueApollo);
@@ -43,7 +44,7 @@ describe('Packages Settings', () => {
apolloProvider = createMockApollo(requestHandlers);
- wrapper = shallowMountExtended(component, {
+ wrapper = mountFn(component, {
apolloProvider,
provide: defaultProvide,
propsData: {
@@ -51,8 +52,6 @@ describe('Packages Settings', () => {
},
stubs: {
SettingsBlock,
- MavenSettings,
- GenericSettings,
},
});
};
@@ -63,11 +62,15 @@ describe('Packages Settings', () => {
const findSettingsBlock = () => wrapper.findComponent(SettingsBlock);
const findDescription = () => wrapper.findByTestId('description');
- const findMavenSettings = () => wrapper.findComponent(MavenSettings);
- const findMavenDuplicatedSettings = () => findMavenSettings().findComponent(DuplicatesSettings);
- const findGenericSettings = () => wrapper.findComponent(GenericSettings);
- const findGenericDuplicatedSettings = () =>
- findGenericSettings().findComponent(DuplicatesSettings);
+ const findMavenSettings = () => wrapper.findByTestId('maven-settings');
+ const findGenericSettings = () => wrapper.findByTestId('generic-settings');
+
+ const findMavenDuplicatedSettingsToggle = () => findMavenSettings().findComponent(GlToggle);
+ const findGenericDuplicatedSettingsToggle = () => findGenericSettings().findComponent(GlToggle);
+ const findMavenDuplicatedSettingsExceptionsInput = () =>
+ findMavenSettings().findComponent(ExceptionsInput);
+ const findGenericDuplicatedSettingsExceptionsInput = () =>
+ findGenericSettings().findComponent(ExceptionsInput);
const fillApolloCache = () => {
apolloProvider.defaultClient.cache.writeQuery({
@@ -80,7 +83,7 @@ describe('Packages Settings', () => {
};
const emitMavenSettingsUpdate = (override) => {
- findMavenDuplicatedSettings().vm.$emit('update', {
+ findGenericDuplicatedSettingsExceptionsInput().vm.$emit('update', {
mavenDuplicateExceptionRegex: ')',
...override,
});
@@ -106,27 +109,46 @@ describe('Packages Settings', () => {
describe('maven settings', () => {
it('exists', () => {
- mountComponent();
+ mountComponent({ mountFn: mountExtended });
+
+ expect(findMavenSettings().find('td').text()).toBe('Maven');
+ });
+
+ it('renders toggle', () => {
+ mountComponent({ mountFn: mountExtended });
- expect(findMavenSettings().exists()).toBe(true);
+ const { mavenDuplicatesAllowed } = packageSettings();
+
+ expect(findMavenDuplicatedSettingsToggle().exists()).toBe(true);
+
+ expect(findMavenDuplicatedSettingsToggle().props()).toMatchObject({
+ label: DUPLICATES_TOGGLE_LABEL,
+ value: mavenDuplicatesAllowed,
+ disabled: false,
+ labelPosition: 'hidden',
+ });
});
- it('assigns duplication allowness and exception props', async () => {
- mountComponent();
+ it('renders ExceptionsInput and assigns duplication allowness and exception props', () => {
+ mountComponent({ mountFn: mountExtended });
const { mavenDuplicatesAllowed, mavenDuplicateExceptionRegex } = packageSettings();
- expect(findMavenDuplicatedSettings().props()).toMatchObject({
+ expect(findMavenDuplicatedSettingsExceptionsInput().exists()).toBe(true);
+
+ expect(findMavenDuplicatedSettingsExceptionsInput().props()).toMatchObject({
duplicatesAllowed: mavenDuplicatesAllowed,
duplicateExceptionRegex: mavenDuplicateExceptionRegex,
duplicateExceptionRegexError: '',
loading: false,
+ name: 'mavenDuplicateExceptionRegex',
+ id: 'maven-duplicated-settings-regex-input',
});
});
it('on update event calls the mutation', () => {
const mutationResolver = jest.fn().mockResolvedValue(groupPackageSettingsMutationMock());
- mountComponent({ mutationResolver });
+ mountComponent({ mountFn: mountExtended, mutationResolver });
fillApolloCache();
@@ -140,31 +162,47 @@ describe('Packages Settings', () => {
describe('generic settings', () => {
it('exists', () => {
- mountComponent();
+ mountComponent({ mountFn: mountExtended });
- expect(findGenericSettings().exists()).toBe(true);
+ expect(findGenericSettings().find('td').text()).toBe('Generic');
});
- it('assigns duplication allowness and exception props', async () => {
- mountComponent();
+ it('renders toggle', () => {
+ mountComponent({ mountFn: mountExtended });
+
+ const { genericDuplicatesAllowed } = packageSettings();
+
+ expect(findGenericDuplicatedSettingsToggle().exists()).toBe(true);
+ expect(findGenericDuplicatedSettingsToggle().props()).toMatchObject({
+ label: DUPLICATES_TOGGLE_LABEL,
+ value: genericDuplicatesAllowed,
+ disabled: false,
+ labelPosition: 'hidden',
+ });
+ });
+
+ it('renders ExceptionsInput and assigns duplication allowness and exception props', async () => {
+ mountComponent({ mountFn: mountExtended });
const { genericDuplicatesAllowed, genericDuplicateExceptionRegex } = packageSettings();
- expect(findGenericDuplicatedSettings().props()).toMatchObject({
+ expect(findGenericDuplicatedSettingsExceptionsInput().props()).toMatchObject({
duplicatesAllowed: genericDuplicatesAllowed,
duplicateExceptionRegex: genericDuplicateExceptionRegex,
duplicateExceptionRegexError: '',
loading: false,
+ name: 'genericDuplicateExceptionRegex',
+ id: 'generic-duplicated-settings-regex-input',
});
});
it('on update event calls the mutation', async () => {
const mutationResolver = jest.fn().mockResolvedValue(groupPackageSettingsMutationMock());
- mountComponent({ mutationResolver });
+ mountComponent({ mountFn: mountExtended, mutationResolver });
fillApolloCache();
- findMavenDuplicatedSettings().vm.$emit('update', {
+ findGenericDuplicatedSettingsExceptionsInput().vm.$emit('update', {
genericDuplicateExceptionRegex: ')',
});
@@ -176,9 +214,11 @@ describe('Packages Settings', () => {
describe('settings update', () => {
describe('success state', () => {
- it('emits a success event', async () => {
- mountComponent();
+ beforeEach(() => {
+ mountComponent({ mountFn: mountExtended });
+ });
+ it('emits a success event', async () => {
fillApolloCache();
emitMavenSettingsUpdate();
@@ -189,11 +229,12 @@ describe('Packages Settings', () => {
it('has an optimistic response', () => {
const mavenDuplicateExceptionRegex = 'latest[main]something';
- mountComponent();
fillApolloCache();
- expect(findMavenDuplicatedSettings().props('duplicateExceptionRegex')).toBe('');
+ expect(
+ findGenericDuplicatedSettingsExceptionsInput().props('duplicateExceptionRegex'),
+ ).toBe('');
emitMavenSettingsUpdate({ mavenDuplicateExceptionRegex });
@@ -209,7 +250,7 @@ describe('Packages Settings', () => {
// note this is a complex test that covers all the path around errors that are shown in the form
// it's one single it case, due to the expensive preparation and execution
const mutationResolver = jest.fn().mockResolvedValue(groupPackageSettingsMutationErrorMock);
- mountComponent({ mutationResolver });
+ mountComponent({ mountFn: mountExtended, mutationResolver });
fillApolloCache();
@@ -218,9 +259,9 @@ describe('Packages Settings', () => {
await waitForPromises();
// errors are bound to the component
- expect(findMavenDuplicatedSettings().props('duplicateExceptionRegexError')).toBe(
- groupPackageSettingsMutationErrorMock.errors[0].extensions.problems[0].message,
- );
+ expect(
+ findMavenDuplicatedSettingsExceptionsInput().props('duplicateExceptionRegexError'),
+ ).toBe(groupPackageSettingsMutationErrorMock.errors[0].extensions.problems[0].message);
// general error message is shown
@@ -231,7 +272,9 @@ describe('Packages Settings', () => {
await nextTick();
// errors are reset on mutation call
- expect(findMavenDuplicatedSettings().props('duplicateExceptionRegexError')).toBe('');
+ expect(
+ findMavenDuplicatedSettingsExceptionsInput().props('duplicateExceptionRegexError'),
+ ).toBe('');
});
it.each`
@@ -239,7 +282,7 @@ describe('Packages Settings', () => {
${'local'} | ${jest.fn().mockResolvedValue(groupPackageSettingsMutationMock({ errors: ['foo'] }))}
${'network'} | ${jest.fn().mockRejectedValue()}
`('mutation payload with $type error', async ({ mutationResolver }) => {
- mountComponent({ mutationResolver });
+ mountComponent({ mountFn: mountExtended, mutationResolver });
fillApolloCache();
emitMavenSettingsUpdate();