diff options
Diffstat (limited to 'spec/frontend/vuex_shared/modules/members/mutations_spec.js')
-rw-r--r-- | spec/frontend/vuex_shared/modules/members/mutations_spec.js | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/spec/frontend/vuex_shared/modules/members/mutations_spec.js b/spec/frontend/vuex_shared/modules/members/mutations_spec.js new file mode 100644 index 00000000000..7338b19cfc9 --- /dev/null +++ b/spec/frontend/vuex_shared/modules/members/mutations_spec.js @@ -0,0 +1,90 @@ +import { members, group } from 'jest/vue_shared/components/members/mock_data'; +import mutations from '~/vuex_shared/modules/members/mutations'; +import * as types from '~/vuex_shared/modules/members/mutation_types'; + +describe('Vuex members mutations', () => { + describe(types.RECEIVE_MEMBER_ROLE_SUCCESS, () => { + it('updates member', () => { + const state = { + members, + }; + + const accessLevel = { integerValue: 30, stringValue: 'Developer' }; + + mutations[types.RECEIVE_MEMBER_ROLE_SUCCESS](state, { + memberId: members[0].id, + accessLevel, + }); + + expect(state.members[0].accessLevel).toEqual(accessLevel); + }); + }); + + describe(types.RECEIVE_MEMBER_ROLE_ERROR, () => { + it('shows error message', () => { + const state = { + showError: false, + errorMessage: '', + }; + + mutations[types.RECEIVE_MEMBER_ROLE_ERROR](state); + + expect(state.showError).toBe(true); + expect(state.errorMessage).toBe( + "An error occurred while updating the member's role, please try again.", + ); + }); + }); + + describe(types.HIDE_ERROR, () => { + it('sets `showError` to `false`', () => { + const state = { + showError: true, + errorMessage: 'foo bar', + }; + + mutations[types.HIDE_ERROR](state); + + expect(state.showError).toBe(false); + }); + + it('sets `errorMessage` to an empty string', () => { + const state = { + showError: true, + errorMessage: 'foo bar', + }; + + mutations[types.HIDE_ERROR](state); + + expect(state.errorMessage).toBe(''); + }); + }); + + describe(types.SHOW_REMOVE_GROUP_LINK_MODAL, () => { + it('sets `removeGroupLinkModalVisible` and `groupLinkToRemove`', () => { + const state = { + removeGroupLinkModalVisible: false, + groupLinkToRemove: null, + }; + + mutations[types.SHOW_REMOVE_GROUP_LINK_MODAL](state, group); + + expect(state).toEqual({ + removeGroupLinkModalVisible: true, + groupLinkToRemove: group, + }); + }); + }); + + describe(types.HIDE_REMOVE_GROUP_LINK_MODAL, () => { + it('sets `removeGroupLinkModalVisible` to `false`', () => { + const state = { + removeGroupLinkModalVisible: false, + }; + + mutations[types.HIDE_REMOVE_GROUP_LINK_MODAL](state); + + expect(state.removeGroupLinkModalVisible).toBe(false); + }); + }); +}); |