/// /// import { generateNewOrg, generateNewUser } from '../../utils/generateMockData'; import { Role, OrganizationInvitationStatus } from '@energyweb/origin-backend-core'; describe('Organization members page', () => { const testUser = generateNewUser(); const testOrg = generateNewOrg(testUser); const member = generateNewUser(); const deviceManager = generateNewUser(); const admin = generateNewUser(); const userThatRejected = generateNewUser(); before(() => { cy.apiRegisterAndApproveUser(testUser); cy.apiRegisterAndApproveOrg(testUser, testOrg); cy.apiRegisterUser(member); cy.apiRegisterUser(deviceManager); cy.apiRegisterUser(admin); cy.apiRegisterUser(userThatRejected); cy.apiSendInvitation(testUser, member.email, Role.OrganizationUser); cy.apiSendInvitation(testUser, deviceManager.email, Role.OrganizationDeviceManager); cy.apiSendInvitation(testUser, admin.email, Role.OrganizationAdmin); cy.apiSendInvitation(testUser, userThatRejected.email, Role.OrganizationAdmin); cy.apiUserProceedInvitation(member, OrganizationInvitationStatus.Accepted); cy.apiUserProceedInvitation(deviceManager, OrganizationInvitationStatus.Accepted); cy.apiUserProceedInvitation(admin, OrganizationInvitationStatus.Accepted); cy.apiUserProceedInvitation(userThatRejected, OrganizationInvitationStatus.Rejected); cy.apiLoginUser(testUser); cy.visit('/'); cy.dataCy('organizations-menu').click(); cy.dataCy('organization-users').click(); cy.url().should('include', 'organization-users'); }); it('should show organization members page in table', () => { cy.contains('tr', testUser.email).contains('td', 'Admin'); cy.contains('tr', member.email).contains('td', 'Member'); cy.contains('tr', deviceManager.email).contains('td', 'Device Manager'); cy.contains('tr', admin.email).contains('td', 'Admin'); cy.contains(userThatRejected.email).should('not.exist'); cy.contains('1-4 of 4'); }); it('should remove invited admin', () => { cy.contains('tr', admin.email).find('td').last().click(); cy.dataCy('remove-user-icon').filter(':visible').click(); cy.notification('User removed'); cy.get('.toast').click(); cy.contains('tr', admin.email).should('not.exist'); cy.contains('1-3 of 3'); cy.wait(500); }); it('should change device manager role to admin', () => { cy.contains('tr', deviceManager.email).find('td').last().click(); cy.dataCy('edit-user-icon').filter(':visible').click(); cy.contains(`Change role for ${deviceManager.firstName} ${deviceManager.lastName}`); cy.contains('Device Manager'); cy.dataCy('change-role-button').should('be.disabled'); cy.dataCy('new-role-selector').click(); cy.get('[data-value="1"]').click(); cy.contains('Admin'); cy.dataCy('change-role-button').click(); cy.notification('User role updated'); cy.get('.toast').click(); cy.contains('tr', testUser.email).contains('td', 'Admin'); cy.contains('tr', member.email).contains('td', 'Member'); cy.contains('tr', deviceManager.email).contains('td', 'Admin'); cy.contains('1-3 of 3'); cy.wait(750); }); it('should not allow remove last person in organization', () => { cy.contains('tr', deviceManager.email).find('td').last().click(); cy.dataCy('remove-user-icon').filter(':visible').click(); cy.get('.toast').click(); cy.wait(750); cy.contains('tr', member.email).find('td').last().click(); cy.dataCy('remove-user-icon').filter(':visible').click(); cy.get('.toast').click(); cy.wait(750); cy.contains('tr', testUser.email).find('td').last().click(); cy.dataCy('remove-user-icon').filter(':visible').click(); cy.notification("You can't remove yourself from organization"); cy.contains('tr', testUser.email).contains('td', 'Admin'); cy.contains('1-1 of 1'); }); });