diff options
Diffstat (limited to 'spec/frontend/integrations/edit/store')
4 files changed, 135 insertions, 0 deletions
diff --git a/spec/frontend/integrations/edit/store/actions_spec.js b/spec/frontend/integrations/edit/store/actions_spec.js new file mode 100644 index 00000000000..c3ce6e51a3d --- /dev/null +++ b/spec/frontend/integrations/edit/store/actions_spec.js @@ -0,0 +1,19 @@ +import createState from '~/integrations/edit/store/state'; +import { setOverride } from '~/integrations/edit/store/actions'; +import * as types from '~/integrations/edit/store/mutation_types'; + +import testAction from 'helpers/vuex_action_helper'; + +describe('Integration form store actions', () => { + let state; + + beforeEach(() => { + state = createState(); + }); + + describe('setOverride', () => { + it('should commit override mutation', () => { + return testAction(setOverride, true, state, [{ type: types.SET_OVERRIDE, payload: true }]); + }); + }); +}); diff --git a/spec/frontend/integrations/edit/store/getters_spec.js b/spec/frontend/integrations/edit/store/getters_spec.js new file mode 100644 index 00000000000..700d36edaad --- /dev/null +++ b/spec/frontend/integrations/edit/store/getters_spec.js @@ -0,0 +1,71 @@ +import { currentKey, isInheriting, propsSource } from '~/integrations/edit/store/getters'; +import createState from '~/integrations/edit/store/state'; +import { mockIntegrationProps } from '../mock_data'; + +describe('Integration form store getters', () => { + let state; + const customState = { ...mockIntegrationProps, type: 'CustomState' }; + const adminState = { ...mockIntegrationProps, type: 'AdminState' }; + + beforeEach(() => { + state = createState({ customState }); + }); + + describe('isInheriting', () => { + describe('when adminState is null', () => { + it('returns false', () => { + expect(isInheriting(state)).toBe(false); + }); + }); + + describe('when adminState is an object', () => { + beforeEach(() => { + state.adminState = adminState; + }); + + describe('when override is false', () => { + beforeEach(() => { + state.override = false; + }); + + it('returns false', () => { + expect(isInheriting(state)).toBe(true); + }); + }); + + describe('when override is true', () => { + beforeEach(() => { + state.override = true; + }); + + it('returns true', () => { + expect(isInheriting(state)).toBe(false); + }); + }); + }); + }); + + describe('propsSource', () => { + beforeEach(() => { + state.adminState = adminState; + }); + + it('equals adminState if inheriting', () => { + expect(propsSource(state, { isInheriting: true })).toEqual(adminState); + }); + + it('equals customState if not inheriting', () => { + expect(propsSource(state, { isInheriting: false })).toEqual(customState); + }); + }); + + describe('currentKey', () => { + it('equals `admin` if inheriting', () => { + expect(currentKey(state, { isInheriting: true })).toEqual('admin'); + }); + + it('equals `custom` if not inheriting', () => { + expect(currentKey(state, { isInheriting: false })).toEqual('custom'); + }); + }); +}); diff --git a/spec/frontend/integrations/edit/store/mutations_spec.js b/spec/frontend/integrations/edit/store/mutations_spec.js new file mode 100644 index 00000000000..4b733726d44 --- /dev/null +++ b/spec/frontend/integrations/edit/store/mutations_spec.js @@ -0,0 +1,19 @@ +import mutations from '~/integrations/edit/store/mutations'; +import createState from '~/integrations/edit/store/state'; +import * as types from '~/integrations/edit/store/mutation_types'; + +describe('Integration form store mutations', () => { + let state; + + beforeEach(() => { + state = createState(); + }); + + describe(`${types.SET_OVERRIDE}`, () => { + it('sets override', () => { + mutations[types.SET_OVERRIDE](state, true); + + expect(state.override).toBe(true); + }); + }); +}); diff --git a/spec/frontend/integrations/edit/store/state_spec.js b/spec/frontend/integrations/edit/store/state_spec.js new file mode 100644 index 00000000000..a8b431aa310 --- /dev/null +++ b/spec/frontend/integrations/edit/store/state_spec.js @@ -0,0 +1,26 @@ +import createState from '~/integrations/edit/store/state'; + +describe('Integration form state factory', () => { + it('states default to null', () => { + expect(createState()).toEqual({ + adminState: null, + customState: {}, + override: false, + }); + }); + + describe('override is initialized correctly', () => { + it.each([ + [{ id: 25 }, { inheritFromId: null }, true], + [{ id: 25 }, { inheritFromId: 27 }, true], + [{ id: 25 }, { inheritFromId: 25 }, false], + [null, { inheritFromId: null }, false], + [null, { inheritFromId: 25 }, false], + ])( + 'for adminState: %p, customState: %p: override = `%p`', + (adminState, customState, expected) => { + expect(createState({ adminState, customState }).override).toEqual(expected); + }, + ); + }); +}); |