Skip to content

Commit

Permalink
Implement FAT-10233 (#3218)
Browse files Browse the repository at this point in the history
  • Loading branch information
IhorBohdan committed Feb 19, 2024
1 parent f7dd86d commit ee52d57
Show file tree
Hide file tree
Showing 5 changed files with 338 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
import uuid from 'uuid';
import permissions from '../../../support/dictionary/permissions';
import Users from '../../../support/fragments/users/users';
import { getTestEntityValue } from '../../../support/utils/stringTools';
import Affiliations, { tenantNames } from '../../../support/dictionary/affiliations';
import Departments from '../../../support/fragments/settings/users/departments';
import DepartmentsConsortiumManager from '../../../support/fragments/consortium-manager/users/departmentsConsortiumManager';
import ConsortiumManager from '../../../support/fragments/settings/consortium-manager/consortium-manager';
import PatronGroupsConsortiumManager from '../../../support/fragments/consortium-manager/users/patronGroupsConsortiumManager';
import PatronGroups from '../../../support/fragments/settings/users/patronGroups';
import SettingsMenu from '../../../support/fragments/settingsMenu';

const testData = {
centralSharedDepartment: {
payload: {
code: getTestEntityValue('centralSharedDepartment_name'),
name: getTestEntityValue('centralSharedDepartment_name'),
},
},
collegeLocalDepartment: {
code: getTestEntityValue('collegeLocalDepartment_code'),
id: uuid(),
name: getTestEntityValue('collegeLocalDepartment_name'),
},
universityLocalDepartment: {
code: getTestEntityValue('universityLocalDepartment_code'),
id: uuid(),
name: getTestEntityValue('universityLocalDepartment_name'),
},
centralSharedPatronGroup: {
payload: {
group: getTestEntityValue('centralSharedPatronGroup_name'),
},
},
collegeLocalPatronGroup: {
id: uuid(),
name: getTestEntityValue('collegeLocalPatronGroup_name'),
},
universityLocalPatronGroup: {
id: uuid(),
name: getTestEntityValue('universityLocalPatronGroup_name'),
},
};

describe('Consortium manager', () => {
describe('View settings', () => {
describe('View Departments', () => {
before('create test data', () => {
cy.getAdminToken();
DepartmentsConsortiumManager.createViaApi(testData.centralSharedDepartment).then(
(newDepartment) => {
testData.centralSharedDepartment = newDepartment;
},
);
PatronGroupsConsortiumManager.createViaApi(testData.centralSharedPatronGroup).then(
(newPatronGroup) => {
testData.centralSharedPatronGroup = newPatronGroup;
},
);
cy.createTempUser([]).then((userProperties) => {
// User for test C400669
testData.user400669 = userProperties;

cy.resetTenant();
cy.getAdminToken();
cy.assignAffiliationToUser(Affiliations.College, testData.user400669.userId);
cy.setTenant(Affiliations.College);
cy.assignPermissionsToExistingUser(testData.user400669.userId, [
permissions.uiUsersCreatePatronGroups.gui,
permissions.departmentsAll.gui,
]);
Departments.createViaApi(testData.collegeLocalDepartment);
PatronGroups.createViaApi(testData.collegeLocalPatronGroup.name).then((response) => {
testData.collegeLocalPatronGroup.id = response;
});
cy.resetTenant();
cy.getAdminToken();
cy.assignAffiliationToUser(Affiliations.University, testData.user400669.userId);
cy.setTenant(Affiliations.University);
cy.assignPermissionsToExistingUser(testData.user400669.userId, [
permissions.uiUsersCreatePatronGroups.gui,
permissions.departmentsAll.gui,
]);
Departments.createViaApi(testData.universityLocalDepartment);
PatronGroups.createViaApi(testData.universityLocalPatronGroup.name).then((response) => {
testData.universityLocalPatronGroup.id = response;
});
cy.resetTenant();
cy.login(testData.user400669.username, testData.user400669.password);
});
});

after('delete test data', () => {
cy.resetTenant();
cy.setTenant(Affiliations.Consortia);
cy.getAdminToken();
Departments.deleteViaApi(testData.centralSharedDepartment.id);
DepartmentsConsortiumManager.deleteViaApi(testData.centralSharedDepartment);
PatronGroupsConsortiumManager.deleteViaApi(testData.centralSharedPatronGroup);
Users.deleteViaApi(testData.user400669.userId);
});

it(
'C400669 User is NOT able to edit and delete from member tenant "Users" settings shared via "Consortium manager" app (consortia) (thunderjet)',
{ tags: ['criticalPathECS', 'thunderjet'] },
() => {
ConsortiumManager.switchActiveAffiliation(tenantNames.central, tenantNames.college);
cy.visit(SettingsMenu.patronGroups);

PatronGroups.verifyGroupInTheList({
name: testData.centralSharedPatronGroup.payload.group,
});

PatronGroups.verifyGroupInTheList({
name: testData.collegeLocalPatronGroup.name,
actions: ['edit', 'trash'],
});

PatronGroups.verifyGroupAbsentInTheList({
name: testData.universityLocalPatronGroup.name,
});
PatronGroups.clickTrashButtonForGroup(testData.collegeLocalPatronGroup.name);

PatronGroups.verifyGroupAbsentInTheList({
name: testData.collegeLocalPatronGroup.name,
});
cy.visit(SettingsMenu.departments);

Departments.verifyDepartmentsInTheList({
name: testData.centralSharedDepartment.payload.name,
code: testData.centralSharedDepartment.payload.code,
});

Departments.verifyDepartmentsInTheList({
name: testData.collegeLocalDepartment.name,
code: testData.collegeLocalDepartment.code,
actions: ['edit', 'trash'],
});

Departments.clickTrashButtonForGroup(testData.collegeLocalDepartment.name);

Departments.verifyGroupAbsentInTheList({
name: testData.universityLocalDepartment.name,
});

Departments.verifyGroupAbsentInTheList({
name: testData.collegeLocalDepartment.name,
});
ConsortiumManager.switchActiveAffiliation(tenantNames.college, tenantNames.university);
cy.visit(SettingsMenu.patronGroups);
PatronGroups.verifyGroupInTheList({
name: testData.centralSharedPatronGroup.payload.group,
});

PatronGroups.verifyGroupInTheList({
name: testData.universityLocalPatronGroup.name,
actions: ['edit', 'trash'],
});

PatronGroups.clickTrashButtonForGroup(testData.universityLocalPatronGroup.name);

PatronGroups.verifyGroupAbsentInTheList({
name: testData.universityLocalPatronGroup.name,
});

PatronGroups.verifyGroupAbsentInTheList({
name: testData.collegeLocalPatronGroup.name,
});

cy.visit(SettingsMenu.departments);

Departments.verifyDepartmentsInTheList({
name: testData.centralSharedDepartment.payload.name,
code: testData.centralSharedDepartment.payload.code,
});

Departments.verifyDepartmentsInTheList({
name: testData.universityLocalDepartment.name,
code: testData.universityLocalDepartment.code,
actions: ['edit', 'trash'],
});

Departments.clickTrashButtonForGroup(testData.universityLocalDepartment.name);

Departments.verifyGroupAbsentInTheList({
name: testData.universityLocalDepartment.name,
});

Departments.verifyGroupAbsentInTheList({
name: testData.collegeLocalDepartment.name,
});
},
);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import ConsortiumManagerApp, {
} from '../../../../../support/fragments/consortium-manager/consortiumManagerApp';
import SelectMembers from '../../../../../support/fragments/consortium-manager/modal/select-members';
import PatronGroups from '../../../../../support/fragments/settings/users/patronGroups';
import PatronGroupsConcortiumManager from '../../../../../support/fragments/consortium-manager/users/patronGroupsConcortiumManager';
import PatronGroupsConsortiumManager from '../../../../../support/fragments/consortium-manager/users/patronGroupsConsortiumManager';
import ConsortiumManager from '../../../../../support/fragments/settings/consortium-manager/consortium-manager';

const testData = {
Expand Down Expand Up @@ -37,7 +37,7 @@ describe('Consortium manager', () => {
describe('View Patron groups', () => {
before('create test data', () => {
cy.getAdminToken();
PatronGroupsConcortiumManager.createViaApi(testData.centralSharedPatronGroup).then(
PatronGroupsConsortiumManager.createViaApi(testData.centralSharedPatronGroup).then(
(newPatronGroup) => {
testData.centralSharedPatronGroup = newPatronGroup;
},
Expand Down Expand Up @@ -111,7 +111,7 @@ describe('Consortium manager', () => {
cy.setTenant(Affiliations.Consortia);
cy.getAdminToken();
PatronGroups.deleteViaApi(testData.centralLocalPatronGroup.id);
PatronGroupsConcortiumManager.deleteViaApi(testData.centralSharedPatronGroup);
PatronGroupsConsortiumManager.deleteViaApi(testData.centralSharedPatronGroup);
Users.deleteViaApi(testData.user753.userId);
Users.deleteViaApi(testData.user754.userId);
});
Expand All @@ -128,21 +128,21 @@ describe('Consortium manager', () => {
SelectMembers.selectAllMembers();
ConsortiumManagerApp.verifyStatusOfConsortiumManager(3);
ConsortiumManagerApp.chooseSettingsItem(settingsItems.users);
PatronGroupsConcortiumManager.choose();
PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.choose();
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.centralSharedPatronGroup.payload.group,
'All',
);
PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.centralLocalPatronGroup.name,
tenantNames.central,
);

PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.collegeLocalPatronGroup.name,
tenantNames.college,
);
PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.universityLocalPatronGroup.name,
tenantNames.university,
'edit',
Expand All @@ -154,19 +154,19 @@ describe('Consortium manager', () => {
SelectMembers.selectMembers(tenantNames.central);
SelectMembers.saveAndClose();
ConsortiumManagerApp.verifyMembersSelected(2);
PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.centralSharedPatronGroup.payload.group,
'All',
);
PatronGroupsConcortiumManager.verifyNoGroupInTheList(
PatronGroupsConsortiumManager.verifyNoGroupInTheList(
testData.centralLocalPatronGroup.name,
);

PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.collegeLocalPatronGroup.name,
tenantNames.college,
);
PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.universityLocalPatronGroup.name,
tenantNames.university,
'edit',
Expand All @@ -192,23 +192,23 @@ describe('Consortium manager', () => {
SelectMembers.saveAndClose();
ConsortiumManagerApp.verifyStatusOfConsortiumManager(2);
ConsortiumManagerApp.chooseSettingsItem(settingsItems.users);
PatronGroupsConcortiumManager.choose();
PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.choose();
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.centralSharedPatronGroup.payload.group,
'All',
);
PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.centralLocalPatronGroup.name,
tenantNames.central,
);

PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.collegeLocalPatronGroup.name,
tenantNames.college,
'edit',
'trash',
);
PatronGroupsConcortiumManager.verifyNoGroupInTheList(
PatronGroupsConsortiumManager.verifyNoGroupInTheList(
testData.universityLocalPatronGroup.name,
);

Expand All @@ -217,19 +217,19 @@ describe('Consortium manager', () => {
SelectMembers.selectMembers(tenantNames.college);
SelectMembers.saveAndClose();
ConsortiumManagerApp.verifyMembersSelected(1);
PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.centralSharedPatronGroup.payload.group,
'All',
);
PatronGroupsConcortiumManager.verifyGroupInTheList(
PatronGroupsConsortiumManager.verifyGroupInTheList(
testData.centralLocalPatronGroup.name,
tenantNames.central,
);

PatronGroupsConcortiumManager.verifyNoGroupInTheList(
PatronGroupsConsortiumManager.verifyNoGroupInTheList(
testData.collegeLocalPatronGroup.name,
);
PatronGroupsConcortiumManager.verifyNoGroupInTheList(
PatronGroupsConsortiumManager.verifyNoGroupInTheList(
testData.universityLocalPatronGroup.name,
);
},
Expand Down
61 changes: 60 additions & 1 deletion cypress/support/fragments/settings/users/departments.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
import { REQUEST_METHOD } from '../../../constants';
import { PaneHeader } from '../../../../../interactors';
import {
Button,
MultiColumnListCell,
MultiColumnListRow,
PaneHeader,
including,
} from '../../../../../interactors';

export const reasonsActions = {
edit: 'edit',
trash: 'trash',
};
export default {
waitLoading: () => cy.expect(PaneHeader('Departments').exists()),

Expand All @@ -22,4 +32,53 @@ export default {
isDefaultSearchParamsRequired: false,
});
},

verifyDepartmentsInTheList({ name, code = '', actions = [] }) {
const row = MultiColumnListRow({ content: including(name) });
const actionsCell = MultiColumnListCell({ columnIndex: 4 });
cy.expect([
row.exists(),
row.find(MultiColumnListCell({ columnIndex: 1, content: code })).exists(),
]);
if (actions.length === 0) {
cy.expect(row.find(actionsCell).has({ content: '' }));
} else {
Object.values(reasonsActions).forEach((action) => {
const buttonSelector = row.find(actionsCell).find(Button({ icon: action }));
if (actions.includes(action)) {
cy.expect(buttonSelector.exists());
} else {
cy.expect(buttonSelector.absent());
}
});
}
},

verifyGroupAbsentInTheList({ name }) {
const row = MultiColumnListRow({ content: including(name) });
cy.expect(row.absent());
},

clickEditButtonForGroup(name) {
const row = MultiColumnListRow({ content: including(name) });
const actionsCell = MultiColumnListCell({ columnIndex: 4 });
cy.do(
row
.find(actionsCell)
.find(Button({ icon: 'edit' }))
.click(),
);
},

clickTrashButtonForGroup(name) {
const row = MultiColumnListRow({ content: including(name) });
const actionsCell = MultiColumnListCell({ columnIndex: 4 });
cy.do([
row
.find(actionsCell)
.find(Button({ icon: 'trash' }))
.click(),
Button('Delete').click(),
]);
},
};
Loading

0 comments on commit ee52d57

Please sign in to comment.