diff --git a/js/components/__tests__/edit_environment_role.test.js b/js/components/__tests__/edit_environment_role.test.js new file mode 100644 index 00000000..e8552d39 --- /dev/null +++ b/js/components/__tests__/edit_environment_role.test.js @@ -0,0 +1,89 @@ +import { shallowMount } from '@vue/test-utils' +import EditEnvironmentRole from '../forms/edit_environment_role' + +describe('EditEnvironmentRole', () => { + var initialRoles, wrapper + + beforeEach(() => { + initialRoles = [ + { + role: 'no_access', + members: [ + { role: null, user_id: '123' }, + { role: null, user_id: '456' }, + ], + }, + { + role: 'Basic Access', + members: [{ role: 'Basic Access', user_id: '789' }], + }, + { + role: 'Network Admin', + members: [], + }, + { + role: 'Business Read-only', + members: [ + { role: 'Business Read-only', user_id: '012' }, + { role: 'Business Read-only', user_id: '345' }, + ], + }, + { + role: 'Technical Read-only', + members: [{ role: 'Technical Read-only', user_id: '678' }], + }, + ] + + wrapper = shallowMount(EditEnvironmentRole, { propsData: { initialRoles } }) + }) + + it('removes null roles to no_access', () => { + let roles = wrapper.vm.sanitizeValues([ + { role: 'no_access', members: [{ role: null }] }, + ]) + expect(roles).toEqual([ + { role: 'no_access', members: [{ role: 'no_access' }] }, + ]) + }) + + it('gets the data for a user', () => { + let member_data = wrapper.vm.getUserInfo('678') + + expect(member_data).toEqual({ role: 'Technical Read-only', user_id: '678' }) + }) + + it('removes a user from role', () => { + let techRole = wrapper.vm.roles.find(role => { + return role.role === 'Technical Read-only' + }) + + expect(techRole.members.length).toEqual(1) + wrapper.vm.removeUser('678') + expect(techRole.members.length).toEqual(0) + }) + + it('adds user to a role', () => { + let techRole = wrapper.vm.roles.find(role => { + return role.role === 'Technical Read-only' + }) + + expect(techRole.members.length).toEqual(1) + wrapper.vm.addUser({ user_id: '901' }, 'Technical Read-only') + expect(techRole.members.length).toEqual(2) + }) + + it('updates users role', () => { + let techRole = wrapper.vm.roles.find(role => { + return role.role === 'Technical Read-only' + }) + let businessRole = wrapper.vm.roles.find(role => { + return role.role === 'Business Read-only' + }) + + expect(techRole.members.length).toEqual(1) + expect(businessRole.members.length).toEqual(2) + wrapper.vm.updateRoles('678', 'Business Read-only') + expect(techRole.members.length).toEqual(0) + expect(businessRole.members.length).toEqual(3) + }) +}) diff --git a/js/components/forms/edit_environment_role.js b/js/components/forms/edit_environment_role.js index 3e8c38a0..2104514f 100644 --- a/js/components/forms/edit_environment_role.js +++ b/js/components/forms/edit_environment_role.js @@ -1,7 +1,6 @@ import FormMixin from '../../mixins/form' import Modal from '../../mixins/modal' - // Note: If refactoring consider using nested vue components as suggested by Dan: // https://github.com/dod-ccpo/atst/pull/799/files#r282240663 // May also want to reconsider the data structure by storing the roles and members separately @@ -90,4 +89,8 @@ export default { this.toggleSection() }, }, + + render: function(createElement) { + return createElement('p', 'Please implement inline-template') + }, }