diff options
Diffstat (limited to 'spec/frontend/integrations/edit/components/integration_form_spec.js')
-rw-r--r-- | spec/frontend/integrations/edit/components/integration_form_spec.js | 94 |
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); + }); + }); }); }); |