summaryrefslogtreecommitdiff
path: root/spec/frontend/integrations/edit/components/integration_form_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/integrations/edit/components/integration_form_spec.js')
-rw-r--r--spec/frontend/integrations/edit/components/integration_form_spec.js94
1 files changed, 72 insertions, 22 deletions
diff --git a/spec/frontend/integrations/edit/components/integration_form_spec.js b/spec/frontend/integrations/edit/components/integration_form_spec.js
index b598a71cea8..482c6a439f2 100644
--- a/spec/frontend/integrations/edit/components/integration_form_spec.js
+++ b/spec/frontend/integrations/edit/components/integration_form_spec.js
@@ -1,32 +1,32 @@
import { shallowMount } from '@vue/test-utils';
+import { createStore } from '~/integrations/edit/store';
import IntegrationForm from '~/integrations/edit/components/integration_form.vue';
+import OverrideDropdown from '~/integrations/edit/components/override_dropdown.vue';
import ActiveToggle from '~/integrations/edit/components/active_toggle.vue';
import JiraTriggerFields from '~/integrations/edit/components/jira_trigger_fields.vue';
+import JiraIssuesFields from '~/integrations/edit/components/jira_issues_fields.vue';
import TriggerFields from '~/integrations/edit/components/trigger_fields.vue';
import DynamicField from '~/integrations/edit/components/dynamic_field.vue';
+import { mockIntegrationProps } from 'jest/integrations/edit/mock_data';
describe('IntegrationForm', () => {
let wrapper;
- const defaultProps = {
- activeToggleProps: {
- initialActivated: true,
- },
- showActive: true,
- triggerFieldsProps: {
- initialTriggerCommit: false,
- initialTriggerMergeRequest: false,
- initialEnableComments: false,
- },
- type: '',
- };
-
- const createComponent = props => {
+ const createComponent = (customStateProps = {}, featureFlags = {}, initialState = {}) => {
wrapper = shallowMount(IntegrationForm, {
- propsData: { ...defaultProps, ...props },
+ propsData: {},
+ store: createStore({
+ customState: { ...mockIntegrationProps, ...customStateProps },
+ ...initialState,
+ }),
stubs: {
+ OverrideDropdown,
ActiveToggle,
JiraTriggerFields,
+ TriggerFields,
+ },
+ provide: {
+ glFeatures: featureFlags,
},
});
};
@@ -38,8 +38,10 @@ describe('IntegrationForm', () => {
}
});
+ const findOverrideDropdown = () => wrapper.find(OverrideDropdown);
const findActiveToggle = () => wrapper.find(ActiveToggle);
const findJiraTriggerFields = () => wrapper.find(JiraTriggerFields);
+ const findJiraIssuesFields = () => wrapper.find(JiraIssuesFields);
const findTriggerFields = () => wrapper.find(TriggerFields);
describe('template', () => {
@@ -62,23 +64,41 @@ describe('IntegrationForm', () => {
});
describe('type is "slack"', () => {
- it('does not render JiraTriggerFields', () => {
- createComponent({
- type: 'slack',
- });
+ beforeEach(() => {
+ createComponent({ type: 'slack' });
+ });
+ it('does not render JiraTriggerFields', () => {
expect(findJiraTriggerFields().exists()).toBe(false);
});
+
+ it('does not render JiraIssuesFields', () => {
+ expect(findJiraIssuesFields().exists()).toBe(false);
+ });
});
describe('type is "jira"', () => {
it('renders JiraTriggerFields', () => {
- createComponent({
- type: 'jira',
- });
+ createComponent({ type: 'jira' });
expect(findJiraTriggerFields().exists()).toBe(true);
});
+
+ describe('featureFlag jiraIssuesIntegration is false', () => {
+ it('does not render JiraIssuesFields', () => {
+ createComponent({ type: 'jira' }, { jiraIssuesIntegration: false });
+
+ expect(findJiraIssuesFields().exists()).toBe(false);
+ });
+ });
+
+ describe('featureFlag jiraIssuesIntegration is true', () => {
+ it('renders JiraIssuesFields', () => {
+ createComponent({ type: 'jira' }, { jiraIssuesIntegration: true });
+
+ expect(findJiraIssuesFields().exists()).toBe(true);
+ });
+ });
});
describe('triggerEvents is present', () => {
@@ -116,5 +136,35 @@ describe('IntegrationForm', () => {
});
});
});
+
+ describe('adminState state is null', () => {
+ it('does not render OverrideDropdown', () => {
+ createComponent(
+ {},
+ {},
+ {
+ adminState: null,
+ },
+ );
+
+ expect(findOverrideDropdown().exists()).toBe(false);
+ });
+ });
+
+ describe('adminState state is an object', () => {
+ it('renders OverrideDropdown', () => {
+ createComponent(
+ {},
+ {},
+ {
+ adminState: {
+ ...mockIntegrationProps,
+ },
+ },
+ );
+
+ expect(findOverrideDropdown().exists()).toBe(true);
+ });
+ });
});
});