Skip to content

Commit 2396893

Browse files
added C400652 (#7120)
1 parent 95ffca1 commit 2396893

3 files changed

Lines changed: 135 additions & 0 deletions

File tree

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import { Permissions } from '../../../support/dictionary';
2+
import InstanceRecordEdit from '../../../support/fragments/inventory/instanceRecordEdit';
3+
import InstanceRecordView from '../../../support/fragments/inventory/instanceRecordView';
4+
import InventoryInstances from '../../../support/fragments/inventory/inventoryInstances';
5+
import TopMenu from '../../../support/fragments/topMenu';
6+
import Users from '../../../support/fragments/users/users';
7+
import getRandomPostfix from '../../../support/utils/stringTools';
8+
9+
describe('Inventory', () => {
10+
describe('Instance', () => {
11+
const testData = {
12+
instanceTitle: `AT_C400652_Instance_${getRandomPostfix()}`,
13+
statisticalCode1: 'ARL (Collection stats): books - Book, print (books)',
14+
statisticalCode2: 'ARL (Collection stats): ebooks - Books, electronic (ebooks)',
15+
filterValue: 'ARL',
16+
};
17+
18+
before('Create test user and login', () => {
19+
cy.getAdminToken();
20+
cy.createTempUser([Permissions.inventoryAll.gui]).then((userProperties) => {
21+
testData.user = userProperties;
22+
23+
cy.login(testData.user.username, testData.user.password, {
24+
path: TopMenu.inventoryPath,
25+
waiter: InventoryInstances.waitContentLoading,
26+
});
27+
});
28+
});
29+
30+
after('Delete test data', () => {
31+
cy.getAdminToken().then(() => {
32+
Users.deleteViaApi(testData.user.userId);
33+
InventoryInstances.deleteInstanceByTitleViaApi(testData.instanceTitle);
34+
});
35+
});
36+
37+
it(
38+
'C400652 Check the new formatting of Statistical codes field on Instance create/edit screen (folijet) (TaaS)',
39+
{ tags: ['extendedPath', 'folijet', 'C400652'] },
40+
() => {
41+
// Step 1: Go to Inventory -> Actions -> New
42+
const NewInstance = InventoryInstances.addNewInventory();
43+
44+
// Step 2: Click "Add statistical code" -> "Select code" dropdown appears
45+
NewInstance.clickAddStatisticalCodeButton();
46+
47+
// Step 3: Open "Select code" dropdown -> "Filter options list" + all codes present
48+
NewInstance.openStatisticalCodeDropdown();
49+
NewInstance.verifyStatisticalCodeDropdown();
50+
51+
// Step 4: Filter by value -> list updated accordingly
52+
NewInstance.filterStatisticalCodeByName(testData.filterValue);
53+
NewInstance.verifyStatisticalCodeListOptionsFilteredBy(testData.filterValue);
54+
55+
// Step 5: Select a value -> shown in dropdown, no error
56+
NewInstance.filterStatisticalCodeByName(testData.filterValue);
57+
NewInstance.selectStatisticalCode(testData.statisticalCode1);
58+
NewInstance.checkErrorMessageForStatisticalCode(false);
59+
60+
// Steps 6-7: Fill required fields
61+
NewInstance.fillRequiredValues(testData.instanceTitle);
62+
63+
// Step 8: Save & close
64+
NewInstance.clickSaveAndCloseButton();
65+
66+
// Step 9: Actions -> Edit instance
67+
InstanceRecordView.edit();
68+
InstanceRecordEdit.waitLoading();
69+
70+
// Step 10: Repeat steps 3-5 on edit screen
71+
NewInstance.clickAddStatisticalCodeButton();
72+
InstanceRecordEdit.openStatisticalCodeDropdown(1);
73+
InstanceRecordEdit.verifyStatisticalCodeDropdown();
74+
InstanceRecordEdit.filterStatisticalCodeByName(testData.filterValue);
75+
InstanceRecordEdit.verifyStatisticalCodeListOptionsFilteredBy(testData.filterValue);
76+
77+
InstanceRecordEdit.chooseStatisticalCode(testData.statisticalCode2);
78+
InstanceRecordEdit.checkErrorMessageForStatisticalCode(false);
79+
},
80+
);
81+
});
82+
});

cypress/support/fragments/inventory/instanceRecordEdit.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ const previoslyHeldCheckbox = Checkbox({ name: 'previouslyHeld' });
3838
const setForDeletionChecbox = Checkbox({ name: 'deleted' });
3939
const instanceStatusTerm = Select('Instance status term');
4040
const addStatisticalCodeButton = Button('Add statistical code');
41+
const statisticalCodeFieldSet = rootSection.find(FieldSet('Statistical code'));
42+
const statisticalCodeSelectionList = SelectionList();
4143
const addNatureOfContentButton = Button('Add nature of content');
4244
const addFormatsButton = Button('Add format');
4345
const addParentInstanceButton = Button('Add parent instance');
@@ -84,6 +86,35 @@ export default {
8486
addFormats,
8587
clickAddStatisticalCodeButton,
8688
chooseStatisticalCode,
89+
openStatisticalCodeDropdown(index = 0) {
90+
cy.do(Button({ name: `statisticalCodeIds[${index}]` }).click());
91+
},
92+
verifyStatisticalCodeDropdown() {
93+
cy.expect(statisticalCodeSelectionList.has({ placeholder: 'Filter options list' }));
94+
cy.then(() => statisticalCodeSelectionList.optionCount()).then((count) => {
95+
expect(count).to.greaterThan(0);
96+
});
97+
},
98+
filterStatisticalCodeByName(name) {
99+
cy.do([statisticalCodeSelectionList.filter(name)]);
100+
},
101+
verifyStatisticalCodeListOptionsFilteredBy(name) {
102+
cy.get('[class^=optionSegment-]').each(($option) => {
103+
cy.wrap($option).invoke('text').should('include', name);
104+
});
105+
},
106+
checkErrorMessageForStatisticalCode(isPresented = true) {
107+
if (isPresented) {
108+
cy.expect(statisticalCodeFieldSet.has({ error: 'Please select to continue' }));
109+
} else {
110+
cy.expect(
111+
FieldSet({
112+
buttonIds: [including('stripes-selection')],
113+
error: 'Please select to continue',
114+
}).absent(),
115+
);
116+
}
117+
},
87118
dateTypePlaceholderOption,
88119
close: () => cy.do(closeButton.click()),
89120
waitLoading: () => {

cypress/support/fragments/inventory/inventoryNewInstance.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ const descriptiveDataSection = rootSection.find(Accordion('Descriptive data'));
2727
const cancelButton = rootSection.find(Button('Cancel'));
2828
const saveAndCloseButton = rootSection.find(Button('Save & close'));
2929
const selectStatisticalCodeButton = Button({ name: 'statisticalCodeIds[0]' });
30+
const statisticalCodeFieldSet = rootSection.find(FieldSet('Statistical code'));
31+
const statisticalCodeSelectionList = SelectionList();
3032

3133
const deafultResouceType = 'text';
3234

@@ -271,10 +273,30 @@ export default {
271273
cy.do(Button('Add statistical code').click());
272274
cy.expect(selectStatisticalCodeButton.exists());
273275
},
276+
openStatisticalCodeDropdown() {
277+
cy.do([statisticalCodeFieldSet.find(Selection()).find(Button()).click()]);
278+
},
279+
verifyStatisticalCodeDropdown() {
280+
cy.expect(statisticalCodeSelectionList.has({ placeholder: 'Filter options list' }));
281+
cy.then(() => statisticalCodeSelectionList.optionCount()).then((count) => {
282+
expect(count).to.greaterThan(0);
283+
});
284+
},
285+
filterStatisticalCodeByName(name) {
286+
cy.do([statisticalCodeSelectionList.filter(name)]);
287+
},
288+
verifyStatisticalCodeListOptionsFilteredBy(name) {
289+
cy.get('[class^=optionSegment-]').each(($option) => {
290+
cy.wrap($option).invoke('text').should('include', name);
291+
});
292+
},
274293
chooseStatisticalCode(code) {
275294
cy.do(selectStatisticalCodeButton.click());
276295
cy.do(SelectionList().select(code));
277296
},
297+
selectStatisticalCode(code) {
298+
cy.do(SelectionList().select(code));
299+
},
278300
clickCancelButton() {
279301
cy.do(cancelButton.click());
280302
cy.expect(rootSection.absent());

0 commit comments

Comments
 (0)