diff --git a/cypress/e2e/bulk-edit/in-app/bulk-adit-in-app-separating-notes-in-different-columns.cy.js b/cypress/e2e/bulk-edit/in-app/bulk-adit-in-app-holdings-separating-notes-in-different-columns.cy.js similarity index 100% rename from cypress/e2e/bulk-edit/in-app/bulk-adit-in-app-separating-notes-in-different-columns.cy.js rename to cypress/e2e/bulk-edit/in-app/bulk-adit-in-app-holdings-separating-notes-in-different-columns.cy.js diff --git a/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-column-names-under-show-columns-section.cy.js b/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-column-names-under-show-columns-section.cy.js new file mode 100644 index 0000000000..bbb8870875 --- /dev/null +++ b/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-column-names-under-show-columns-section.cy.js @@ -0,0 +1,221 @@ +import permissions from '../../../support/dictionary/permissions'; +import BulkEditActions from '../../../support/fragments/bulk-edit/bulk-edit-actions'; +import BulkEditSearchPane from '../../../support/fragments/bulk-edit/bulk-edit-search-pane'; +import BulkEditFiles from '../../../support/fragments/bulk-edit/bulk-edit-files'; +import InventoryInstances from '../../../support/fragments/inventory/inventoryInstances'; +import InventorySearchAndFilter from '../../../support/fragments/inventory/inventorySearchAndFilter'; +import TopMenu from '../../../support/fragments/topMenu'; +import TopMenuNavigation from '../../../support/fragments/topMenuNavigation'; +import Users from '../../../support/fragments/users/users'; +import FileManager from '../../../support/utils/fileManager'; +import HoldingsRecordView from '../../../support/fragments/inventory/holdingsRecordView'; +import getRandomPostfix from '../../../support/utils/stringTools'; +import { + APPLICATION_NAMES, + BULK_EDIT_TABLE_COLUMN_HEADERS, + LOCATION_NAMES, + HOLDING_NOTE_TYPES, +} from '../../../support/constants'; + +let user; +const instance = { + title: `C446039 testBulkEdit_${getRandomPostfix()}`, + itemBarcode: getRandomPostfix(), +}; +const copyNoteText = 'Copy note text'; +const holdingUUIDsFileName = `validHoldingUUIDs_${getRandomPostfix()}.csv`; +const matchedRecordsFileName = `*-Matched-Records-${holdingUUIDsFileName}`; +const previewFileName = `*-Updates-Preview-${holdingUUIDsFileName}`; +const changedRecordsFileName = `*-Changed-Records-${holdingUUIDsFileName}`; + +describe('bulk-edit', () => { + describe('in-app approach', () => { + before('create test data', () => { + cy.clearLocalStorage(); + cy.createTempUser([ + permissions.bulkEditView.gui, + permissions.bulkEditEdit.gui, + permissions.inventoryAll.gui, + ]).then((userProperties) => { + user = userProperties; + + instance.id = InventoryInstances.createInstanceViaApi(instance.title, instance.itemBarcode); + cy.getHoldings({ + limit: 1, + query: `"instanceId"="${instance.id}"`, + }).then((holdings) => { + instance.holdingHRID = holdings[0].hrid; + instance.holdingsUUID = holdings[0].id; + + FileManager.createFile(`cypress/fixtures/${holdingUUIDsFileName}`, holdings[0].id); + }); + + cy.login(user.username, user.password, { + path: TopMenu.bulkEditPath, + waiter: BulkEditSearchPane.waitLoading, + }); + }); + }); + + after('delete test data', () => { + cy.getAdminToken(); + Users.deleteViaApi(user.userId); + InventoryInstances.deleteInstanceAndHoldingRecordAndAllItemsViaApi(instance.itemBarcode); + FileManager.deleteFile(`cypress/fixtures/${holdingUUIDsFileName}`); + FileManager.deleteFileFromDownloadsByMask( + matchedRecordsFileName, + previewFileName, + changedRecordsFileName, + ); + }); + + it( + 'C446039 Verify column names under "Show columns" section - holdings (firebird)', + { tags: ['criticalPath', 'firebird'] }, + () => { + BulkEditSearchPane.verifyDragNDropRecordTypeIdentifierArea('Holdings', 'Holdings UUIDs'); + BulkEditSearchPane.uploadFile(holdingUUIDsFileName); + BulkEditSearchPane.waitFileUploading(); + BulkEditSearchPane.verifyMatchedResults(instance.holdingHRID); + BulkEditActions.openActions(); + BulkEditSearchPane.verifyHoldingActionShowColumns(); + BulkEditSearchPane.verifyCheckedCheckboxesPresentInTheTable(); + BulkEditSearchPane.verifyResultsUnderColumns( + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.HOLDINGS_HRID, + instance.holdingHRID, + ); + BulkEditSearchPane.verifyResultsUnderColumns( + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.SUPPRESS_FROM_DISCOVERY, + '', + ); + BulkEditSearchPane.verifyResultsUnderColumns( + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.SOURCE, + 'FOLIO', + ); + BulkEditSearchPane.verifyResultsUnderColumns( + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.HOLDINGS_TYPE, + '', + ); + BulkEditSearchPane.verifyResultsUnderColumns( + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.HOLDINGS_PERMANENT_LOCATION, + LOCATION_NAMES.MAIN_LIBRARY_UI, + ); + + const uncheckedColumnHeaders = [ + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.HOLDINGS_PERMANENT_LOCATION, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.HOLDINGS_TYPE, + ]; + const checkedColumnHeaders = [ + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.COPY_NOTE, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.ELECTRONIC_BOOKPLATE_NOTE, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.ADMINISTRATIVE_NOTE, + ]; + + BulkEditSearchPane.changeShowColumnCheckbox( + ...checkedColumnHeaders, + ...uncheckedColumnHeaders, + ); + cy.wait(1000); + + checkedColumnHeaders.forEach((columnHeader) => { + BulkEditSearchPane.verifyResultColumnTitles(columnHeader); + }); + uncheckedColumnHeaders.forEach((columnHeader) => { + BulkEditSearchPane.verifyResultColumnTitlesDoNotInclude(columnHeader); + }); + + BulkEditActions.openActions(); + BulkEditActions.downloadMatchedResults(); + BulkEditFiles.verifyValueInRowByUUID( + matchedRecordsFileName, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.HOLDINGS_UUID, + instance.holdingsUUID, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.HOLDINGS_HRID, + instance.holdingHRID, + ); + + const defaultColumnHeaders = Object.values( + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS, + ); + + BulkEditFiles.verifyColumnHeaderExistsInCsvFile( + matchedRecordsFileName, + defaultColumnHeaders, + ); + BulkEditActions.openInAppStartBulkEditFrom(); + BulkEditActions.selectOption(HOLDING_NOTE_TYPES.COPY_NOTE); + cy.wait(1000); + BulkEditActions.selectSecondAction('Add note'); + BulkEditActions.fillInSecondTextArea(copyNoteText); + BulkEditActions.confirmChanges(); + BulkEditActions.verifyMessageBannerInAreYouSureForm(1); + BulkEditActions.verifyChangesInAreYouSureForm( + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.HOLDINGS_HRID, + [instance.holdingHRID], + ); + BulkEditActions.verifyChangesInAreYouSureForm( + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.COPY_NOTE, + [copyNoteText], + ); + + const selectedColumnHeaders = [ + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.HOLDINGS_HRID, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.SUPPRESS_FROM_DISCOVERY, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.SOURCE, + ...checkedColumnHeaders, + ]; + + selectedColumnHeaders.forEach((selectedColumnHeader) => { + BulkEditSearchPane.verifyAreYouSureColumnTitlesInclude(selectedColumnHeader); + }); + uncheckedColumnHeaders.forEach((uncheckedColumnHeader) => { + BulkEditSearchPane.verifyAreYouSureColumnTitlesDoNotInclude(uncheckedColumnHeader); + }); + + BulkEditActions.downloadPreview(); + BulkEditFiles.verifyValueInRowByUUID( + previewFileName, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.HOLDINGS_UUID, + instance.holdingsUUID, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.COPY_NOTE, + copyNoteText, + ); + BulkEditFiles.verifyColumnHeaderExistsInCsvFile(previewFileName, defaultColumnHeaders); + BulkEditActions.commitChanges(); + BulkEditSearchPane.waitFileUploading(); + BulkEditActions.verifySuccessBanner(); + BulkEditSearchPane.verifyExactChangesUnderColumnsByIdentifierInChangesAccordion( + instance.holdingHRID, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.COPY_NOTE, + copyNoteText, + ); + + selectedColumnHeaders.forEach((selectedColumnHeader) => { + BulkEditSearchPane.verifyChangedColumnTitlesInclude(selectedColumnHeader); + }); + uncheckedColumnHeaders.forEach((uncheckedColumnHeader) => { + BulkEditSearchPane.verifyChangedColumnTitlesDoNotInclude(uncheckedColumnHeader); + }); + + BulkEditActions.openActions(); + BulkEditSearchPane.verifyCheckedCheckboxesPresentInTheTable(); + BulkEditActions.downloadChangedCSV(); + BulkEditFiles.verifyValueInRowByUUID( + changedRecordsFileName, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.HOLDINGS_UUID, + instance.holdingsUUID, + BULK_EDIT_TABLE_COLUMN_HEADERS.INVENTORY_HOLDINGS.COPY_NOTE, + copyNoteText, + ); + BulkEditFiles.verifyColumnHeaderExistsInCsvFile(previewFileName, defaultColumnHeaders); + + TopMenuNavigation.navigateToApp(APPLICATION_NAMES.INVENTORY); + InventorySearchAndFilter.switchToHoldings(); + InventorySearchAndFilter.searchHoldingsByHRID(instance.holdingHRID); + InventorySearchAndFilter.selectViewHoldings(); + HoldingsRecordView.waitLoading(); + HoldingsRecordView.checkNotesByType(0, HOLDING_NOTE_TYPES.COPY_NOTE, copyNoteText); + }, + ); + }); +}); diff --git a/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-more-than-10-note-types-are-displayed.cy.js b/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-more-than-10-note-types-are-displayed.cy.js similarity index 100% rename from cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-more-than-10-note-types-are-displayed.cy.js rename to cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-more-than-10-note-types-are-displayed.cy.js diff --git a/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-notes-add-remove-mark-staff-only.cy.js b/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-notes-add-remove-mark-staff-only.cy.js similarity index 100% rename from cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-notes-add-remove-mark-staff-only.cy.js rename to cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-notes-add-remove-mark-staff-only.cy.js diff --git a/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-notes-columns-titles.cy.js b/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-notes-columns-titles.cy.js similarity index 100% rename from cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-notes-columns-titles.cy.js rename to cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-notes-columns-titles.cy.js diff --git a/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-notes-find-remove.cy.js b/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-notes-find-remove.cy.js similarity index 100% rename from cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-notes-find-remove.cy.js rename to cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-notes-find-remove.cy.js diff --git a/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-only-updated-properties-columns-in-are-you-sure-form.cy.js b/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-only-updated-properties-columns-in-are-you-sure-form.cy.js similarity index 100% rename from cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-only-updated-properties-columns-in-are-you-sure-form.cy.js rename to cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-only-updated-properties-columns-in-are-you-sure-form.cy.js diff --git a/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-properties-columns-in-are-you-sure-form.cy.js b/cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-properties-columns-in-are-you-sure-form.cy.js similarity index 100% rename from cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holding-properties-columns-in-are-you-sure-form.cy.js rename to cypress/e2e/bulk-edit/in-app/bulk-edit-in-app-holdings-properties-columns-in-are-you-sure-form.cy.js diff --git a/cypress/support/fragments/bulk-edit/bulk-edit-files.js b/cypress/support/fragments/bulk-edit/bulk-edit-files.js index f88dfbc97b..47f4a66a57 100644 --- a/cypress/support/fragments/bulk-edit/bulk-edit-files.js +++ b/cypress/support/fragments/bulk-edit/bulk-edit-files.js @@ -234,4 +234,17 @@ export default { }); }); }, + + verifyColumnHeaderExistsInCsvFile(fileName, columnHeaders) { + FileManager.findDownloadedFilesByMask(fileName).then((downloadedFilenames) => { + FileManager.readFile(downloadedFilenames[0]).then((actualContent) => { + const values = this.getValuesFromCSVFile(actualContent); + const stringWithHeaders = values.shift(); + + columnHeaders.forEach((columnHeader) => { + expect(stringWithHeaders).to.include(columnHeader); + }); + }); + }); + }, }; diff --git a/cypress/support/fragments/bulk-edit/bulk-edit-search-pane.js b/cypress/support/fragments/bulk-edit/bulk-edit-search-pane.js index 8a71312017..257e32c3f7 100644 --- a/cypress/support/fragments/bulk-edit/bulk-edit-search-pane.js +++ b/cypress/support/fragments/bulk-edit/bulk-edit-search-pane.js @@ -19,7 +19,7 @@ import { } from '../../../../interactors'; const bulkEditIcon = Image({ alt: 'View and manage bulk edit' }); -const resultsAccordion = Accordion('Preview of record matched'); +const matchedAccordion = Accordion('Preview of record matched'); const changesAccordion = Accordion('Preview of record changed'); const errorsAccordion = Accordion('Errors'); const bulkEditsAccordion = Accordion('Bulk edits'); @@ -88,7 +88,7 @@ export default { }, verifyPopulatedPreviewPage() { - cy.expect([errorsAccordion.exists(), resultsAccordion.exists(), actions.exists()]); + cy.expect([errorsAccordion.exists(), matchedAccordion.exists(), actions.exists()]); }, actionsIsShown() { @@ -404,14 +404,14 @@ export default { verifyMatchedResults(...values) { values.forEach((value) => { - cy.expect(resultsAccordion.find(MultiColumnListCell({ content: value })).exists()); + cy.expect(matchedAccordion.find(MultiColumnListCell({ content: value })).exists()); }); - cy.expect(resultsAccordion.has({ itemsAmount: values.length.toString() })); + cy.expect(matchedAccordion.has({ itemsAmount: values.length.toString() })); }, verifySpecificItemsMatched(...values) { values.forEach((value) => { - cy.expect(resultsAccordion.find(MultiColumnListCell({ content: including(value) })).exists()); + cy.expect(matchedAccordion.find(MultiColumnListCell({ content: including(value) })).exists()); }); }, @@ -420,7 +420,7 @@ export default { }, matchedAccordionIsAbsent() { - cy.expect(resultsAccordion.absent()); + cy.expect(matchedAccordion.absent()); }, verifyUserBarcodesResultAccordion() { @@ -504,9 +504,9 @@ export default { }, verifyExactChangesUnderColumnsByIdentifierInResultsAccordion(identifier, columnName, value) { - cy.then(() => resultsAccordion.find(MultiColumnListCell(identifier)).row()).then((index) => { + cy.then(() => matchedAccordion.find(MultiColumnListCell(identifier)).row()).then((index) => { cy.expect( - resultsAccordion + matchedAccordion .find(MultiColumnListRow({ indexRow: `row-${index}` })) .find(MultiColumnListCell({ column: columnName, content: value })) .exists(), @@ -755,7 +755,7 @@ export default { verifyResultsUnderColumns(columnName, value) { cy.expect( - resultsAccordion.find(MultiColumnListCell({ column: columnName, content: value })).exists(), + matchedAccordion.find(MultiColumnListCell({ column: columnName, content: value })).exists(), ); }, @@ -777,17 +777,25 @@ export default { }, verifyResultColumnTitles(title) { - cy.expect(resultsAccordion.find(MultiColumnListHeader(title)).exists()); + cy.expect(matchedAccordion.find(MultiColumnListHeader(title)).exists()); }, verifyResultColumnTitlesDoNotInclude(title) { - cy.expect(resultsAccordion.find(MultiColumnListHeader(title)).absent()); + cy.expect(matchedAccordion.find(MultiColumnListHeader(title)).absent()); + }, + + verifyAreYouSureColumnTitlesInclude(title) { + cy.expect(areYouSureForm.find(MultiColumnListHeader(title)).exists()); }, verifyAreYouSureColumnTitlesDoNotInclude(title) { cy.expect(areYouSureForm.find(MultiColumnListHeader(title)).absent()); }, + verifyChangedColumnTitlesInclude(title) { + cy.expect(changesAccordion.find(MultiColumnListHeader(title)).exists()); + }, + verifyChangedColumnTitlesDoNotInclude(title) { cy.expect(changesAccordion.find(MultiColumnListHeader(title)).absent()); },