diff --git a/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-assigned-to-AU.cy.js b/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-assigned-to-AU.cy.js index cdc857d19e..a0a7981e98 100644 --- a/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-assigned-to-AU.cy.js +++ b/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-assigned-to-AU.cy.js @@ -2,14 +2,21 @@ import Permissions from '../../support/dictionary/permissions'; import FinanceHelp from '../../support/fragments/finance/financeHelper'; import FiscalYears from '../../support/fragments/finance/fiscalYears/fiscalYears'; import AcquisitionUnits from '../../support/fragments/settings/acquisitionUnits/acquisitionUnits'; -import SettingsMenu from '../../support/fragments/settingsMenu'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import DateTools from '../../support/utils/dateTools'; import getRandomPostfix from '../../support/utils/stringTools'; describe('Acquisition Units', () => { - const defaultAcquisitionUnit = { ...AcquisitionUnits.defaultAcquisitionUnit }; + let user; + let membershipUserId; + const acquisitionUnit = { + ...AcquisitionUnits.defaultAcquisitionUnit, + protectDelete: true, + protectUpdate: true, + protectCreate: true, + protectRead: true, + }; const firstFiscalYear = { ...FiscalYears.defaultUiFiscalYear }; const secondFiscalYear = { name: `new_autotest_year_${getRandomPostfix()}`, @@ -17,20 +24,22 @@ describe('Acquisition Units', () => { periodBeginDate: DateTools.getThreePreviousDaysDateForFiscalYearOnUIEdit(), periodEndDate: DateTools.getTwoPreviousDaysDateForFiscalYearOnUIEdit(), }; - let user; before(() => { - cy.waitForAuthRefresh(() => { - cy.loginAsAdmin({ - path: SettingsMenu.acquisitionUnitsPath, - waiter: AcquisitionUnits.waitLoading, - }); - cy.reload(); - AcquisitionUnits.waitLoading(); - }, 20_000); + cy.getAdminToken(); FiscalYears.createViaApi(firstFiscalYear).then((firstFiscalYearResponse) => { firstFiscalYear.id = firstFiscalYearResponse.id; + + AcquisitionUnits.createAcquisitionUnitViaApi(acquisitionUnit).then((acqUnitResponse) => { + acquisitionUnit.id = acqUnitResponse.id; + + FiscalYears.updateFiscalYearViaApi({ + ...firstFiscalYearResponse, + acqUnitIds: [acquisitionUnit.id], + }); + }); }); + cy.createTempUser([ Permissions.uiFinanceAssignAcquisitionUnitsToNewRecord.gui, Permissions.uiSettingsFinanceViewEditCreateDelete.gui, @@ -59,29 +68,24 @@ describe('Acquisition Units', () => { ]).then((userProperties) => { user = userProperties; - AcquisitionUnits.newAcquisitionUnit(); - AcquisitionUnits.fillInAUInfo(defaultAcquisitionUnit.name); - AcquisitionUnits.assignUser(user.username); + AcquisitionUnits.assignUserViaApi(userProperties.userId, acquisitionUnit.id).then((id) => { + membershipUserId = id; + }); + cy.login(userProperties.username, userProperties.password, { path: TopMenu.fiscalYearPath, waiter: FiscalYears.waitForFiscalYearDetailsLoading, }); - FinanceHelp.searchByAll(firstFiscalYear.name); - FiscalYears.selectFisacalYear(firstFiscalYear.name); - FiscalYears.editFiscalYearDetails(); - FiscalYears.assignAU(defaultAcquisitionUnit.name); - FiscalYears.closeThirdPane(); - FiscalYears.resetFilters(); }); }); after(() => { - cy.loginAsAdmin({ - path: SettingsMenu.acquisitionUnitsPath, - waiter: AcquisitionUnits.waitLoading, + cy.getAdminToken(); + AcquisitionUnits.unAssignUserViaApi(membershipUserId); + AcquisitionUnits.deleteAcquisitionUnitViaApi(acquisitionUnit.id); + FiscalYears.getFiscalYearIdByName(secondFiscalYear.name).then((id) => { + FiscalYears.deleteFiscalYearViaApi(id); }); - AcquisitionUnits.unAssignAdmin(defaultAcquisitionUnit.name); - AcquisitionUnits.delete(defaultAcquisitionUnit.name); Users.deleteViaApi(user.userId); }); diff --git a/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-delete.cy.js b/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-delete.cy.js index bed8ddb6c9..8a77aed508 100644 --- a/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-delete.cy.js +++ b/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-delete.cy.js @@ -1,8 +1,8 @@ import Permissions from '../../support/dictionary/permissions'; +import FinanceHelp from '../../support/fragments/finance/financeHelper'; import FiscalYearDetails from '../../support/fragments/finance/fiscalYears/fiscalYearDetails'; import FiscalYears from '../../support/fragments/finance/fiscalYears/fiscalYears'; import AcquisitionUnits from '../../support/fragments/settings/acquisitionUnits/acquisitionUnits'; -import SettingsMenu from '../../support/fragments/settingsMenu'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import DateTools from '../../support/utils/dateTools'; @@ -10,8 +10,13 @@ import InteractorsTools from '../../support/utils/interactorsTools'; import getRandomPostfix from '../../support/utils/stringTools'; describe('Acquisition Units', () => { - const defaultAcquisitionUnit = { ...AcquisitionUnits.defaultAcquisitionUnit }; - const defaultFiscalYear = { ...FiscalYears.defaultUiFiscalYear }; + const acquisitionUnit = { + ...AcquisitionUnits.defaultAcquisitionUnit, + protectDelete: true, + protectUpdate: false, + protectCreate: false, + }; + const fiscalYear = { ...FiscalYears.defaultUiFiscalYear }; const newFiscalYear = { name: `FYA2023_${getRandomPostfix()}`, code: DateTools.getRandomFiscalYearCode(2000, 9999), @@ -19,11 +24,25 @@ describe('Acquisition Units', () => { periodEndDate: DateTools.getDayAfterTomorrowDateForFiscalYear(), }; let user; - let createdFiscalYearId; before(() => { + cy.getAdminToken(); + FiscalYears.createViaApi(fiscalYear).then((fiscalYearResponse) => { + fiscalYear.id = fiscalYearResponse.id; + + AcquisitionUnits.createAcquisitionUnitViaApi(acquisitionUnit).then((acqUnitResponse) => { + acquisitionUnit.id = acqUnitResponse.id; + + FiscalYears.updateFiscalYearViaApi({ + ...fiscalYearResponse, + acqUnitIds: [acquisitionUnit.id], + }); + }); + }); + cy.createTempUser([ Permissions.uiFinanceAssignAcquisitionUnitsToNewRecord.gui, + Permissions.uiFinanceManageAcquisitionUnits.gui, Permissions.uiSettingsFinanceViewEditCreateDelete.gui, Permissions.uiFinanceViewEditDeleteLedger.gui, Permissions.uiFinanceViewEditDeleteGroups.gui, @@ -41,7 +60,6 @@ describe('Acquisition Units', () => { Permissions.uiFinanceViewFundAndBudget.gui, Permissions.uiFinanceViewFiscalYear.gui, Permissions.uiFinanceManuallyReleaseEncumbrance.gui, - Permissions.uiFinanceManageAcquisitionUnits.gui, Permissions.uiFinanceExportFinanceRecords.gui, Permissions.uiFinanceExecuteFiscalYearRollover.gui, Permissions.uiFinanceCreateTransfers.gui, @@ -49,44 +67,18 @@ describe('Acquisition Units', () => { ]).then((userProperties) => { user = userProperties; - cy.getAdminUserDetails().then((adminUser) => { - defaultAcquisitionUnit.protectDelete = true; - defaultAcquisitionUnit.protectUpdate = false; - defaultAcquisitionUnit.protectCreate = false; - AcquisitionUnits.createAcquisitionUnitViaApi(defaultAcquisitionUnit) - .then((acqUnitResponse) => { - defaultAcquisitionUnit.id = acqUnitResponse.id; - return AcquisitionUnits.assignUserViaApi(adminUser.id, defaultAcquisitionUnit.id); - }) - .then(() => { - FiscalYears.createViaApi({ - ...defaultFiscalYear, - acqUnitIds: [defaultAcquisitionUnit.id], - }).then((firstFiscalYearResponse) => { - defaultFiscalYear.id = firstFiscalYearResponse.id; - }); - }) - .then(() => { - cy.login(userProperties.username, userProperties.password, { - path: TopMenu.fiscalYearPath, - waiter: FiscalYears.waitForFiscalYearDetailsLoading, - }); - }); + cy.login(userProperties.username, userProperties.password, { + path: TopMenu.fiscalYearPath, + waiter: FiscalYears.waitForFiscalYearDetailsLoading, }); }); }); after(() => { - cy.loginAsAdmin({ - path: SettingsMenu.acquisitionUnitsPath, - waiter: AcquisitionUnits.waitLoading, - }); - FiscalYears.deleteFiscalYearViaApi(defaultFiscalYear.id); - if (createdFiscalYearId) { - FiscalYears.deleteFiscalYearViaApi(createdFiscalYearId); - } - AcquisitionUnits.unAssignAdmin(defaultAcquisitionUnit.name); - AcquisitionUnits.delete(defaultAcquisitionUnit.name); + cy.getAdminToken(); + AcquisitionUnits.deleteAcquisitionUnitViaApi(acquisitionUnit.id); + FiscalYears.deleteFiscalYearViaApi(fiscalYear.id); + FiscalYears.deleteFiscalYearViaApi(newFiscalYear.id); Users.deleteViaApi(user.userId); }); @@ -94,9 +86,10 @@ describe('Acquisition Units', () => { 'C375080 Acquisition unit restrictions for "Fiscal year" records (only Delete option is active) when user is NOT assigned to acquisition unit (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C375080'] }, () => { - FiscalYears.selectFisacalYear(defaultFiscalYear.name); + FinanceHelp.searchByAll(fiscalYear.name); + FiscalYears.selectFisacalYear(fiscalYear.name); FiscalYearDetails.checkFiscalYearDetails({ - information: [{ key: 'Acquisition units', value: defaultAcquisitionUnit.name }], + information: [{ key: 'Acquisition units', value: acquisitionUnit.name }], }); FiscalYears.clickActionsButtonInFY(); FiscalYears.checkDeleteButtonIsDisabled(); @@ -108,13 +101,13 @@ describe('Acquisition Units', () => { InteractorsTools.checkCalloutMessage('Fiscal year has been saved'); FiscalYears.closeThirdPane(); FiscalYears.clickNewFY(); - FiscalYears.createFiscalYearWithAllFields(newFiscalYear, defaultAcquisitionUnit.name); + FiscalYears.createFiscalYearWithAllFields(newFiscalYear, acquisitionUnit.name); FiscalYears.clickSaveAndClose(); cy.wait(1000); InteractorsTools.checkCalloutMessage('Fiscal year has been saved'); FiscalYears.waitForFiscalYearDetailsLoading(); FiscalYears.getFiscalYearIdByName(newFiscalYear.name).then((fiscalYearId) => { - createdFiscalYearId = fiscalYearId; + newFiscalYear.id = fiscalYearId; }); FiscalYears.clickActionsButtonInFY(); FiscalYears.checkDeleteButtonIsDisabled(); diff --git a/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-edit-and-view.cy.js b/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-edit-and-view.cy.js index 3e5922eb92..8150db1583 100644 --- a/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-edit-and-view.cy.js +++ b/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-edit-and-view.cy.js @@ -2,27 +2,34 @@ import Permissions from '../../support/dictionary/permissions'; import FinanceHelp from '../../support/fragments/finance/financeHelper'; import FiscalYears from '../../support/fragments/finance/fiscalYears/fiscalYears'; import AcquisitionUnits from '../../support/fragments/settings/acquisitionUnits/acquisitionUnits'; -import SettingsMenu from '../../support/fragments/settingsMenu'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; describe('Acquisition Units', () => { - const defaultAcquisitionUnit = { ...AcquisitionUnits.defaultAcquisitionUnit }; - const defaultFiscalYear = { ...FiscalYears.defaultUiFiscalYear }; + const acquisitionUnit = { + ...AcquisitionUnits.defaultAcquisitionUnit, + protectDelete: true, + protectCreate: true, + protectUpdate: false, + }; + const fiscalYear = { ...FiscalYears.defaultUiFiscalYear }; let user; before(() => { - cy.waitForAuthRefresh(() => { - cy.loginAsAdmin({ - path: SettingsMenu.acquisitionUnitsPath, - waiter: AcquisitionUnits.waitLoading, + cy.getAdminToken(); + FiscalYears.createViaApi(fiscalYear).then((fiscalYearResponse) => { + fiscalYear.id = fiscalYearResponse.id; + + AcquisitionUnits.createAcquisitionUnitViaApi(acquisitionUnit).then((acqUnitResponse) => { + acquisitionUnit.id = acqUnitResponse.id; + + FiscalYears.updateFiscalYearViaApi({ + ...fiscalYearResponse, + acqUnitIds: [acquisitionUnit.id], + }); }); - cy.reload(); - AcquisitionUnits.waitLoading(); - }, 20_000); - FiscalYears.createViaApi(defaultFiscalYear).then((firstFiscalYearResponse) => { - defaultFiscalYear.id = firstFiscalYearResponse.id; }); + cy.createTempUser([ Permissions.uiFinanceAssignAcquisitionUnitsToNewRecord.gui, Permissions.uiSettingsFinanceViewEditCreateDelete.gui, @@ -51,21 +58,6 @@ describe('Acquisition Units', () => { ]).then((userProperties) => { user = userProperties; - AcquisitionUnits.newAcquisitionUnit(); - AcquisitionUnits.fillInAUInfo(defaultAcquisitionUnit.name); - AcquisitionUnits.assignAdmin(); - AcquisitionUnits.editAU(); - AcquisitionUnits.selectViewCheckbox(); - AcquisitionUnits.editAU(); - AcquisitionUnits.selectEditCheckbox(); - - cy.visit(TopMenu.fiscalYearPath); - FinanceHelp.searchByAll(defaultFiscalYear.name); - FiscalYears.selectFisacalYear(defaultFiscalYear.name); - FiscalYears.editFiscalYearDetails(); - FiscalYears.assignAU(defaultAcquisitionUnit.name); - FiscalYears.closeThirdPane(); - FiscalYears.resetFilters(); cy.login(userProperties.username, userProperties.password, { path: TopMenu.fiscalYearPath, waiter: FiscalYears.waitForFiscalYearDetailsLoading, @@ -74,13 +66,9 @@ describe('Acquisition Units', () => { }); after(() => { - cy.loginAsAdmin({ - path: SettingsMenu.acquisitionUnitsPath, - waiter: AcquisitionUnits.waitLoading, - }); - FiscalYears.deleteFiscalYearViaApi(defaultFiscalYear.id); - AcquisitionUnits.unAssignAdmin(defaultAcquisitionUnit.name); - AcquisitionUnits.delete(defaultAcquisitionUnit.name); + cy.getAdminToken(); + AcquisitionUnits.deleteAcquisitionUnitViaApi(acquisitionUnit.id); + FiscalYears.deleteFiscalYearViaApi(fiscalYear.id); Users.deleteViaApi(user.userId); }); @@ -88,15 +76,15 @@ describe('Acquisition Units', () => { 'C375079 Acquisition unit restrictions for "Fiscal year" records (Create, Delete options are active) when user is NOT assigned to acquisition unit (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C375079'] }, () => { - FinanceHelp.searchByAll(defaultFiscalYear.name); - FiscalYears.selectFisacalYear(defaultFiscalYear.name); + FinanceHelp.searchByAll(fiscalYear.name); + FiscalYears.selectFisacalYear(fiscalYear.name); FiscalYears.clickActionsButtonInFY(); FiscalYears.checkDeleteButtonIsDisabled(); FiscalYears.clickActionsButtonInFY(); FiscalYears.editFiscalYearDetails(); FiscalYears.editDescription(); FiscalYears.clickNewFY(); - FiscalYears.checkAcquisitionUnitIsAbsentToAssign(defaultAcquisitionUnit.name); + FiscalYears.checkAcquisitionUnitIsAbsentToAssign(acquisitionUnit.name); }, ); }); diff --git a/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-view.cy.js b/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-view.cy.js index bf0b0868e5..bbdec40c6f 100644 --- a/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-view.cy.js +++ b/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU-only-view.cy.js @@ -2,28 +2,34 @@ import Permissions from '../../support/dictionary/permissions'; import FinanceHelp from '../../support/fragments/finance/financeHelper'; import FiscalYears from '../../support/fragments/finance/fiscalYears/fiscalYears'; import AcquisitionUnits from '../../support/fragments/settings/acquisitionUnits/acquisitionUnits'; -import SettingsMenu from '../../support/fragments/settingsMenu'; import TopMenu from '../../support/fragments/topMenu'; -import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import Users from '../../support/fragments/users/users'; describe('Acquisition Units', () => { - const defaultAcquisitionUnit = { ...AcquisitionUnits.defaultAcquisitionUnit }; - const defaultFiscalYear = { ...FiscalYears.defaultUiFiscalYear }; + const acquisitionUnit = { + ...AcquisitionUnits.defaultAcquisitionUnit, + protectDelete: true, + protectCreate: true, + protectUpdate: true, + }; + const fiscalYear = { ...FiscalYears.defaultUiFiscalYear }; let user; before(() => { - cy.waitForAuthRefresh(() => { - cy.loginAsAdmin({ - path: SettingsMenu.acquisitionUnitsPath, - waiter: AcquisitionUnits.waitLoading, + cy.getAdminToken(); + FiscalYears.createViaApi(fiscalYear).then((fiscalYearResponse) => { + fiscalYear.id = fiscalYearResponse.id; + + AcquisitionUnits.createAcquisitionUnitViaApi(acquisitionUnit).then((acqUnitResponse) => { + acquisitionUnit.id = acqUnitResponse.id; + + FiscalYears.updateFiscalYearViaApi({ + ...fiscalYearResponse, + acqUnitIds: [acquisitionUnit.id], + }); }); - cy.reload(); - AcquisitionUnits.waitLoading(); - }, 20_000); - FiscalYears.createViaApi(defaultFiscalYear).then((firstFiscalYearResponse) => { - defaultFiscalYear.id = firstFiscalYearResponse.id; }); + cy.createTempUser([ Permissions.uiFinanceAssignAcquisitionUnitsToNewRecord.gui, Permissions.uiSettingsFinanceViewEditCreateDelete.gui, @@ -52,19 +58,6 @@ describe('Acquisition Units', () => { ]).then((userProperties) => { user = userProperties; - AcquisitionUnits.newAcquisitionUnit(); - AcquisitionUnits.fillInAUInfo(defaultAcquisitionUnit.name); - AcquisitionUnits.assignAdmin(); - AcquisitionUnits.editAU(); - AcquisitionUnits.selectViewCheckbox(); - TopMenuNavigation.openAppFromDropdown('Finance'); - FinanceHelp.clickFiscalYearButton(); - FinanceHelp.searchByAll(defaultFiscalYear.name); - FiscalYears.selectFisacalYear(defaultFiscalYear.name); - FiscalYears.editFiscalYearDetails(); - FiscalYears.assignAU(defaultAcquisitionUnit.name); - FiscalYears.closeThirdPane(); - FiscalYears.resetFilters(); cy.login(userProperties.username, userProperties.password, { path: TopMenu.fiscalYearPath, waiter: FiscalYears.waitForFiscalYearDetailsLoading, @@ -73,13 +66,9 @@ describe('Acquisition Units', () => { }); after(() => { - cy.loginAsAdmin({ - path: SettingsMenu.acquisitionUnitsPath, - waiter: AcquisitionUnits.waitLoading, - }); - FiscalYears.deleteFiscalYearViaApi(defaultFiscalYear.id); - AcquisitionUnits.unAssignAdmin(defaultAcquisitionUnit.name); - AcquisitionUnits.delete(defaultAcquisitionUnit.name); + cy.getAdminToken(); + AcquisitionUnits.deleteAcquisitionUnitViaApi(acquisitionUnit.id); + FiscalYears.deleteFiscalYearViaApi(fiscalYear.id); Users.deleteViaApi(user.userId); }); @@ -87,13 +76,13 @@ describe('Acquisition Units', () => { 'C375078 Acquisition unit restrictions for "Fiscal year" records (Edit, Create, Delete options are active) when user is NOT assigned to acquisition unit (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C375078'] }, () => { - FinanceHelp.searchByAll(defaultFiscalYear.name); - FiscalYears.selectFisacalYear(defaultFiscalYear.name); + FinanceHelp.searchByAll(fiscalYear.name); + FiscalYears.selectFisacalYear(fiscalYear.name); FiscalYears.clickActionsButtonInFY(); FiscalYears.checkEditButtonIsDisabled(); FiscalYears.checkDeleteButtonIsDisabled(); FiscalYears.clickNewFY(); - FiscalYears.checkAcquisitionUnitIsAbsentToAssign(defaultAcquisitionUnit.name); + FiscalYears.checkAcquisitionUnitIsAbsentToAssign(acquisitionUnit.name); }, ); }); diff --git a/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU.cy.js b/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU.cy.js index 1d4bcff735..465d60faee 100644 --- a/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU.cy.js +++ b/cypress/e2e/acquisition-units/acquisition-unit-restrictions-for-FY-when-user-is-NOT-assigned-to-AU.cy.js @@ -2,27 +2,35 @@ import Permissions from '../../support/dictionary/permissions'; import FinanceHelp from '../../support/fragments/finance/financeHelper'; import FiscalYears from '../../support/fragments/finance/fiscalYears/fiscalYears'; import AcquisitionUnits from '../../support/fragments/settings/acquisitionUnits/acquisitionUnits'; -import SettingsMenu from '../../support/fragments/settingsMenu'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; describe('Acquisition Units', () => { - const defaultAcquisitionUnit = { ...AcquisitionUnits.defaultAcquisitionUnit }; - const defaultFiscalYear = { ...FiscalYears.defaultUiFiscalYear }; + const acquisitionUnit = { + ...AcquisitionUnits.defaultAcquisitionUnit, + protectDelete: true, + protectCreate: true, + protectUpdate: true, + protectRead: true, + }; + const fiscalYear = { ...FiscalYears.defaultUiFiscalYear }; let user; before(() => { - cy.waitForAuthRefresh(() => { - cy.loginAsAdmin({ - path: SettingsMenu.acquisitionUnitsPath, - waiter: AcquisitionUnits.waitLoading, + cy.getAdminToken(); + FiscalYears.createViaApi(fiscalYear).then((fiscalYearResponse) => { + fiscalYear.id = fiscalYearResponse.id; + + AcquisitionUnits.createAcquisitionUnitViaApi(acquisitionUnit).then((acqUnitResponse) => { + acquisitionUnit.id = acqUnitResponse.id; + + FiscalYears.updateFiscalYearViaApi({ + ...fiscalYearResponse, + acqUnitIds: [acquisitionUnit.id], + }); }); - cy.reload(); - AcquisitionUnits.waitLoading(); - }, 20_000); - FiscalYears.createViaApi(defaultFiscalYear).then((firstFiscalYearResponse) => { - defaultFiscalYear.id = firstFiscalYearResponse.id; }); + cy.createTempUser([ Permissions.uiFinanceAssignAcquisitionUnitsToNewRecord.gui, Permissions.uiSettingsFinanceViewEditCreateDelete.gui, @@ -50,17 +58,7 @@ describe('Acquisition Units', () => { Permissions.uiFinanceFinanceViewGroup.gui, ]).then((userProperties) => { user = userProperties; - AcquisitionUnits.newAcquisitionUnit(); - AcquisitionUnits.fillInAUInfo(defaultAcquisitionUnit.name); - AcquisitionUnits.assignAdmin(); - cy.visit(TopMenu.fiscalYearPath); - FinanceHelp.searchByAll(defaultFiscalYear.name); - FiscalYears.selectFisacalYear(defaultFiscalYear.name); - FiscalYears.editFiscalYearDetails(); - FiscalYears.assignAU(defaultAcquisitionUnit.name); - FiscalYears.closeThirdPane(); - FiscalYears.resetFilters(); cy.login(userProperties.username, userProperties.password, { path: TopMenu.fiscalYearPath, waiter: FiscalYears.waitForFiscalYearDetailsLoading, @@ -69,27 +67,23 @@ describe('Acquisition Units', () => { }); after(() => { - cy.loginAsAdmin({ - path: SettingsMenu.acquisitionUnitsPath, - waiter: AcquisitionUnits.waitLoading, - }); - FiscalYears.deleteFiscalYearViaApi(defaultFiscalYear.id); - AcquisitionUnits.unAssignAdmin(defaultAcquisitionUnit.name); - AcquisitionUnits.delete(defaultAcquisitionUnit.name); + cy.getAdminToken(); + AcquisitionUnits.deleteAcquisitionUnitViaApi(acquisitionUnit.id); + FiscalYears.deleteFiscalYearViaApi(fiscalYear.id); Users.deleteViaApi(user.userId); }); it( - 'C375073 Acquisition unit restrictions for "Fiscal year" records (Edit, Create, Delete options are active) when user is NOT assigned to acquisition unit (thunderjet)', + 'C375073 Acquisition unit restrictions for "Fiscal year" records (View, Edit, Create, Delete options are restricted) when user is NOT assigned to acquisition unit (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C375073'] }, () => { - FinanceHelp.searchByAll(defaultFiscalYear.name); + FinanceHelp.searchByAll(fiscalYear.name); FiscalYears.checkNoResultsMessage( - `No results found for "${defaultFiscalYear.name}". Please check your spelling and filters.`, + `No results found for "${fiscalYear.name}". Please check your spelling and filters.`, ); FiscalYears.resetFilters(); FiscalYears.openAcquisitionAccordion(); - FiscalYears.selectAcquisitionUnitFilter(defaultAcquisitionUnit.name); + FiscalYears.selectAcquisitionUnitFilter(acquisitionUnit.name); FiscalYears.checkNoResultsMessage('No results found. Please check your filters.'); }, ); diff --git a/cypress/e2e/claiming/claiming-jobs-for-consecutive-runs-displayed-in-export-manager.cy.js b/cypress/e2e/claiming/claiming-jobs-for-consecutive-runs-displayed-in-export-manager.cy.js index f947b44d5e..e7437255fd 100644 --- a/cypress/e2e/claiming/claiming-jobs-for-consecutive-runs-displayed-in-export-manager.cy.js +++ b/cypress/e2e/claiming/claiming-jobs-for-consecutive-runs-displayed-in-export-manager.cy.js @@ -1,21 +1,20 @@ +import { + ACQUISITION_METHOD_NAMES_IN_PROFILE, + LOCATION_NAMES, + ORDER_STATUSES, +} from '../../support/constants'; import Permissions from '../../support/dictionary/permissions'; -import NewOrder from '../../support/fragments/orders/newOrder'; +import Claiming from '../../support/fragments/claiming/claiming'; +import ExportManagerSearchPane from '../../support/fragments/exportManager/exportManagerSearchPane'; +import { BasicOrderLine, NewOrder, Orders, Pieces } from '../../support/fragments/orders'; import OrderLines from '../../support/fragments/orders/orderLines'; -import Orders from '../../support/fragments/orders/orders'; -import Pieces from '../../support/fragments/orders/pieces/pieces'; -import BasicOrderLine from '../../support/fragments/orders/basicOrderLine'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; -import NewLocation from '../../support/fragments/settings/tenant/locations/newLocation'; -import ServicePoints from '../../support/fragments/settings/tenant/servicePoints/servicePoints'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; +import Receiving from '../../support/fragments/receiving/receiving'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; -import Claiming from '../../support/fragments/claiming/claiming'; -import Receiving from '../../support/fragments/receiving/receiving'; -import ExportManagerSearchPane from '../../support/fragments/exportManager/exportManagerSearchPane'; -import getRandomPostfix from '../../support/utils/stringTools'; import InteractorsTools from '../../support/utils/interactorsTools'; -import { ORDER_STATUSES, ACQUISITION_METHOD_NAMES_IN_PROFILE } from '../../support/constants'; +import getRandomPostfix from '../../support/utils/stringTools'; describe('Claiming', () => { const testData = { @@ -44,110 +43,103 @@ describe('Claiming', () => { before('Create test data', () => { cy.getAdminToken(); - ServicePoints.getViaApi() - .then((servicePoints) => { - testData.servicePointId = servicePoints[0].id; - - NewLocation.createViaApi(NewLocation.getDefaultLocation(testData.servicePointId)).then( - (location) => { - testData.location = location; - - Organizations.createOrganizationViaApi(testData.organization).then( - (organizationResponse) => { - testData.organization.id = organizationResponse; - - cy.getDefaultMaterialType().then((materialType) => { - testData.materialType = materialType; - - cy.getAcquisitionMethodsApi({ - query: `value="${ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE_AT_VENDOR_SYSTEM}"`, - }).then((acquisitionMethodResponse) => { - testData.acquisitionMethod = - acquisitionMethodResponse.body.acquisitionMethods[0].id; - - const orderData = { - ...NewOrder.getDefaultOrder({ vendorId: testData.organization.id }), - orderType: 'One-Time', - approved: true, - reEncumber: true, - }; - - Orders.createOrderViaApi(orderData).then((orderResponse) => { - testData.order = orderResponse; - testData.orderNumber = orderResponse.poNumber; - testData.polTitle = `Autotest_POL_C692237_${getRandomPostfix()}`; - - const orderLineData = { - ...BasicOrderLine.defaultOrderLine, - purchaseOrderId: testData.order.id, - titleOrPackage: testData.polTitle, - claimingActive: true, - claimingInterval: 1, - checkinItems: false, - receiptStatus: 'Awaiting Receipt', - cost: { - listUnitPrice: 10.0, - currency: 'USD', - quantityPhysical: 2, - }, - locations: [ - { - locationId: testData.location.id, - quantity: 2, - quantityPhysical: 2, - }, - ], - acquisitionMethod: testData.acquisitionMethod, - physical: { - createInventory: 'Instance, Holding, Item', - materialType: testData.materialType.id, - materialSupplier: testData.organization.id, - volumes: [], + cy.getLocations({ query: `name="${LOCATION_NAMES.ANNEX_UI}"` }) + .then((locationResp) => { + testData.location = locationResp; + Organizations.createOrganizationViaApi(testData.organization).then( + (organizationResponse) => { + testData.organization.id = organizationResponse; + + cy.getDefaultMaterialType().then((materialType) => { + testData.materialType = materialType; + + cy.getAcquisitionMethodsApi({ + query: `value="${ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE_AT_VENDOR_SYSTEM}"`, + }).then((acquisitionMethodResponse) => { + testData.acquisitionMethod = + acquisitionMethodResponse.body.acquisitionMethods[0].id; + + const orderData = { + ...NewOrder.getDefaultOrder({ vendorId: testData.organization.id }), + orderType: 'One-Time', + approved: true, + reEncumber: true, + }; + + Orders.createOrderViaApi(orderData).then((orderResponse) => { + testData.order = orderResponse; + testData.orderNumber = orderResponse.poNumber; + testData.polTitle = `Autotest_POL_C692237_${getRandomPostfix()}`; + + const orderLineData = { + ...BasicOrderLine.defaultOrderLine, + purchaseOrderId: testData.order.id, + titleOrPackage: testData.polTitle, + claimingActive: true, + claimingInterval: 1, + checkinItems: false, + receiptStatus: 'Awaiting Receipt', + cost: { + listUnitPrice: 10.0, + currency: 'USD', + quantityPhysical: 2, + }, + locations: [ + { + locationId: testData.location.id, + quantity: 2, + quantityPhysical: 2, + }, + ], + acquisitionMethod: testData.acquisitionMethod, + physical: { + createInventory: 'Instance, Holding, Item', + materialType: testData.materialType.id, + materialSupplier: testData.organization.id, + volumes: [], + }, + vendorDetail: { + instructions: '', + vendorAccount: testData.organization.accounts[0].accountNo, + referenceNumbers: [ + { + refNumber: `VendorRef_${getRandomPostfix()}`, + refNumberType: 'Vendor order reference number', }, - vendorDetail: { - instructions: '', - vendorAccount: testData.organization.accounts[0].accountNo, - referenceNumbers: [ - { - refNumber: `VendorRef_${getRandomPostfix()}`, - refNumberType: 'Vendor order reference number', - }, - ], - }, - }; - - OrderLines.createOrderLineViaApi(orderLineData).then((orderLineResponse) => { - testData.orderLine = orderLineResponse; - - Orders.updateOrderViaApi({ - ...testData.order, - workflowStatus: ORDER_STATUSES.OPEN, - }).then(() => { - cy.wait(3000); - - Receiving.getPiecesViaApi(testData.orderLine.id).then((pieces) => { - if (pieces && pieces.length >= 2) { - testData.pieces = pieces; - const updatePromises = pieces.map((piece) => Pieces.updateOrderPieceViaApi({ - ...piece, - receivingStatus: 'Late', - })); - cy.wrap(Promise.all(updatePromises)); - } - }); - }); + ], + }, + }; + + OrderLines.createOrderLineViaApi(orderLineData).then((orderLineResponse) => { + testData.orderLine = orderLineResponse; + + Orders.updateOrderViaApi({ + ...testData.order, + workflowStatus: ORDER_STATUSES.OPEN, + }).then(() => { + cy.wait(3000); + + Receiving.getPiecesViaApi(testData.orderLine.id).then((pieces) => { + if (pieces && pieces.length >= 2) { + testData.pieces = pieces; + const updatePromises = pieces.map((piece) => Pieces.updateOrderPieceViaApi({ + ...piece, + receivingStatus: 'Late', + })); + cy.wrap(Promise.all(updatePromises)); + } }); }); }); }); - }, - ); + }); + }); }, ); }) .then(() => { cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading }); - Organizations.searchByParameters('Name', testData.organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', testData.organization.name); Organizations.selectOrganization(testData.organization.name); Organizations.addIntegration(); Organizations.fillIntegrationInformationWithoutSchedulingWithDifferentInformation({ @@ -160,6 +152,7 @@ describe('Claiming', () => { fileFormat: 'CSV', }); Organizations.saveOrganization(); + cy.createTempUser([ Permissions.uiClaimingView.gui, Permissions.exportManagerAll.gui, diff --git a/cypress/e2e/consortia/check-logging-right-into-member-tenant.cy.js b/cypress/e2e/consortia/check-logging-right-into-member-tenant.cy.js index e7ee446a6f..2412ad1cf7 100644 --- a/cypress/e2e/consortia/check-logging-right-into-member-tenant.cy.js +++ b/cypress/e2e/consortia/check-logging-right-into-member-tenant.cy.js @@ -7,7 +7,10 @@ import getRandomPostfix from '../../support/utils/stringTools'; describe('Consortia', () => { let user1; - let user2 = { ...Users.generateUserModel(), ...{ username: `AT_Username_${getRandomPostfix()}` } }; + let user2 = { + ...Users.generateUserModel(), + ...{ username: `AT_Username_${getRandomPostfix()}` }, + }; before('Create users, data', () => { cy.getAdminToken(); @@ -15,11 +18,11 @@ describe('Consortia', () => { cy.createTempUser([Permissions.uiUsersView.gui]).then((userProperties) => { user1 = userProperties; }); - cy.createTempUserParameterized(user2, [Permissions.uiUsersView.gui], { userType: 'staff' }).then( - (userProperties) => { - user2 = { ...user2, ...userProperties }; - }, - ); + cy.createTempUserParameterized(user2, [Permissions.uiUsersView.gui], { + userType: 'staff', + }).then((userProperties) => { + user2 = { ...user2, ...userProperties }; + }); }); after('Delete users, data', () => { diff --git a/cypress/e2e/consortia/consortium-manager/manage-shared-settings/manage-shared-departments/user-with-permission-is-able-create-shared-department.cy.js b/cypress/e2e/consortia/consortium-manager/manage-shared-settings/manage-shared-departments/user-with-permission-is-able-create-shared-department.cy.js index 80bcd81227..96a4b3e901 100644 --- a/cypress/e2e/consortia/consortium-manager/manage-shared-settings/manage-shared-departments/user-with-permission-is-able-create-shared-department.cy.js +++ b/cypress/e2e/consortia/consortium-manager/manage-shared-settings/manage-shared-departments/user-with-permission-is-able-create-shared-department.cy.js @@ -1,10 +1,7 @@ import moment from 'moment'; -import { calloutTypes } from '../../../../../../interactors'; -import { - APPLICATION_NAMES, - CONSORTIA_SYSTEM_USER, -} from '../../../../../support/constants'; +// import { calloutTypes } from '../../../../../../interactors'; +import { APPLICATION_NAMES, CONSORTIA_SYSTEM_USER } from '../../../../../support/constants'; import Affiliations, { tenantNames } from '../../../../../support/dictionary/affiliations'; import Permissions from '../../../../../support/dictionary/permissions'; import ConsortiaControlledVocabularyPaneset, { @@ -42,7 +39,9 @@ const checkPermissionsLackMessage = () => { // messages.noPermission(Affiliations.University), // calloutTypes.error, // ); - cy.log('Check message about lack of permissions to manage shared departments after fix of the bug with permissions (see https://folio-org.atlassian.net/browse/EUREKA-536)'); + cy.log( + 'Check message about lack of permissions to manage shared departments after fix of the bug with permissions (see https://folio-org.atlassian.net/browse/EUREKA-536)', + ); }; const lastUpdatedValue = `${moment().format('l')} by ${CONSORTIA_SYSTEM_USER}`; @@ -62,29 +61,26 @@ describe('Consortia', () => { cy.log('Preconditions 2 and 3.3:'); cy.log('Create user A in member-2 (University) tenant'); cy.setTenant(Affiliations.University); - cy.createTempUser([Permissions.uiOrganizationsView.gui]) - .then((userProperties) => { - userAData = userProperties; - - cy.log('Assign affiliation to user A in member-1 (College) tenant'); - cy.resetTenant(); // University -> Consortia - cy.assignAffiliationToUser(Affiliations.College, userAData.userId); - - cy.log('Precondition 3.1: Set permissions to user A in central (Consortia) tenant'); - cy.setTenant(Affiliations.Consortia); - cy.assignPermissionsToExistingUser(userAData.userId, [ - Permissions.consortiaSettingsConsortiumManagerEdit.gui, - Permissions.consortiaSettingsConsortiumManagerShare.gui, - Permissions.consortiaSettingsConsortiumManagerView.gui, - Permissions.createEditViewDepartments.gui, - ]); - - cy.log('Precondition 3.2: Set permissions to user A in member-1 (College) tenant'); - cy.setTenant(Affiliations.College); - cy.assignPermissionsToExistingUser(userAData.userId, [ - Permissions.departmentsAll.gui, - ]); - }); + cy.createTempUser([Permissions.uiOrganizationsView.gui]).then((userProperties) => { + userAData = userProperties; + + cy.log('Assign affiliation to user A in member-1 (College) tenant'); + cy.resetTenant(); // University -> Consortia + cy.assignAffiliationToUser(Affiliations.College, userAData.userId); + + cy.log('Precondition 3.1: Set permissions to user A in central (Consortia) tenant'); + cy.setTenant(Affiliations.Consortia); + cy.assignPermissionsToExistingUser(userAData.userId, [ + Permissions.consortiaSettingsConsortiumManagerEdit.gui, + Permissions.consortiaSettingsConsortiumManagerShare.gui, + Permissions.consortiaSettingsConsortiumManagerView.gui, + Permissions.createEditViewDepartments.gui, + ]); + + cy.log('Precondition 3.2: Set permissions to user A in member-1 (College) tenant'); + cy.setTenant(Affiliations.College); + cy.assignPermissionsToExistingUser(userAData.userId, [Permissions.departmentsAll.gui]); + }); // User B creation and setup cy.log('Precondition 4-5.1:'); @@ -94,29 +90,35 @@ describe('Consortia', () => { .then((userProperties) => { userBData = userProperties; - cy.log('Assign affiliation to user B in member-1 (College) tenant and member-2 (University) tenant'); + cy.log( + 'Assign affiliation to user B in member-1 (College) tenant and member-2 (University) tenant', + ); cy.assignAffiliationToUser(Affiliations.College, userBData.userId); cy.assignAffiliationToUser(Affiliations.University, userBData.userId); cy.log('Precondition 5.2: Set permissions to user B in member-1 (College) tenant'); cy.setTenant(Affiliations.College); - cy.assignPermissionsToExistingUser(userBData.userId, [Permissions.departmentsAll.gui]); + cy.assignPermissionsToExistingUser(userBData.userId, [ + Permissions.departmentsAll.gui, + ]); cy.log('Precondition 5.3: Set permissions to user B in member-2 (University) tenant'); cy.setTenant(Affiliations.University); - cy.assignPermissionsToExistingUser(userBData.userId, [Permissions.departmentsAll.gui]); + cy.assignPermissionsToExistingUser(userBData.userId, [ + Permissions.departmentsAll.gui, + ]); }) .then(() => { cy.log('Precondition 6: Create shared department in central tenant'); cy.resetTenant(); - DepartmentsConsortiumManager - .upsertSharedViaApi(testData.preconditionDepartment) - .then((department) => { + DepartmentsConsortiumManager.upsertSharedViaApi(testData.preconditionDepartment).then( + (department) => { preconditionDepartment = department; cy.log('Precondition 7: Assign shared department to user B in central tenant'); cy.assignDepartmentsToExistingUser(userBData.userId, [preconditionDepartment.id]); - }); + }, + ); }); }); @@ -209,7 +211,7 @@ describe('Consortia', () => { 1, SHARED_SETTING_LIBRARIES, ], - [actionIcons.edit] + [actionIcons.edit], ); /* <---------- STEP 4: END ----------> */ @@ -246,7 +248,7 @@ describe('Consortia', () => { '-', SHARED_SETTING_LIBRARIES, ], - [actionIcons.edit, actionIcons.trash] + [actionIcons.edit, actionIcons.trash], ); checkPermissionsLackMessage(); @@ -263,14 +265,12 @@ describe('Consortia', () => { // Verify shared department appears in Central tenant Settings > Users > Departments cy.visit(SettingsMenu.departments); Departments.waitLoading(); - ConsortiaControlledVocabularyPaneset.verifyRecordInTheList( - [ - testData.sharedDepartment.name, - testData.sharedDepartment.code, - lastUpdatedValue, - '-', - ], - ); + ConsortiaControlledVocabularyPaneset.verifyRecordInTheList([ + testData.sharedDepartment.name, + testData.sharedDepartment.code, + lastUpdatedValue, + '-', + ]); /* <---------- STEP 12: END ----------> */ /* <---------- STEP 13: BEGIN ----------> */ @@ -279,14 +279,12 @@ describe('Consortia', () => { ConsortiumManager.switchActiveAffiliation(tenantNames.central, tenantNames.college); cy.visit(SettingsMenu.departments); Departments.waitLoading(); - ConsortiaControlledVocabularyPaneset.verifyRecordInTheList( - [ - testData.sharedDepartment.name, - testData.sharedDepartment.code, - lastUpdatedValue, - '-', - ], - ); + ConsortiaControlledVocabularyPaneset.verifyRecordInTheList([ + testData.sharedDepartment.name, + testData.sharedDepartment.code, + lastUpdatedValue, + '-', + ]); /* <---------- STEP 13: END ----------> */ /* <---------- STEP 14: BEGIN ----------> */ @@ -295,14 +293,12 @@ describe('Consortia', () => { ConsortiumManager.switchActiveAffiliation(tenantNames.college, tenantNames.university); cy.visit(SettingsMenu.departments); Departments.waitLoading(); - ConsortiaControlledVocabularyPaneset.verifyRecordInTheList( - [ - testData.sharedDepartment.name, - testData.sharedDepartment.code, - lastUpdatedValue, - '-', - ], - ); + ConsortiaControlledVocabularyPaneset.verifyRecordInTheList([ + testData.sharedDepartment.name, + testData.sharedDepartment.code, + lastUpdatedValue, + '-', + ]); /* <---------- STEP 14: END ----------> */ /* <---------- STEP 15: BEGIN ----------> */ @@ -324,7 +320,10 @@ describe('Consortia', () => { /* <---------- STEP 17: BEGIN ----------> */ cy.log('STEP 17'); - ConsortiaControlledVocabularyPaneset.performAction(testData.sharedDepartment.name, actionIcons.edit); + ConsortiaControlledVocabularyPaneset.performAction( + testData.sharedDepartment.name, + actionIcons.edit, + ); ConsortiaControlledVocabularyPaneset.verifyEditModeIsActive(false); ConsortiaControlledVocabularyPaneset.verifyShareCheckboxState({ isChecked: true, @@ -341,14 +340,18 @@ describe('Consortia', () => { /* <---------- STEP 19: BEGIN ----------> */ cy.log('STEP 19'); ConsortiaControlledVocabularyPaneset.clickSave(); - ConsortiaControlledVocabularyPaneset.verifyFieldValidatorError({ name: messages.pleaseFillIn }); + ConsortiaControlledVocabularyPaneset.verifyFieldValidatorError({ + name: messages.pleaseFillIn, + }); ConsortiaControlledVocabularyPaneset.verifyEditModeIsActive(true); /* <---------- STEP 19: END ----------> */ /* <---------- STEP 20: BEGIN ----------> */ cy.log('STEP 20'); testData.sharedDepartment.name = getTestEntityValue('C409514_SharedDepartment_Edited'); - ConsortiaControlledVocabularyPaneset.fillInTextField({ name: testData.sharedDepartment.name }); + ConsortiaControlledVocabularyPaneset.fillInTextField({ + name: testData.sharedDepartment.name, + }); /* <---------- STEP 20: END ----------> */ /* <---------- STEP 21: BEGIN ----------> */ @@ -370,7 +373,7 @@ describe('Consortia', () => { '-', SHARED_SETTING_LIBRARIES, ], - [actionIcons.edit, actionIcons.trash] + [actionIcons.edit, actionIcons.trash], ); checkPermissionsLackMessage(); @@ -379,17 +382,28 @@ describe('Consortia', () => { /* <---------- STEP 22: BEGIN ----------> */ cy.log('STEP 22'); // Delete created shared department - ConsortiaControlledVocabularyPaneset.performAction(testData.sharedDepartment.name, actionIcons.trash); - ConsortiaControlledVocabularyPaneset.verifyDeleteConfirmationMessage(DepartmentsConsortiumManager.entityName, testData.sharedDepartment.name); + ConsortiaControlledVocabularyPaneset.performAction( + testData.sharedDepartment.name, + actionIcons.trash, + ); + ConsortiaControlledVocabularyPaneset.verifyDeleteConfirmationMessage( + DepartmentsConsortiumManager.entityName, + testData.sharedDepartment.name, + ); /* <---------- STEP 22: END ----------> */ /* <---------- STEP 23: BEGIN ----------> */ cy.log('STEP 23'); ConsortiaControlledVocabularyPaneset.confirmDelete(); ConsortiumManagerApp.checkMessage( - messages.deleted(DepartmentsConsortiumManager.entityName, testData.sharedDepartment.name), + messages.deleted( + DepartmentsConsortiumManager.entityName, + testData.sharedDepartment.name, + ), + ); + ConsortiaControlledVocabularyPaneset.verifyRecordNotInTheList( + testData.sharedDepartment.name, ); - ConsortiaControlledVocabularyPaneset.verifyRecordNotInTheList(testData.sharedDepartment.name); checkPermissionsLackMessage(); /* <---------- STEP 23: END ----------> */ @@ -404,7 +418,9 @@ describe('Consortia', () => { TopMenuNavigation.navigateToApp(APPLICATION_NAMES.SETTINGS); cy.visit(SettingsMenu.departments); Departments.waitLoading(); - ConsortiaControlledVocabularyPaneset.verifyRecordNotInTheList(testData.sharedDepartment.name); + ConsortiaControlledVocabularyPaneset.verifyRecordNotInTheList( + testData.sharedDepartment.name, + ); /* <---------- STEP 25: END ----------> */ /* <---------- STEP 26: BEGIN ----------> */ @@ -413,7 +429,9 @@ describe('Consortia', () => { TopMenuNavigation.navigateToApp(APPLICATION_NAMES.SETTINGS); cy.visit(SettingsMenu.departments); Departments.waitLoading(); - ConsortiaControlledVocabularyPaneset.verifyRecordNotInTheList(testData.sharedDepartment.name); + ConsortiaControlledVocabularyPaneset.verifyRecordNotInTheList( + testData.sharedDepartment.name, + ); /* <---------- STEP 26: END ----------> */ /* <---------- STEP 27: BEGIN ----------> */ @@ -422,7 +440,9 @@ describe('Consortia', () => { TopMenuNavigation.navigateToApp(APPLICATION_NAMES.SETTINGS); cy.visit(SettingsMenu.departments); Departments.waitLoading(); - ConsortiaControlledVocabularyPaneset.verifyRecordNotInTheList(testData.sharedDepartment.name); + ConsortiaControlledVocabularyPaneset.verifyRecordNotInTheList( + testData.sharedDepartment.name, + ); /* <---------- STEP 27: END ----------> */ }, ); diff --git a/cypress/e2e/data-import/e2e/edi-import-file-for-create-invoice-record.cy.js b/cypress/e2e/data-import/e2e/edi-import-file-for-create-invoice-record.cy.js index 5430e34ed9..d7bee29da2 100644 --- a/cypress/e2e/data-import/e2e/edi-import-file-for-create-invoice-record.cy.js +++ b/cypress/e2e/data-import/e2e/edi-import-file-for-create-invoice-record.cy.js @@ -89,7 +89,7 @@ describe('Data Import', () => { it( 'C343338 EDIFACT file import with creating of new invoice record (folijet)', - { tags: ['smoke', 'folijet', 'C343338', 'shiftLeft'] }, + { tags: ['smoke', 'folijet', 'shiftLeft', 'C343338'] }, () => { // create Field mapping profile cy.wait(2000); diff --git a/cypress/e2e/export-manager/check-view-jobs.cy.js b/cypress/e2e/export-manager/check-view-jobs.cy.js index f27911fa81..d4b8d30ad5 100644 --- a/cypress/e2e/export-manager/check-view-jobs.cy.js +++ b/cypress/e2e/export-manager/check-view-jobs.cy.js @@ -1,13 +1,10 @@ -import { APPLICATION_NAMES } from '../../support/constants'; +import { APPLICATION_NAMES, LOCATION_NAMES } from '../../support/constants'; import Permissions from '../../support/dictionary/permissions'; import ExportManagerSearchPane from '../../support/fragments/exportManager/exportManagerSearchPane'; -import NewOrder from '../../support/fragments/orders/newOrder'; -import OrderLines from '../../support/fragments/orders/orderLines'; -import Orders from '../../support/fragments/orders/orders'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; -import NewLocation from '../../support/fragments/settings/tenant/locations/newLocation'; -import ServicePoints from '../../support/fragments/settings/tenant/servicePoints/servicePoints'; +import { InventoryInstance, InventoryInstances } from '../../support/fragments/inventory'; +import { NewOrder, OrderLines, Orders } from '../../support/fragments/orders'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import Users from '../../support/fragments/users/users'; @@ -63,23 +60,23 @@ describe('Export Manager', () => { const UTCTime = DateTools.getUTCDateForScheduling(); let user; let location; - let servicePointId; let orderNumber; + let instance; before(() => { cy.getAdminToken(); - ServicePoints.getViaApi().then((servicePoint) => { - servicePointId = servicePoint[0].id; - NewLocation.createViaApi(NewLocation.getDefaultLocation(servicePointId)).then((res) => { - location = res; - }); + InventoryInstance.createInstanceViaApi().then(({ instanceData }) => { + instance = instanceData; + }); + cy.getLocations({ query: `name="${LOCATION_NAMES.ANNEX_UI}"` }).then((response) => { + location = response; }); Organizations.createOrganizationViaApi(organization).then((organizationsResponse) => { organization.id = organizationsResponse; order.vendor = organizationsResponse; }); cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.addIntegration(); @@ -108,7 +105,8 @@ describe('Export Manager', () => { orderNumber = response.body.poNumber; }); // Need to wait while first job will be runing - cy.wait(60000); + cy.wait(30000); + cy.createTempUser([ Permissions.uiOrdersView.gui, Permissions.uiOrdersCreate.gui, @@ -119,8 +117,18 @@ describe('Export Manager', () => { Permissions.uiExportOrders.gui, Permissions.exportManagerAll.gui, Permissions.exportManagerDownloadAndResendFiles.gui, + Permissions.uiOrdersView.gui, + Permissions.uiOrdersCreate.gui, + Permissions.uiOrdersEdit.gui, + Permissions.uiOrdersApprovePurchaseOrders.gui, + Permissions.uiOrganizationsViewEditCreate.gui, + Permissions.uiOrganizationsView.gui, + Permissions.uiExportOrders.gui, + Permissions.exportManagerAll.gui, + Permissions.exportManagerDownloadAndResendFiles.gui, ]).then((userProperties) => { user = userProperties; + cy.login(user.username, user.password, { path: TopMenu.ordersPath, waiter: Orders.waitLoading, @@ -129,21 +137,10 @@ describe('Export Manager', () => { }); after(() => { - cy.loginAsAdmin({ path: TopMenu.ordersPath, waiter: Orders.waitLoading }); - Orders.searchByParameter('PO number', orderNumber); - Orders.selectFromResultsList(orderNumber); - Orders.unOpenOrder(); - // Need to wait until the order is opened before deleting it - cy.wait(2000); + cy.getAdminToken(); Orders.deleteOrderViaApi(order.id); - + InventoryInstances.deleteInstanceAndItsHoldingsAndItemsViaApi(instance.instanceId); Organizations.deleteOrganizationViaApi(organization.id); - NewLocation.deleteInstitutionCampusLibraryLocationViaApi( - location.institutionId, - location.campusId, - location.libraryId, - location.id, - ); Users.deleteViaApi(user.userId); }); @@ -154,10 +151,11 @@ describe('Export Manager', () => { Orders.searchByParameter('PO number', orderNumber); Orders.selectFromResultsList(orderNumber); Orders.createPOLineViaActions(); - OrderLines.selectRandomInstanceInTitleLookUP('*', 1); + OrderLines.selectRandomInstanceInTitleLookUP(instance.instanceId, 0); OrderLines.fillInPOLineInfoForExportWithLocation('Purchase', location.name); OrderLines.backToEditingOrder(); Orders.openOrder(); + TopMenuNavigation.navigateToApp(APPLICATION_NAMES.EXPORT_MANAGER); ExportManagerSearchPane.selectOrganizationsSearch(); ExportManagerSearchPane.searchByFailed(); diff --git a/cypress/e2e/export-manager/export-orders-in-edifact-format/job-type-filter-has-valid-options-list.cy.js b/cypress/e2e/export-manager/export-orders-in-edifact-format/job-type-filter-has-valid-options-list.cy.js index 50e940385e..5fc149266f 100644 --- a/cypress/e2e/export-manager/export-orders-in-edifact-format/job-type-filter-has-valid-options-list.cy.js +++ b/cypress/e2e/export-manager/export-orders-in-edifact-format/job-type-filter-has-valid-options-list.cy.js @@ -1,42 +1,124 @@ import moment from 'moment'; -import { ACQUISITION_METHOD_NAMES_IN_PROFILE } from '../../../support/constants'; -import { Permissions } from '../../../support/dictionary'; -import ExportManagerSearchPane from '../../../support/fragments/exportManager/exportManagerSearchPane'; import { - Integrations, - NewOrganization, - Organizations, -} from '../../../support/fragments/organizations'; + ACQUISITION_METHOD_NAMES_IN_PROFILE, + LOCATION_NAMES, + ORDER_STATUSES, +} from '../../../support/constants'; +import Permissions from '../../../support/dictionary/permissions'; +import BulkEditSearchPane from '../../../support/fragments/bulk-edit/bulk-edit-search-pane'; +import ExportManagerSearchPane from '../../../support/fragments/exportManager/exportManagerSearchPane'; +import { BasicOrderLine, NewOrder, OrderLines, Orders } from '../../../support/fragments/orders'; +import { NewOrganization, Organizations } from '../../../support/fragments/organizations'; +import Integrations from '../../../support/fragments/organizations/integrations/integrations'; +import MaterialTypes from '../../../support/fragments/settings/inventory/materialTypes'; import TopMenu from '../../../support/fragments/topMenu'; import Users from '../../../support/fragments/users/users'; +import FileManager from '../../../support/utils/fileManager'; +import getRandomPostfix from '../../../support/utils/stringTools'; describe('Export Manager', () => { describe('Export Orders in EDIFACT format', () => { const now = moment(); + const order = { + ...NewOrder.defaultOneTimeOrder, + approved: true, + }; + const organization = { + ...NewOrganization.defaultUiOrganizations, + accounts: [ + { + accountNo: getRandomPostfix(), + accountStatus: 'Active', + acqUnitIds: [], + appSystemNo: '', + description: 'Main library account', + libraryCode: 'COB', + libraryEdiCode: getRandomPostfix(), + name: 'TestAccout1', + notes: '', + paymentMethod: 'Cash', + }, + ], + }; const testData = { - organization: NewOrganization.getDefaultOrganization({ accounts: 1 }), + user: {}, + userUUIDsFileName: `userUUIDs_${getRandomPostfix()}.csv`, }; before('Create test data', () => { cy.getAdminToken().then(() => { - Organizations.createOrganizationViaApi(testData.organization).then(() => { + Organizations.createOrganizationViaApi(organization).then((organizationsResponse) => { + organization.id = organizationsResponse; + order.vendor = organizationsResponse; + cy.getAcquisitionMethodsApi({ query: `value="${ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE}"`, - }).then(({ body: { acquisitionMethods } }) => { - const acqMethod = acquisitionMethods.find( - ({ value }) => value === ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE, - ); + }).then((acqMethod) => { + cy.getLocations({ query: `name="${LOCATION_NAMES.MAIN_LIBRARY_UI}"` }).then( + (locationResp) => { + MaterialTypes.createMaterialTypeViaApi(MaterialTypes.getDefaultMaterialType()).then( + (mtypes) => { + const orderLine = { + ...BasicOrderLine.defaultOrderLine, + cost: { + listUnitPrice: 20.0, + currency: 'USD', + discountType: 'percentage', + quantityPhysical: 1, + poLineEstimatedPrice: 20.0, + }, + locations: [ + { locationId: locationResp.id, quantity: 1, quantityPhysical: 1 }, + ], + acquisitionMethod: acqMethod.body.acquisitionMethods[0].id, + physical: { + createInventory: 'Instance, Holding, Item', + materialType: mtypes.body.id, + volumes: [], + }, + automaticExport: true, + vendorDetail: { vendorAccount: null }, + }; + cy.createOrderApi(order).then((orderResponse) => { + testData.orderNumber = orderResponse.body.poNumber; + orderLine.purchaseOrderId = orderResponse.body.id; - now.set('second', now.second() + 10); - testData.integration = Integrations.getDefaultIntegration({ - vendorId: testData.organization.id, - acqMethodId: acqMethod.id, - scheduleTime: now.utc().format('HH:mm:ss'), - }); - Integrations.createIntegrationViaApi(testData.integration); + OrderLines.createOrderLineViaApi(orderLine); + Orders.updateOrderViaApi({ + ...orderResponse.body, + workflowStatus: ORDER_STATUSES.OPEN, + }).then(() => { + testData.integration = Integrations.getDefaultIntegration({ + vendorId: organization.id, + acqMethodId: acqMethod.body.acquisitionMethods[0].id, + accountNoList: [organization.accounts[0].accountNo], + scheduleTime: now.utc().format('HH:mm:ss'), + isDefaultConfig: true, + }); + testData.integrationName = + testData.integration.exportTypeSpecificParameters.vendorEdiOrdersExportConfig.configName; + Integrations.createIntegrationViaApi(testData.integration); + }); + }); + }, + ); + }, + ); }); }); + cy.loginAsAdmin({ + path: TopMenu.bulkEditPath, + waiter: BulkEditSearchPane.waitLoading, + }); + FileManager.createFile( + `cypress/fixtures/${testData.userUUIDsFileName}`, + testData.user.userId, + ); + BulkEditSearchPane.checkUsersRadio(); + BulkEditSearchPane.selectRecordIdentifier('User UUIDs'); + BulkEditSearchPane.uploadFile(testData.userUUIDsFileName); + BulkEditSearchPane.waitFileUploading(); }); cy.createTempUser([Permissions.exportManagerAll.gui]).then((userProperties) => { @@ -51,8 +133,9 @@ describe('Export Manager', () => { after('Delete test data', () => { cy.getAdminToken().then(() => { - Organizations.deleteOrganizationViaApi(testData.organization.id); + Organizations.deleteOrganizationViaApi(organization.id); Integrations.deleteIntegrationViaApi(testData.integration.id); + Orders.deleteOrderViaApi(order.id); Users.deleteViaApi(testData.user.userId); }); }); diff --git a/cypress/e2e/export-manager/export-orders-in-edifact-format/sorting-by-export-method-does-not-reset-search-results.cy.js b/cypress/e2e/export-manager/export-orders-in-edifact-format/sorting-by-export-method-does-not-reset-search-results.cy.js index 428f4e004c..168f24ebb3 100644 --- a/cypress/e2e/export-manager/export-orders-in-edifact-format/sorting-by-export-method-does-not-reset-search-results.cy.js +++ b/cypress/e2e/export-manager/export-orders-in-edifact-format/sorting-by-export-method-does-not-reset-search-results.cy.js @@ -6,6 +6,7 @@ import OrderLines from '../../../support/fragments/orders/orderLines'; import Orders from '../../../support/fragments/orders/orders'; import NewOrganization from '../../../support/fragments/organizations/newOrganization'; import Organizations from '../../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; import NewLocation from '../../../support/fragments/settings/tenant/locations/newLocation'; import ServicePoints from '../../../support/fragments/settings/tenant/servicePoints/servicePoints'; import TopMenu from '../../../support/fragments/topMenu'; @@ -90,7 +91,7 @@ describe('Export Manager', () => { orderForFirstOrganization.orderType = 'One-time'; cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading }); - Organizations.searchByParameters('Name', firstOrganization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', firstOrganization.name); Organizations.checkSearchResults(firstOrganization); Organizations.selectOrganization(firstOrganization.name); Organizations.addIntegration(); @@ -111,7 +112,7 @@ describe('Export Manager', () => { orderForSecondOrganization.orderType = 'One-time'; cy.visit(TopMenu.organizationsPath); - Organizations.searchByParameters('Name', secondOrganization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', secondOrganization.name); Organizations.checkSearchResults(secondOrganization); Organizations.selectOrganization(secondOrganization.name); Organizations.addIntegration(); diff --git a/cypress/e2e/export-manager/job-for-order-with-acquisition-unit.cy.js b/cypress/e2e/export-manager/job-for-order-with-acquisition-unit.cy.js index 43e642197e..74dd87ef24 100644 --- a/cypress/e2e/export-manager/job-for-order-with-acquisition-unit.cy.js +++ b/cypress/e2e/export-manager/job-for-order-with-acquisition-unit.cy.js @@ -1,21 +1,31 @@ -import permissions from '../../support/dictionary/permissions'; +import moment from 'moment'; +import { + ACQUISITION_METHOD_NAMES_IN_PROFILE, + LOCATION_NAMES, + ORDER_STATUSES, +} from '../../support/constants'; +import Permissions from '../../support/dictionary/permissions'; import ExportManagerSearchPane from '../../support/fragments/exportManager/exportManagerSearchPane'; -import NewOrder from '../../support/fragments/orders/newOrder'; -import OrderLines from '../../support/fragments/orders/orderLines'; -import Orders from '../../support/fragments/orders/orders'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; +import { BasicOrderLine, NewOrder, OrderLines, Orders } from '../../support/fragments/orders'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import Integrations from '../../support/fragments/organizations/integrations/integrations'; import AcquisitionUnits from '../../support/fragments/settings/acquisitionUnits/acquisitionUnits'; -import NewLocation from '../../support/fragments/settings/tenant/locations/newLocation'; -import ServicePoints from '../../support/fragments/settings/tenant/servicePoints/servicePoints'; -import SettingsMenu from '../../support/fragments/settingsMenu'; +import MaterialTypes from '../../support/fragments/settings/inventory/materialTypes'; import TopMenu from '../../support/fragments/topMenu'; +import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; describe('Export Manager', () => { describe('Export Orders in EDIFACT format', () => { describe('Orders Export to a Vendor', () => { - const defaultAcquisitionUnit = { ...AcquisitionUnits.defaultAcquisitionUnit }; + const now = moment(); + const acquisitionUnit = { + ...AcquisitionUnits.defaultAcquisitionUnit, + protectDelete: true, + protectUpdate: true, + protectCreate: true, + protectRead: true, + }; const order = { ...NewOrder.defaultOneTimeOrder, approved: true, @@ -37,67 +47,112 @@ describe('Export Manager', () => { }, ], }; - const integrationName = `FirstIntegrationName${getRandomPostfix()}`; - const integartionDescription = 'Test Integation descripton1'; - const vendorEDICodeFor1Integration = getRandomPostfix(); - const libraryEDICodeFor1Integration = getRandomPostfix(); - let user; - let location; - let servicePointId; - let orderNumber; + const testData = { + user: {}, + }; before(() => { - cy.getAdminToken(); + cy.getAdminToken().then(() => { + Organizations.createOrganizationViaApi(organization).then((organizationsResponse) => { + organization.id = organizationsResponse; + order.vendor = organizationsResponse; + + cy.getAcquisitionMethodsApi({ + query: `value="${ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE}"`, + }).then((acqMethod) => { + cy.getLocations({ query: `name="${LOCATION_NAMES.MAIN_LIBRARY_UI}"` }).then( + (locationResp) => { + MaterialTypes.createMaterialTypeViaApi( + MaterialTypes.getDefaultMaterialType(), + ).then((mtypes) => { + const orderLine = { + ...BasicOrderLine.defaultOrderLine, + cost: { + listUnitPrice: 20.0, + currency: 'USD', + discountType: 'percentage', + quantityPhysical: 1, + poLineEstimatedPrice: 20.0, + }, + locations: [ + { locationId: locationResp.id, quantity: 1, quantityPhysical: 1 }, + ], + acquisitionMethod: acqMethod.body.acquisitionMethods[0].id, + physical: { + createInventory: 'Instance, Holding, Item', + materialType: mtypes.body.id, + volumes: [], + }, + automaticExport: true, + vendorDetail: { vendorAccount: null }, + }; + cy.createOrderApi(order).then((orderResponse) => { + testData.orderId = orderResponse.body.id; + orderLine.purchaseOrderId = orderResponse.body.id; + + OrderLines.createOrderLineViaApi(orderLine); + Orders.updateOrderViaApi({ + ...orderResponse.body, + workflowStatus: ORDER_STATUSES.OPEN, + }).then(() => { + testData.integration = Integrations.getDefaultIntegration({ + vendorId: organization.id, + acqMethodId: acqMethod.body.acquisitionMethods[0].id, + accountNoList: [organization.accounts[0].accountNo], + scheduleTime: now.utc().format('HH:mm:ss'), + isDefaultConfig: true, + }); + testData.integrationName = + testData.integration.exportTypeSpecificParameters.vendorEdiOrdersExportConfig.configName; + Integrations.createIntegrationViaApi(testData.integration); + }); + }); + }); + }, + ); + }); + }); + }); + cy.createTempUser([ - permissions.exportManagerAll.gui, - permissions.uiOrdersView.gui, - permissions.uiOrganizationsIntegrationUsernamesAndPasswordsViewEdit.gui, - permissions.uiOrganizationsViewEdit.gui, + Permissions.exportManagerAll.gui, + Permissions.uiOrdersView.gui, + Permissions.uiOrganizationsIntegrationUsernamesAndPasswordsViewEdit.gui, + Permissions.uiOrganizationsViewEdit.gui, ]).then((userProperties) => { - user = userProperties; - cy.loginAsAdmin({ - path: SettingsMenu.acquisitionUnitsPath, - waiter: AcquisitionUnits.waitLoading, + testData.user = userProperties; + + AcquisitionUnits.createAcquisitionUnitViaApi(acquisitionUnit).then((acqUnitResponse) => { + acquisitionUnit.id = acqUnitResponse.id; + + AcquisitionUnits.assignUserViaApi(userProperties.userId, acquisitionUnit.id).then( + (id) => { + testData.membershipUserId = id; + }, + ); + cy.getAdminUserDetails().then((adminUser) => { + AcquisitionUnits.assignUserViaApi(adminUser.id, acquisitionUnit.id).then((id) => { + testData.membershipAdminId = id; + }); + }); }); - AcquisitionUnits.newAcquisitionUnit(); - AcquisitionUnits.fillInAUInfo(defaultAcquisitionUnit.name); - AcquisitionUnits.assignAdmin(); - AcquisitionUnits.assignUser(user.username); - }); - ServicePoints.getViaApi().then((servicePoint) => { - servicePointId = servicePoint[0].id; - NewLocation.createViaApi(NewLocation.getDefaultLocation(servicePointId)).then((res) => { - location = res; + + cy.login(userProperties.username, userProperties.password, { + path: TopMenu.exportManagerOrganizationsPath, + waiter: ExportManagerSearchPane.waitLoading, }); }); - Organizations.createOrganizationViaApi(organization).then((organizationsResponse) => { - organization.id = organizationsResponse; - order.vendor = organizationsResponse; - }); - cy.visit(TopMenu.organizationsPath); - Organizations.searchByParameters('Name', organization.name); - Organizations.checkSearchResults(organization); - Organizations.selectOrganization(organization.name); - Organizations.addIntegration(); - Organizations.fillIntegrationInformation( - integrationName, - integartionDescription, - vendorEDICodeFor1Integration, - libraryEDICodeFor1Integration, - organization.accounts[0].accountNo, - 'Purchase', - ); + }); - cy.createOrderApi(order).then((response) => { - orderNumber = response.body.poNumber; - cy.visit(TopMenu.ordersPath); - Orders.searchByParameter('PO number', orderNumber); - Orders.selectFromResultsList(orderNumber); - Orders.createPOLineViaActions(); - OrderLines.selectRandomInstanceInTitleLookUP('*', 20); - OrderLines.fillInPOLineInfoForExportWithLocation('Purchase', location.name); - OrderLines.backToEditingOrder(); - Orders.openOrder(); + after(() => { + cy.getAdminToken().then(() => { + Organizations.deleteOrganizationViaApi(organization.id); + Integrations.deleteIntegrationViaApi(testData.integration.id); + Orders.deleteOrderViaApi(testData.orderId); + AcquisitionUnits.unAssignUserViaApi(testData.membershipUserId); + AcquisitionUnits.unAssignUserViaApi(testData.membershipAdminId); + Users.deleteViaApi(testData.user.userId); + AcquisitionUnits.deleteAcquisitionUnitViaApi(acquisitionUnit.id); }); }); @@ -105,20 +160,16 @@ describe('Export Manager', () => { 'C380640 Schedule export job for order with Acquisition unit (thunderjet) (TaaS)', { tags: ['extendedPath', 'thunderjet', 'C380640'] }, () => { - cy.login(user.username, user.password, { - path: TopMenu.exportManagerOrganizationsPath, - waiter: ExportManagerSearchPane.waitLoading, - }); ExportManagerSearchPane.selectOrganizationsSearch(); - ExportManagerSearchPane.selectExportMethod(integrationName); - ExportManagerSearchPane.selectJobByIntegrationInList(integrationName); + ExportManagerSearchPane.selectExportMethod(testData.integrationName); + ExportManagerSearchPane.selectJobByIntegrationInList(testData.integrationName); ExportManagerSearchPane.rerunJob(); - cy.reload(); + cy.wait(7000); ExportManagerSearchPane.verifyResult('Successful'); ExportManagerSearchPane.selectJob('Successful'); ExportManagerSearchPane.verifyJobStatusInDetailView('Successful'); ExportManagerSearchPane.verifyJobOrganizationInDetailView(organization); - ExportManagerSearchPane.verifyJobExportMethodInDetailView(integrationName); + ExportManagerSearchPane.verifyJobExportMethodInDetailView(testData.integrationName); }, ); }); diff --git a/cypress/e2e/export-manager/orders-export-to-a-vendor/days-for-weekly-scheduling-are-not-displaying-in-new-scheduling-settings.cy.js b/cypress/e2e/export-manager/orders-export-to-a-vendor/days-for-weekly-scheduling-are-not-displaying-in-new-scheduling-settings.cy.js index dc257bb406..bb2d6eab9e 100644 --- a/cypress/e2e/export-manager/orders-export-to-a-vendor/days-for-weekly-scheduling-are-not-displaying-in-new-scheduling-settings.cy.js +++ b/cypress/e2e/export-manager/orders-export-to-a-vendor/days-for-weekly-scheduling-are-not-displaying-in-new-scheduling-settings.cy.js @@ -10,6 +10,7 @@ import TopMenu from '../../../support/fragments/topMenu'; import Users from '../../../support/fragments/users/users'; import getRandomPostfix from '../../../support/utils/stringTools'; import { ACQUISITION_METHOD_NAMES_IN_PROFILE } from '../../../support/constants'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Export Manager', () => { describe('Export Orders in EDIFACT format: Orders Export to a Vendor', () => { @@ -112,7 +113,7 @@ describe('Export Manager', () => { 'C359200 Days previously chosen for weekly scheduling are NOT displaying in new current scheduling settings (thunderjet) (TaaS)', { tags: ['criticalPath', 'thunderjet', 'C359200'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.selectIntegration(integrationName); diff --git a/cypress/e2e/export-manager/orders-export-to-a-vendor/downloading-the-exact-edi-file.cy.js b/cypress/e2e/export-manager/orders-export-to-a-vendor/downloading-the-exact-edi-file.cy.js index da9acb31ff..3fa15d60fc 100644 --- a/cypress/e2e/export-manager/orders-export-to-a-vendor/downloading-the-exact-edi-file.cy.js +++ b/cypress/e2e/export-manager/orders-export-to-a-vendor/downloading-the-exact-edi-file.cy.js @@ -5,6 +5,7 @@ import OrderLines from '../../../support/fragments/orders/orderLines'; import Orders from '../../../support/fragments/orders/orders'; import NewOrganization from '../../../support/fragments/organizations/newOrganization'; import Organizations from '../../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; import NewLocation from '../../../support/fragments/settings/tenant/locations/newLocation'; import ServicePoints from '../../../support/fragments/settings/tenant/servicePoints/servicePoints'; import TopMenu from '../../../support/fragments/topMenu'; @@ -77,7 +78,7 @@ describe('Export Manager', () => { order.vendor = organizationsResponse; }); cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.addIntegration(); diff --git a/cypress/e2e/export-manager/orders-export-to-a-vendor/set-daily-scheduling-for-new-integration.cy.js b/cypress/e2e/export-manager/orders-export-to-a-vendor/set-daily-scheduling-for-new-integration.cy.js index ba4d393209..4fb3a27825 100644 --- a/cypress/e2e/export-manager/orders-export-to-a-vendor/set-daily-scheduling-for-new-integration.cy.js +++ b/cypress/e2e/export-manager/orders-export-to-a-vendor/set-daily-scheduling-for-new-integration.cy.js @@ -13,6 +13,7 @@ import Users from '../../../support/fragments/users/users'; import OrganizationDetails from '../../../support/fragments/organizations/organizationDetails'; import IntegrationViewForm from '../../../support/fragments/organizations/integrations/integrationViewForm'; import IntegrationEditForm from '../../../support/fragments/organizations/integrations/integrationEditForm'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Export Manager', () => { describe('Export Orders in EDIFACT format: Orders Export to a Vendor', () => { @@ -76,7 +77,7 @@ describe('Export Manager', () => { { tags: ['criticalPath', 'thunderjet', 'C377048'] }, () => { // Click on the "Name" link for Organization - Organizations.searchByParameters('Name', testData.organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', testData.organization.name); Organizations.checkSearchResults(testData.organization); Organizations.selectOrganization(testData.organization.name); diff --git a/cypress/e2e/export-manager/orders-export-to-a-vendor/trying-to-open-an-order-with-2-pol.cy.js b/cypress/e2e/export-manager/orders-export-to-a-vendor/trying-to-open-an-order-with-2-pol.cy.js index 09c8d9abd9..7df06844bf 100644 --- a/cypress/e2e/export-manager/orders-export-to-a-vendor/trying-to-open-an-order-with-2-pol.cy.js +++ b/cypress/e2e/export-manager/orders-export-to-a-vendor/trying-to-open-an-order-with-2-pol.cy.js @@ -11,6 +11,7 @@ import Users from '../../../support/fragments/users/users'; import getRandomPostfix from '../../../support/utils/stringTools'; import OrderLinesLimit from '../../../support/fragments/settings/orders/orderLinesLimit'; import TopMenuNavigation from '../../../support/fragments/topMenuNavigation'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Export Manager', () => { describe('Export Orders in EDIFACT format: Orders Export to a Vendor', () => { @@ -77,7 +78,7 @@ describe('Export Manager', () => { path: TopMenu.organizationsPath, waiter: Organizations.waitLoading, }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.addIntegration(); diff --git a/cypress/e2e/finance/error-message-appears-when-approve-invoice-from-previous-budget.cy.js b/cypress/e2e/finance/error-message-appears-when-approve-invoice-from-previous-budget.cy.js index fab01c64f5..1f85f3b343 100644 --- a/cypress/e2e/finance/error-message-appears-when-approve-invoice-from-previous-budget.cy.js +++ b/cypress/e2e/finance/error-message-appears-when-approve-invoice-from-previous-budget.cy.js @@ -181,7 +181,7 @@ describe('Finance', () => { // may be flaky due to concurrency issues because 'Approve and pay in one click' is set to 'false' it( 'C375959 Meaningful error message appears when trying to approve invoice with related fund having only previous budget (thunderjet) (TaaS)', - { tags: ['extendedPath', 'thunderjet', 'C375959'] }, + { tags: ['extendedPathFlaky', 'thunderjet', 'C375959'] }, () => { Invoices.searchByNumber(testData.invoice.vendorInvoiceNo); Invoices.selectInvoice(testData.invoice.vendorInvoiceNo); diff --git a/cypress/e2e/finance/fiscalYears/fiscalYearRollover/planned-budget-status-is-updating-to-active-during-rollover.cy.js b/cypress/e2e/finance/fiscalYears/fiscalYearRollover/planned-budget-status-is-updating-to-active-during-rollover.cy.js index 386ca39a7c..029298ff3f 100644 --- a/cypress/e2e/finance/fiscalYears/fiscalYearRollover/planned-budget-status-is-updating-to-active-during-rollover.cy.js +++ b/cypress/e2e/finance/fiscalYears/fiscalYearRollover/planned-budget-status-is-updating-to-active-during-rollover.cy.js @@ -251,7 +251,7 @@ describe('Fiscal Year Rollover', () => { }); it( - 'C359186 "Planned" budget status is updating to "Active" during FY rollover (based on "Expended") (TaaS)', + 'C359186 "Planned" budget status is updating to "Active" during FY rollover (based on "Expended") (thunderjet) (TaaS)', { tags: ['extendedPath', 'thunderjet', 'C359186'] }, () => { FinanceHelp.searchByName(testData.ledger.name); diff --git a/cypress/e2e/finance/fiscalYears/rollover-cash-balance-as-allocation-not-active-option.cy.js b/cypress/e2e/finance/fiscalYears/rollover-cash-balance-as-allocation-not-active-option.cy.js index 1d461badd7..d9521fe6cc 100644 --- a/cypress/e2e/finance/fiscalYears/rollover-cash-balance-as-allocation-not-active-option.cy.js +++ b/cypress/e2e/finance/fiscalYears/rollover-cash-balance-as-allocation-not-active-option.cy.js @@ -1,26 +1,19 @@ import uuid from 'uuid'; -import permissions from '../../../support/dictionary/permissions'; +import { + ACQUISITION_METHOD_NAMES_IN_PROFILE, + INVOICE_STATUSES, + ORDER_STATUSES, +} from '../../../support/constants'; +import Permissions from '../../../support/dictionary/permissions'; +import { Budgets, FiscalYears, Funds, Ledgers } from '../../../support/fragments/finance'; import FinanceHelp from '../../../support/fragments/finance/financeHelper'; -import FiscalYears from '../../../support/fragments/finance/fiscalYears/fiscalYears'; -import Funds from '../../../support/fragments/finance/funds/funds'; -import Ledgers from '../../../support/fragments/finance/ledgers/ledgers'; import Invoices from '../../../support/fragments/invoices/invoices'; -import NewOrder from '../../../support/fragments/orders/newOrder'; -import OrderLines from '../../../support/fragments/orders/orderLines'; -import Orders from '../../../support/fragments/orders/orders'; -import NewOrganization from '../../../support/fragments/organizations/newOrganization'; -import Organizations from '../../../support/fragments/organizations/organizations'; +import { BasicOrderLine, NewOrder, OrderLines, Orders } from '../../../support/fragments/orders'; +import { NewOrganization, Organizations } from '../../../support/fragments/organizations'; import TopMenu from '../../../support/fragments/topMenu'; import Users from '../../../support/fragments/users/users'; import DateTools from '../../../support/utils/dateTools'; import getRandomPostfix from '../../../support/utils/stringTools'; -import Budgets from '../../../support/fragments/finance/budgets/budgets'; -import { - ACQUISITION_METHOD_NAMES_IN_PROFILE, - INVOICE_STATUSES, - ORDER_STATUSES, -} from '../../../support/constants'; -import BasicOrderLine from '../../../support/fragments/orders/basicOrderLine'; describe('Finance', () => { describe('Fiscal Year Rollover', () => { @@ -184,11 +177,11 @@ describe('Finance', () => { }); cy.createTempUser([ - permissions.uiFinanceExecuteFiscalYearRollover.gui, - permissions.uiFinanceViewFiscalYear.gui, - permissions.uiFinanceViewFundAndBudget.gui, - permissions.uiFinanceViewLedger.gui, - permissions.uiOrdersView.gui, + Permissions.uiFinanceExecuteFiscalYearRollover.gui, + Permissions.uiFinanceViewFiscalYear.gui, + Permissions.uiFinanceViewFundAndBudget.gui, + Permissions.uiFinanceViewLedger.gui, + Permissions.uiOrdersView.gui, ]).then((userProperties) => { user = userProperties; cy.login(userProperties.username, userProperties.password, { diff --git a/cypress/e2e/finance/funds/transfer-allocation-between-funds.cy.js b/cypress/e2e/finance/funds/transfer-allocation-between-funds.cy.js index 228bc2c16a..674f994ea3 100644 --- a/cypress/e2e/finance/funds/transfer-allocation-between-funds.cy.js +++ b/cypress/e2e/finance/funds/transfer-allocation-between-funds.cy.js @@ -221,7 +221,7 @@ describe('Finance', () => { it( 'C375067 Money transfer between funds is successful if budget "To" already has negative available amount (thunderjet) (TaaS)', - { tags: ['extendedPath', 'thunderjet', 'C374184'] }, + { tags: ['extendedPath', 'thunderjet', 'C375067'] }, () => { // Open Fund B from Preconditions FinanceHelper.searchByName(funds.second.name); diff --git a/cypress/e2e/fse/ui/organizations-ui.cy.js b/cypress/e2e/fse/ui/organizations-ui.cy.js index 1f32ae3b93..8ea386392c 100644 --- a/cypress/e2e/fse/ui/organizations-ui.cy.js +++ b/cypress/e2e/fse/ui/organizations-ui.cy.js @@ -60,7 +60,7 @@ describe('fse-organizations - UI (data manipulation)', () => { { tags: ['nonProd', 'fse', 'ui', 'organizations', 'fse-user-journey'] }, () => { // create new organization via UI - Organizations.createOrganizationViaUi(organization); + Organizations.createOrganization(organization); Organizations.checkOrganizationInfo(organization); // assign an interface Organizations.editOrganization(); @@ -97,7 +97,7 @@ describe('fse-organizations - UI (data manipulation)', () => { () => { // create new organization via UI organization.name += 'FSE_TEST_TC195673'; - Organizations.createOrganizationViaUi(organization); + Organizations.createOrganization(organization); Organizations.checkOrganizationInfo(organization); // add organization to an agreement TopMenuNavigation.openAppFromDropdown(APPLICATION_NAMES.AGREEMENTS); diff --git a/cypress/e2e/inventory/bound-with/bound-with-items-view-on-bound-holdings.cy.js b/cypress/e2e/inventory/bound-with/bound-with-items-view-on-bound-holdings.cy.js index a96569a111..50b2490d4c 100644 --- a/cypress/e2e/inventory/bound-with/bound-with-items-view-on-bound-holdings.cy.js +++ b/cypress/e2e/inventory/bound-with/bound-with-items-view-on-bound-holdings.cy.js @@ -148,7 +148,7 @@ describe('Inventory', () => { it( 'C409512 Verify the Bound-with items view on bound holdings (sif)', - { tags: ['criticalPath', 'sif', 'eurekaPhase1'] }, + { tags: ['criticalPath', 'sif', 'C409512'] }, () => { InventorySearchAndFilter.searchByParameter('Title (all)', testData.firstInstanceTitle); InstanceRecordView.verifyInstanceRecordViewOpened(); diff --git a/cypress/e2e/inventory/fast-add/create-fast-add-record.cy.js b/cypress/e2e/inventory/fast-add/create-fast-add-record.cy.js index bd46fbf42f..3f7c20367d 100644 --- a/cypress/e2e/inventory/fast-add/create-fast-add-record.cy.js +++ b/cypress/e2e/inventory/fast-add/create-fast-add-record.cy.js @@ -116,7 +116,7 @@ describe('Inventory', () => { it( 'C16972 Create a fast add record from Inventory. Journal issue. (folijet) (TaaS)', - { tags: ['extendedPath', 'folijet', 'C16972', 'eurekaPhase1'] }, + { tags: ['extendedPath', 'folijet', 'C16972'] }, () => { const fastAddRecord = { ...FastAddNewRecord.fastAddNewRecordFormDetails }; fastAddRecord.resourceTitle = `Journal issue${randomFourDigitNumber()}`; diff --git a/cypress/e2e/inventory/instance/in-accordion-descriptive-data-test-assigning-nature-of-content.cy.js b/cypress/e2e/inventory/instance/in-accordion-descriptive-data-test-assigning-nature-of-content.cy.js index ed697eaa21..32647e102a 100644 --- a/cypress/e2e/inventory/instance/in-accordion-descriptive-data-test-assigning-nature-of-content.cy.js +++ b/cypress/e2e/inventory/instance/in-accordion-descriptive-data-test-assigning-nature-of-content.cy.js @@ -33,13 +33,7 @@ describe('Inventory', () => { after('Delete test data', () => { cy.getAdminToken().then(() => { Users.deleteViaApi(user.userId); - cy.getInstance({ - limit: 1, - expandAll: true, - query: `"title"=="${testData.instance.instanceTitle}"`, - }).then((instance) => { - InventoryInstance.deleteInstanceViaApi(instance.id); - }); + InventoryInstance.deleteInstanceViaApi(testData.instance.instanceId); }); }); diff --git a/cypress/e2e/inventory/move-holdings-and-item/moving-item-between-holdings.cy.js b/cypress/e2e/inventory/move-holdings-and-item/moving-item-between-holdings.cy.js index f105854142..d621617c91 100644 --- a/cypress/e2e/inventory/move-holdings-and-item/moving-item-between-holdings.cy.js +++ b/cypress/e2e/inventory/move-holdings-and-item/moving-item-between-holdings.cy.js @@ -81,7 +81,7 @@ describe('Inventory', () => { it( 'C15184 Move one item between holdings within an instance (firebird) (TaaS)', - { tags: ['extendedPath', 'firebird', 'C15184', 'eurekaPhase1'] }, + { tags: ['extendedPath', 'firebird', 'C15184'] }, () => { // Find the instance from precondition InventorySearchAndFilter.searchInstanceByTitle(testData.instance.instanceTitle); diff --git a/cypress/e2e/inventory/permissions/create-edit-delete-material-types.cy.js b/cypress/e2e/inventory/permissions/create-edit-delete-material-types.cy.js index 49971a9da6..31dec2263c 100644 --- a/cypress/e2e/inventory/permissions/create-edit-delete-material-types.cy.js +++ b/cypress/e2e/inventory/permissions/create-edit-delete-material-types.cy.js @@ -31,7 +31,7 @@ describe('Inventory', () => { it( 'C505 Settings (Inventory): Create, edit, delete material types (folijet)', - { tags: ['smoke', 'folijet', 'shiftLeft', 'C505', 'eurekaPhase1'] }, + { tags: ['smoke', 'folijet', 'shiftLeft', 'C505'] }, () => { TopMenuNavigation.navigateToApp(APPLICATION_NAMES.SETTINGS); SettingsInventory.goToSettingsInventory(); diff --git a/cypress/e2e/inventory/settings/subjects/delete-action-in-settings-inventory-create-edit-delete-subject-sources-permission-for-linked-to-instance-subject-source.cy.js b/cypress/e2e/inventory/settings/subjects/delete-action-in-settings-inventory-create-edit-delete-subject-sources-permission-for-linked-to-instance-subject-source.cy.js index f583ea3952..a8344f1f70 100644 --- a/cypress/e2e/inventory/settings/subjects/delete-action-in-settings-inventory-create-edit-delete-subject-sources-permission-for-linked-to-instance-subject-source.cy.js +++ b/cypress/e2e/inventory/settings/subjects/delete-action-in-settings-inventory-create-edit-delete-subject-sources-permission-for-linked-to-instance-subject-source.cy.js @@ -1,15 +1,15 @@ +import { APPLICATION_NAMES } from '../../../../support/constants'; import { Permissions } from '../../../../support/dictionary'; -import Users from '../../../../support/fragments/users/users'; -import getRandomPostfix from '../../../../support/utils/stringTools'; +import InventoryInstance from '../../../../support/fragments/inventory/inventoryInstance'; import SubjectSources, { ACTION_BUTTONS, } from '../../../../support/fragments/settings/inventory/instances/subjectSources'; -import InventoryInstance from '../../../../support/fragments/inventory/inventoryInstance'; -import { APPLICATION_NAMES } from '../../../../support/constants'; -import TopMenuNavigation from '../../../../support/fragments/topMenuNavigation'; import SettingsInventory, { INVENTORY_SETTINGS_TABS, } from '../../../../support/fragments/settings/inventory/settingsInventory'; +import TopMenuNavigation from '../../../../support/fragments/topMenuNavigation'; +import Users from '../../../../support/fragments/users/users'; +import getRandomPostfix from '../../../../support/utils/stringTools'; describe('Inventory', () => { describe('Settings', () => { diff --git a/cypress/e2e/invoices/approve-invoice-with-payment-credit.cy.js b/cypress/e2e/invoices/approve-invoice-with-payment-credit.cy.js index fecc7f33a5..0a1717dbf5 100644 --- a/cypress/e2e/invoices/approve-invoice-with-payment-credit.cy.js +++ b/cypress/e2e/invoices/approve-invoice-with-payment-credit.cy.js @@ -1,30 +1,25 @@ -import { ACQUISITION_METHOD_NAMES_IN_PROFILE, ORDER_STATUSES } from '../../support/constants'; -import Budgets from '../../support/fragments/finance/budgets/budgets'; -import BasicOrderLine from '../../support/fragments/orders/basicOrderLine'; -import MaterialTypes from '../../support/fragments/settings/inventory/materialTypes'; -import permissions from '../../support/dictionary/permissions'; +import { + ACQUISITION_METHOD_NAMES_IN_PROFILE, + APPLICATION_NAMES, + LOCATION_NAMES, + ORDER_STATUSES, +} from '../../support/constants'; +import Permissions from '../../support/dictionary/permissions'; +import { Budgets, Funds, Transactions } from '../../support/fragments/finance'; import FinanceHelp from '../../support/fragments/finance/financeHelper'; -import FiscalYears from '../../support/fragments/finance/fiscalYears/fiscalYears'; -import Funds from '../../support/fragments/finance/funds/funds'; -import Ledgers from '../../support/fragments/finance/ledgers/ledgers'; -import Invoices from '../../support/fragments/invoices/invoices'; -import NewInvoice from '../../support/fragments/invoices/newInvoice'; -import NewOrder from '../../support/fragments/orders/newOrder'; -import OrderLines from '../../support/fragments/orders/orderLines'; -import Orders from '../../support/fragments/orders/orders'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; -import NewLocation from '../../support/fragments/settings/tenant/locations/newLocation'; -import ServicePoints from '../../support/fragments/settings/tenant/servicePoints/servicePoints'; +import { Invoices, NewInvoice } from '../../support/fragments/invoices'; +import { BasicOrderLine, NewOrder, OrderLines, Orders } from '../../support/fragments/orders'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import MaterialTypes from '../../support/fragments/settings/inventory/materialTypes'; import TopMenu from '../../support/fragments/topMenu'; +import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import Users from '../../support/fragments/users/users'; -describe('ui-invoices: Cancelling approved invoices', () => { - const firstFiscalYear = { ...FiscalYears.defaultUiFiscalYear }; - - const defaultLedger = { ...Ledgers.defaultUiLedger }; - const defaultFund = { ...Funds.defaultUiFund }; - const firstOrder = { +describe('Invoices', () => { + const testData = { + user: {}, + }; + const order = { ...NewOrder.defaultOneTimeOrder, orderType: 'Ongoing', ongoing: { isSubscription: false, manualRenewal: false }, @@ -33,108 +28,81 @@ describe('ui-invoices: Cancelling approved invoices', () => { }; const organization = { ...NewOrganization.defaultUiOrganizations }; const invoice = { ...NewInvoice.defaultUiInvoice }; - const firstBudget = { - ...Budgets.getDefaultBudget(), - allocated: 100, - }; - let user; - let firstOrderNumber; - let servicePointId; - let location; before(() => { cy.getAdminToken(); - FiscalYears.createViaApi(firstFiscalYear).then((firstFiscalYearResponse) => { - firstFiscalYear.id = firstFiscalYearResponse.id; - firstBudget.fiscalYearId = firstFiscalYearResponse.id; - defaultLedger.fiscalYearOneId = firstFiscalYear.id; - Ledgers.createViaApi(defaultLedger).then((ledgerResponse) => { - defaultLedger.id = ledgerResponse.id; - defaultFund.ledgerId = defaultLedger.id; + const { fiscalYear, fund, budget } = Budgets.createBudgetWithFundLedgerAndFYViaApi(); + testData.fiscalYear = fiscalYear; + testData.fund = fund; + testData.budget = budget; - Funds.createViaApi(defaultFund).then((fundResponse) => { - defaultFund.id = fundResponse.fund.id; - firstBudget.fundId = fundResponse.fund.id; - Budgets.createViaApi(firstBudget); - ServicePoints.getViaApi().then((servicePoint) => { - servicePointId = servicePoint[0].id; - NewLocation.createViaApi(NewLocation.getDefaultLocation(servicePointId)).then((res) => { - location = res; + cy.getLocations({ query: `name="${LOCATION_NAMES.MAIN_LIBRARY_UI}"` }).then((locationResp) => { + MaterialTypes.createMaterialTypeViaApi(MaterialTypes.getDefaultMaterialType()).then( + (mtypes) => { + cy.getAcquisitionMethodsApi({ + query: `value="${ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE_AT_VENDOR_SYSTEM}"`, + }).then((params) => { + Organizations.createOrganizationViaApi(organization).then((responseOrganizations) => { + organization.id = responseOrganizations; + order.vendor = organization.id; - MaterialTypes.createMaterialTypeViaApi(MaterialTypes.getDefaultMaterialType()).then( - (mtypes) => { - cy.getAcquisitionMethodsApi({ - query: `value="${ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE_AT_VENDOR_SYSTEM}"`, - }).then((params) => { - // Prepare 2 Open Orders for Rollover - Organizations.createOrganizationViaApi(organization).then( - (responseOrganizations) => { - organization.id = responseOrganizations; - firstOrder.vendor = organization.id; - const firstOrderLine = { - ...BasicOrderLine.defaultOrderLine, - cost: { - listUnitPrice: 20.0, - currency: 'USD', - discountType: 'percentage', - quantityPhysical: 1, - poLineEstimatedPrice: 20.0, - }, - fundDistribution: [ - { code: defaultFund.code, fundId: defaultFund.id, value: 100 }, - ], - locations: [ - { locationId: location.id, quantity: 1, quantityPhysical: 1 }, - ], - acquisitionMethod: params.body.acquisitionMethods[0].id, - physical: { - createInventory: 'Instance, Holding, Item', - materialType: mtypes.body.id, - materialSupplier: responseOrganizations, - volumes: [], - }, - }; - Orders.createOrderViaApi(firstOrder).then((firstOrderResponse) => { - firstOrder.id = firstOrderResponse.id; - firstOrderNumber = firstOrderResponse.poNumber; - firstOrderLine.purchaseOrderId = firstOrderResponse.id; - - OrderLines.createOrderLineViaApi(firstOrderLine); - Orders.updateOrderViaApi({ - ...firstOrderResponse, - workflowStatus: ORDER_STATUSES.OPEN, - }); - }); - }, - ); - }); + const orderLine = { + ...BasicOrderLine.defaultOrderLine, + cost: { + listUnitPrice: 20.0, + currency: 'USD', + discountType: 'percentage', + quantityPhysical: 1, + poLineEstimatedPrice: 20.0, + }, + fundDistribution: [ + { code: testData.fund.code, fundId: testData.fund.id, value: 100 }, + ], + locations: [{ locationId: locationResp.id, quantity: 1, quantityPhysical: 1 }], + acquisitionMethod: params.body.acquisitionMethods[0].id, + physical: { + createInventory: 'Instance, Holding, Item', + materialType: mtypes.body.id, + materialSupplier: responseOrganizations, + volumes: [], }, - ); + }; + Orders.createOrderViaApi(order).then((orderResponse) => { + order.id = orderResponse.id; + testData.orderNumber = orderResponse.poNumber; + orderLine.purchaseOrderId = orderResponse.id; + + OrderLines.createOrderLineViaApi(orderLine); + Orders.updateOrderViaApi({ + ...orderResponse, + workflowStatus: ORDER_STATUSES.OPEN, + }); + }); }); }); - }); - }); + }, + ); }); cy.createTempUser([ - permissions.uiFinanceViewEditCreateFundAndBudget.gui, - permissions.uiInvoicesApproveInvoices.gui, - permissions.uiInvoicesPayInvoices.gui, - permissions.viewEditCreateInvoiceInvoiceLine.gui, + Permissions.uiFinanceViewEditCreateFundAndBudget.gui, + Permissions.uiInvoicesApproveInvoices.gui, + Permissions.uiInvoicesPayInvoices.gui, + Permissions.viewEditCreateInvoiceInvoiceLine.gui, ]).then((userProperties) => { - user = userProperties; - cy.waitForAuthRefresh(() => { - cy.login(userProperties.username, userProperties.password, { - path: TopMenu.invoicesPath, - waiter: Invoices.waitLoading, - }); - }, 20_000); + testData.user = userProperties; + + cy.login(userProperties.username, userProperties.password, { + path: TopMenu.invoicesPath, + waiter: Invoices.waitLoading, + }); }); }); + after(() => { cy.getAdminToken(); Organizations.deleteOrganizationViaApi(organization.id); - Users.deleteViaApi(user.userId); + Users.deleteViaApi(testData.user.userId); }); it( @@ -142,45 +110,43 @@ describe('ui-invoices: Cancelling approved invoices', () => { { tags: ['criticalPath', 'thunderjet', 'C347897'] }, () => { Invoices.createRolloverInvoice(invoice, organization.name); - cy.wait(2000); - Invoices.createInvoiceLinePOLLookUWithSubTotal(firstOrderNumber, '10'); - cy.wait(2000); - Invoices.createInvoiceLinePOLLookUWithSubTotal(firstOrderNumber, '-10'); - cy.wait(2000); - Invoices.createInvoiceLinePOLLookUWithSubTotal(firstOrderNumber, '10'); + Invoices.createInvoiceLinePOLLookUWithSubTotal(testData.orderNumber, '10'); + Invoices.createInvoiceLinePOLLookUWithSubTotal(testData.orderNumber, '-10'); + Invoices.createInvoiceLinePOLLookUWithSubTotal(testData.orderNumber, '10'); cy.wait(2000); Invoices.approveInvoice(); - cy.visit(TopMenu.fundPath); - FinanceHelp.searchByName(defaultFund.name); - Funds.selectFund(defaultFund.name); + + TopMenuNavigation.navigateToApp(APPLICATION_NAMES.FINANCE); + FinanceHelp.searchByName(testData.fund.name); + Funds.selectFund(testData.fund.name); Funds.selectBudgetDetails(); Funds.checkFinancialActivityAndOverages('$10.00', '$10.00', '$0.00', '$0.00', '$20.00'); Funds.viewTransactions(); Funds.selectTransactionInList('Encumbrance'); Funds.varifyDetailsInTransaction( - firstFiscalYear.code, + testData.fiscalYear.code, '($10.00)', - `${firstOrderNumber}-1`, + `${testData.orderNumber}-1`, 'Encumbrance', - `${defaultFund.name} (${defaultFund.code})`, + `${testData.fund.name} (${testData.fund.code})`, ); - cy.visit(TopMenu.invoicesPath); + + TopMenuNavigation.navigateToApp(APPLICATION_NAMES.INVOICES); Invoices.searchByNumber(invoice.invoiceNumber); Invoices.selectInvoice(invoice.invoiceNumber); Invoices.payInvoice(); - cy.visit(TopMenu.fundPath); - FinanceHelp.searchByName(defaultFund.name); - Funds.selectFund(defaultFund.name); - Funds.selectBudgetDetails(); + + TopMenuNavigation.navigateToApp(APPLICATION_NAMES.FINANCE); + Transactions.closeTransactionsPage(); Funds.checkFinancialActivityAndOverages('$10.00', '$0.00', '$20.00', '$10.00', '$20.00'); Funds.viewTransactions(); Funds.selectTransactionInList('Credit'); Funds.varifyDetailsInTransactionFundTo( - firstFiscalYear.code, + testData.fiscalYear.code, '$10.00', invoice.invoiceNumber, 'Credit', - `${defaultFund.name} (${defaultFund.code})`, + `${testData.fund.name} (${testData.fund.code})`, ); }, ); diff --git a/cypress/e2e/lists/Export-list/export-list.cy.js b/cypress/e2e/lists/Export-list/export-list.cy.js index b2c341b3b2..166d876112 100644 --- a/cypress/e2e/lists/Export-list/export-list.cy.js +++ b/cypress/e2e/lists/Export-list/export-list.cy.js @@ -5,199 +5,202 @@ import Users from '../../../support/fragments/users/users'; import { getTestEntityValue } from '../../../support/utils/stringTools'; describe('Lists', () => { - describe('Export query', { - retries: { - runMode: 1, + describe( + 'Export query', + { + retries: { + runMode: 1, + }, }, - }, - () => { - const userData = {}; - const listData = { - name: getTestEntityValue('list'), - recordType: 'Users', - visibility: 'Shared', - }; + () => { + const userData = {}; + const listData = { + name: getTestEntityValue('list'), + recordType: 'Users', + visibility: 'Shared', + }; - beforeEach('Create a user', () => { - cy.getAdminToken(); - cy.createTempUser([ - Permissions.listsAll.gui, - Permissions.uiUsersView.gui, - Permissions.uiOrdersCreate.gui, - Permissions.inventoryAll.gui, - Permissions.uiUsersViewLoans.gui, - Permissions.uiOrganizationsView.gui, - ]).then((userProperties) => { - userData.username = userProperties.username; - userData.password = userProperties.password; - userData.userId = userProperties.userId; + beforeEach('Create a user', () => { + cy.getAdminToken(); + cy.createTempUser([ + Permissions.listsAll.gui, + Permissions.uiUsersView.gui, + Permissions.uiOrdersCreate.gui, + Permissions.inventoryAll.gui, + Permissions.uiUsersViewLoans.gui, + Permissions.uiOrganizationsView.gui, + ]).then((userProperties) => { + userData.username = userProperties.username; + userData.password = userProperties.password; + userData.userId = userProperties.userId; + }); }); - }); - afterEach('Delete a user', () => { - cy.getUserToken(userData.username, userData.password); - Lists.deleteListByNameViaApi(listData.name); - cy.getAdminToken(); - Users.deleteViaApi(userData.userId); - }); + afterEach('Delete a user', () => { + cy.getUserToken(userData.username, userData.password); + Lists.deleteListByNameViaApi(listData.name); + cy.getAdminToken(); + Users.deleteViaApi(userData.userId); + }); - it( - 'C411809 Export list: Not canned lists (corsair)', - { tags: ['smoke', 'corsair', 'shiftLeft', 'C411809', 'eurekaPhase1'] }, - () => { - cy.login(userData.username, userData.password, { - path: TopMenu.listsPath, - waiter: Lists.waitLoading, - }); - Lists.openNewListPane(); - Lists.setName(listData.name); - Lists.setDescription(listData.name); - Lists.selectRecordType(listData.recordType); - Lists.selectVisibility(listData.visibility); - Lists.buildQuery(); - Lists.queryBuilderActions(); - Lists.waitForCompilingToComplete(); - Lists.openActions(); - Lists.exportList(); - Lists.verifySuccessCalloutMessage( - `Export of ${listData.name} is being generated. This may take some time for larger lists.`, - ); - cy.wait(3000); - Lists.verifySuccessCalloutMessage( - `List ${listData.name} was successfully exported to CSV.`, - ); - }, - ); + it( + 'C411809 Export list: Not canned lists (corsair)', + { tags: ['smoke', 'corsair', 'shiftLeft', 'C411809', 'eurekaPhase1'] }, + () => { + cy.login(userData.username, userData.password, { + path: TopMenu.listsPath, + waiter: Lists.waitLoading, + }); + Lists.openNewListPane(); + Lists.setName(listData.name); + Lists.setDescription(listData.name); + Lists.selectRecordType(listData.recordType); + Lists.selectVisibility(listData.visibility); + Lists.buildQuery(); + Lists.queryBuilderActions(); + Lists.waitForCompilingToComplete(); + Lists.openActions(); + Lists.exportList(); + Lists.verifySuccessCalloutMessage( + `Export of ${listData.name} is being generated. This may take some time for larger lists.`, + ); + cy.wait(3000); + Lists.verifySuccessCalloutMessage( + `List ${listData.name} was successfully exported to CSV.`, + ); + }, + ); - it( - 'C411811 Export list: Inactive lists (corsair)', - { tags: ['smoke', 'corsair', 'shiftLeft', 'C411811', 'eurekaPhase1'] }, - () => { - cy.login(userData.username, userData.password, { - path: TopMenu.listsPath, - waiter: Lists.waitLoading, - }); - Lists.openNewListPane(); - Lists.setName(listData.name); - Lists.setDescription(listData.name); - Lists.selectRecordType(listData.recordType); - Lists.selectVisibility(listData.visibility); - Lists.selectStatus('Inactive'); - Lists.buildQuery(); - Lists.queryBuilderActions(); - Lists.openActions(); - Lists.verifyExportListButtonIsDisabled(); - }, - ); + it( + 'C411811 Export list: Inactive lists (corsair)', + { tags: ['smoke', 'corsair', 'shiftLeft', 'C411811', 'eurekaPhase1'] }, + () => { + cy.login(userData.username, userData.password, { + path: TopMenu.listsPath, + waiter: Lists.waitLoading, + }); + Lists.openNewListPane(); + Lists.setName(listData.name); + Lists.setDescription(listData.name); + Lists.selectRecordType(listData.recordType); + Lists.selectVisibility(listData.visibility); + Lists.selectStatus('Inactive'); + Lists.buildQuery(); + Lists.queryBuilderActions(); + Lists.openActions(); + Lists.verifyExportListButtonIsDisabled(); + }, + ); - it( - 'C411812 Export list: Refresh is in progress (corsair)', - { tags: ['smoke', 'corsair', 'shiftLeft', 'C411812'] }, - () => { - cy.login(userData.username, userData.password, { - path: TopMenu.listsPath, - waiter: Lists.waitLoading, - }); - Lists.openNewListPane(); - Lists.setName(listData.name); - Lists.setDescription(listData.name); - Lists.selectRecordType(listData.recordType); - Lists.selectVisibility(listData.visibility); - Lists.buildQuery(); - Lists.queryBuilderActions(); - Lists.openActions(); - Lists.verifyExportListButtonIsDisabled(); - Lists.waitForCompilingToComplete(); - }, - ); + it( + 'C411812 Export list: Refresh is in progress (corsair)', + { tags: ['smoke', 'corsair', 'shiftLeft', 'C411812'] }, + () => { + cy.login(userData.username, userData.password, { + path: TopMenu.listsPath, + waiter: Lists.waitLoading, + }); + Lists.openNewListPane(); + Lists.setName(listData.name); + Lists.setDescription(listData.name); + Lists.selectRecordType(listData.recordType); + Lists.selectVisibility(listData.visibility); + Lists.buildQuery(); + Lists.queryBuilderActions(); + Lists.openActions(); + Lists.verifyExportListButtonIsDisabled(); + Lists.waitForCompilingToComplete(); + }, + ); - it( - 'C411813 Export list: Edit is in progress, when the list contains records (corsair)', - { tags: ['criticalPath', 'corsair', 'C411813', 'eurekaPhase1'] }, - () => { - cy.login(userData.username, userData.password, { - path: TopMenu.listsPath, - waiter: Lists.waitLoading, - }); - Lists.openNewListPane(); - Lists.setName(listData.name); - Lists.setDescription(listData.name); - Lists.selectRecordType(listData.recordType); - Lists.selectVisibility(listData.visibility); - Lists.buildQuery(); - Lists.queryBuilderActions(); - Lists.waitForCompilingToComplete(); - Lists.openActions(); - Lists.editList(); - Lists.openActions(); - }, - ); + it( + 'C411813 Export list: Edit is in progress, when the list contains records (corsair)', + { tags: ['criticalPath', 'corsair', 'C411813', 'eurekaPhase1'] }, + () => { + cy.login(userData.username, userData.password, { + path: TopMenu.listsPath, + waiter: Lists.waitLoading, + }); + Lists.openNewListPane(); + Lists.setName(listData.name); + Lists.setDescription(listData.name); + Lists.selectRecordType(listData.recordType); + Lists.selectVisibility(listData.visibility); + Lists.buildQuery(); + Lists.queryBuilderActions(); + Lists.waitForCompilingToComplete(); + Lists.openActions(); + Lists.editList(); + Lists.openActions(); + }, + ); - it( - "C411830 Export list: Edit is in progress, when the list doesn't have query (corsair)", - { tags: ['criticalPath', 'corsair', 'C411830', 'eurekaPhase1'] }, - () => { - cy.login(userData.username, userData.password, { - path: TopMenu.listsPath, - waiter: Lists.waitLoading, - }); - Lists.openNewListPane(); - Lists.setName(listData.name); - Lists.setDescription(listData.name); - Lists.selectRecordType(listData.recordType); - Lists.selectVisibility(listData.visibility); - Lists.saveList(); - Lists.openActions(); - Lists.editList(); - Lists.openActions(); - }, - ); + it( + "C411830 Export list: Edit is in progress, when the list doesn't have query (corsair)", + { tags: ['criticalPath', 'corsair', 'C411830', 'eurekaPhase1'] }, + () => { + cy.login(userData.username, userData.password, { + path: TopMenu.listsPath, + waiter: Lists.waitLoading, + }); + Lists.openNewListPane(); + Lists.setName(listData.name); + Lists.setDescription(listData.name); + Lists.selectRecordType(listData.recordType); + Lists.selectVisibility(listData.visibility); + Lists.saveList(); + Lists.openActions(); + Lists.editList(); + Lists.openActions(); + }, + ); - it( - "C411819 Export list: The list doesn't contain query (corsair)", - { tags: ['smoke', 'corsair', 'C411819', 'eurekaPhase1'] }, - () => { - cy.login(userData.username, userData.password, { - path: TopMenu.listsPath, - waiter: Lists.waitLoading, - }); - Lists.openNewListPane(); - Lists.setName(listData.name); - Lists.setDescription(listData.name); - Lists.selectRecordType(listData.recordType); - Lists.selectVisibility(listData.visibility); - Lists.saveList(); - Lists.openActions(); - Lists.verifyExportListButtonIsDisabled(); - }, - ); + it( + "C411819 Export list: The list doesn't contain query (corsair)", + { tags: ['smoke', 'corsair', 'C411819', 'eurekaPhase1'] }, + () => { + cy.login(userData.username, userData.password, { + path: TopMenu.listsPath, + waiter: Lists.waitLoading, + }); + Lists.openNewListPane(); + Lists.setName(listData.name); + Lists.setDescription(listData.name); + Lists.selectRecordType(listData.recordType); + Lists.selectVisibility(listData.visibility); + Lists.saveList(); + Lists.openActions(); + Lists.verifyExportListButtonIsDisabled(); + }, + ); - it( - 'C411837 Export list: Edit is in progress, when the list has active query with 0 records (corsair)', - { tags: ['obsolete', 'corsair', 'C411837'] }, - () => { - cy.login(userData.username, userData.password, { - path: TopMenu.listsPath, - waiter: Lists.waitLoading, - }); - Lists.openNewListPane(); - Lists.setName(listData.name); - Lists.setDescription(listData.name); - Lists.selectRecordType(listData.recordType); - Lists.selectVisibility(listData.visibility); - Lists.buildQuery(); - cy.get('#field-option-0').click(); - cy.contains('User — Last name, first name').click(); - cy.get('[data-testid="operator-option-0"]').select('=='); - cy.get('[data-testid="input-value-0"]').type('ABCD'); - cy.get('button:contains("Test query")').click(); - cy.wait(4000); - cy.get('button:contains("Run query & save")').click(); - Lists.waitForCompilingToComplete(); - Lists.openActions(); - Lists.editList(); - Lists.openActions(); - }, - ); - }); + it( + 'C411837 Export list: Edit is in progress, when the list has active query with 0 records (corsair)', + { tags: ['obsolete', 'corsair', 'C411837'] }, + () => { + cy.login(userData.username, userData.password, { + path: TopMenu.listsPath, + waiter: Lists.waitLoading, + }); + Lists.openNewListPane(); + Lists.setName(listData.name); + Lists.setDescription(listData.name); + Lists.selectRecordType(listData.recordType); + Lists.selectVisibility(listData.visibility); + Lists.buildQuery(); + cy.get('#field-option-0').click(); + cy.contains('User — Last name, first name').click(); + cy.get('[data-testid="operator-option-0"]').select('=='); + cy.get('[data-testid="input-value-0"]').type('ABCD'); + cy.get('button:contains("Test query")').click(); + cy.wait(4000); + cy.get('button:contains("Run query & save")').click(); + Lists.waitForCompilingToComplete(); + Lists.openActions(); + Lists.editList(); + Lists.openActions(); + }, + ); + }, + ); }); diff --git a/cypress/e2e/lists/edit-list/make-list-private-shared.cy.js b/cypress/e2e/lists/edit-list/make-list-private-shared.cy.js index c6958ea33a..655441c605 100644 --- a/cypress/e2e/lists/edit-list/make-list-private-shared.cy.js +++ b/cypress/e2e/lists/edit-list/make-list-private-shared.cy.js @@ -5,12 +5,14 @@ import Users from '../../../support/fragments/users/users'; import { getTestEntityValue } from '../../../support/utils/stringTools'; describe('Lists', () => { - describe('Edit list', + describe( + 'Edit list', { retries: { runMode: 1, }, - }, () => { + }, + () => { let firstUser = {}; let secondUser = {}; let listData; @@ -147,5 +149,6 @@ describe('Lists', () => { Lists.verifyListIsPresent(listData.name); }, ); - }); + }, + ); }); diff --git a/cypress/e2e/lists/query-builder/search-query-builder-api.cy.js b/cypress/e2e/lists/query-builder/search-query-builder-api.cy.js index 7cf72d5fcc..8acdafd4db 100644 --- a/cypress/e2e/lists/query-builder/search-query-builder-api.cy.js +++ b/cypress/e2e/lists/query-builder/search-query-builder-api.cy.js @@ -14,7 +14,6 @@ import Permissions from '../../../support/dictionary/permissions'; import { Lists } from '../../../support/fragments/lists/lists'; import Users from '../../../support/fragments/users/users'; - describe('Lists', () => { describe('Query Builder API', () => { let version; @@ -29,7 +28,8 @@ describe('Lists', () => { }); const getValues = (fieldName, labelName) => { - const entityTypeId = typeData.columns.find((column) => column.name === fieldName).source.entityTypeId; + const entityTypeId = typeData.columns.find((column) => column.name === fieldName).source + .entityTypeId; return Lists.getEntityTypeColumnsViaApi(entityTypeId, labelName).then((body) => { return body.content; }); @@ -45,7 +45,9 @@ describe('Lists', () => { const getFilteredValues = (fieldName, labelName, [labels]) => { return getValues(fieldName, labelName).then((content) => { - const filteredValues = content.filter((item) => labels.includes(item.label)).map((item) => item.value); + const filteredValues = content + .filter((item) => labels.includes(item.label)) + .map((item) => item.value); return cy.wrap({ values: filteredValues }); }); }; @@ -58,7 +60,11 @@ describe('Lists', () => { }; return cy.wrap(query).then(() => { Lists.createQueryViaApi(query).then((createdQuery) => { - Lists.getQueryViaApi(createdQuery.queryId, { includeResults: true, offset: 0, limit: 10 }).then((queryResponse) => { + Lists.getQueryViaApi(createdQuery.queryId, { + includeResults: true, + offset: 0, + limit: 10, + }).then((queryResponse) => { expect(queryResponse.status).to.eq(200); const result = validate(queryResponse.body, schema, { base: 'http://example.com/' }); cy.wrap(result).then(() => { @@ -81,13 +87,15 @@ describe('Lists', () => { userData = userProperties; cy.getUserToken(userData.username, userData.password); }); - Lists.getTypeIdByNameViaApi('Organizations').then((typeId) => { - recordTypeId = typeId; - }).then(() => { - Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { - typeData = typeResponse.body; + Lists.getTypeIdByNameViaApi('Organizations') + .then((typeId) => { + recordTypeId = typeId; + }) + .then(() => { + Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { + typeData = typeResponse.body; + }); }); - }); }); after('Delete test user', () => { @@ -95,10 +103,11 @@ describe('Lists', () => { Users.deleteViaApi(userData.userId); }); - it('C451508 Search for "Organizations" in the query builder using "Organization — EDI vendor code" field (corsair)', + it( + 'C451508 Search for "Organizations" in the query builder using "Organization — EDI vendor code" field (corsair)', { tags: ['criticalPath', 'corsair', 'C451508'] }, () => { - const fqlQuery = { 'organization.edi_vendor_edi_code': { '$empty': true } }; + const fqlQuery = { 'organization.edi_vendor_edi_code': { $empty: true } }; cy.wrap(true).then(() => { validateResponse(fqlQuery, organizationsSchema).then((body) => { @@ -107,12 +116,14 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C451509 Search for "Organizations" in the query builder using "Organization updated by — Username" field (corsair)', + it( + 'C451509 Search for "Organizations" in the query builder using "Organization updated by — Username" field (corsair)', { tags: ['extendedPath', 'corsair', 'C451509'] }, () => { - const fqlQuery = { 'updated_by.username': { '$ne': 'test' } }; + const fqlQuery = { 'updated_by.username': { $ne: 'test' } }; cy.wrap(true).then(() => { validateResponse(fqlQuery, organizationsSchema).then((body) => { @@ -121,12 +132,14 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C451516 Search for "Organizations" in the query builder using "Organization — Name" field (corsair)', + it( + 'C451516 Search for "Organizations" in the query builder using "Organization — Name" field (corsair)', { tags: ['criticalPath', 'corsair', 'C451516'] }, () => { - const fqlQuery = { 'organization.name': { '$empty': false } }; + const fqlQuery = { 'organization.name': { $empty: false } }; cy.wrap(true).then(() => { validateResponse(fqlQuery, organizationsSchema).then((body) => { @@ -135,12 +148,14 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C451518 C451517 Search for "organizations - vendor info" in the query builder using "Discount percent" field (corsair)', + it( + 'C451518 C451517 Search for "organizations - vendor info" in the query builder using "Discount percent" field (corsair)', { tags: ['criticalPath', 'corsair', 'C451518', 'C451517'] }, () => { - const fqlQuery = { 'organization.is_vendor': { '$eq': 'true' } }; + const fqlQuery = { 'organization.is_vendor': { $eq: 'true' } }; cy.wrap(true).then(() => { validateResponse(fqlQuery, organizationsSchema).then((body) => { @@ -149,12 +164,14 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C451524 C451523 Search for organizations in the query builder using "Orgs — Is donor" field (corsair)', + it( + 'C451524 C451523 Search for organizations in the query builder using "Orgs — Is donor" field (corsair)', { tags: ['criticalPath', 'corsair', 'C451524', 'C451523'] }, () => { - const fqlQuery = { 'organization.is_donor': { '$eq': 'false' } }; + const fqlQuery = { 'organization.is_donor': { $eq: 'false' } }; cy.wrap(true).then(() => { validateResponse(fqlQuery, organizationsSchema).then((body) => { @@ -163,12 +180,14 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C451525 C451532 Search for "organizations" in the query builder using "Code" field (corsair)', + it( + 'C451525 C451532 Search for "organizations" in the query builder using "Code" field (corsair)', { tags: ['criticalPath', 'corsair', 'C451525', 'C451532'] }, () => { - const fqlQuery = { 'organization.code': { '$empty': false } }; + const fqlQuery = { 'organization.code': { $empty: false } }; cy.wrap(true).then(() => { validateResponse(fqlQuery, organizationsSchema).then((body) => { @@ -177,7 +196,8 @@ describe('Lists', () => { }); }); }); - }); + }, + ); }); describe('Purchase order lines', () => { @@ -195,13 +215,15 @@ describe('Lists', () => { userData = userProperties; cy.getUserToken(userData.username, userData.password); }); - Lists.getTypeIdByNameViaApi('Purchase order lines with titles').then((typeId) => { - recordTypeId = typeId; - }).then(() => { - Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { - typeData = typeResponse.body; + Lists.getTypeIdByNameViaApi('Purchase order lines with titles') + .then((typeId) => { + recordTypeId = typeId; + }) + .then(() => { + Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { + typeData = typeResponse.body; + }); }); - }); }); after('Delete test user', () => { @@ -209,10 +231,11 @@ describe('Lists', () => { Users.deleteViaApi(userData.userId); }); - it('C436901 Search purchase order lines in the Query Builder using "PO — Order type" field (corsair)', + it( + 'C436901 Search purchase order lines in the Query Builder using "PO — Order type" field (corsair)', { tags: ['criticalPath', 'corsair', 'C436901'] }, () => { - const fqlQuery = { 'po.order_type': { '$eq': 'One-Time' } }; + const fqlQuery = { 'po.order_type': { $eq: 'One-Time' } }; cy.wrap(true).then(() => { validateResponse(fqlQuery, purchaseOrderLinesSchema).then((body) => { @@ -221,12 +244,14 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C440056 Search purchase order lines in the Query Builder using "PO — Approved" field (corsair)', + it( + 'C440056 Search purchase order lines in the Query Builder using "PO — Approved" field (corsair)', { tags: ['criticalPath', 'corsair', 'C440056'] }, () => { - const fqlQuery = { 'po.approved': { '$eq': 'true' } }; + const fqlQuery = { 'po.approved': { $eq: 'true' } }; cy.wrap(true).then(() => { validateResponse(fqlQuery, purchaseOrderLinesSchema).then((body) => { @@ -235,12 +260,14 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C440057 Search purchase order lines in the Query Builder using "PO assigned to user — Last name, first name" type (corsair)', + it( + 'C440057 Search purchase order lines in the Query Builder using "PO assigned to user — Last name, first name" type (corsair)', { tags: ['extendedPath', 'corsair', 'C440057'] }, () => { - const fqlQuery = { 'assigned_to_user.last_name_first_name': { '$empty': true } }; + const fqlQuery = { 'assigned_to_user.last_name_first_name': { $empty: true } }; cy.wrap(true).then(() => { validateResponse(fqlQuery, purchaseOrderLinesSchema).then((body) => { @@ -253,16 +280,18 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C440058 Search purchase order lines in the Query Builder using "POL — Cost PO line estimated price" (corsair)', + it( + 'C440058 Search purchase order lines in the Query Builder using "POL — Cost PO line estimated price" (corsair)', { tags: ['criticalPath', 'corsair', 'C440058'] }, () => { const fqlQuery = { - '$and': [ - { 'pol.cost_po_line_estimated_price': { '$gte': '0' } }, - { 'pol.cost_po_line_estimated_price': { '$lte': '1000' } }, - ] + $and: [ + { 'pol.cost_po_line_estimated_price': { $gte: '0' } }, + { 'pol.cost_po_line_estimated_price': { $lte: '1000' } }, + ], }; cy.wrap(true).then(() => { @@ -273,16 +302,15 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C442845 Search purchase order lines in the Query Builder using "POL exchange rate" (corsair)', + it( + 'C442845 Search purchase order lines in the Query Builder using "POL exchange rate" (corsair)', { tags: ['criticalPath', 'corsair', 'C442845'] }, () => { const fqlQuery = { - '$and': [ - { 'pol_exchange_rate': { '$gte': '0' } }, - { 'pol_exchange_rate': { '$lte': '1000' } }, - ] + $and: [{ pol_exchange_rate: { $gte: '0' } }, { pol_exchange_rate: { $lte: '1000' } }], }; cy.wrap(true).then(() => { @@ -293,12 +321,14 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C442846 Search purchase order lines in the Query Builder using "PO — PO number" (corsair)', + it( + 'C442846 Search purchase order lines in the Query Builder using "PO — PO number" (corsair)', { tags: ['criticalPath', 'corsair', 'C442846'] }, () => { - const fqlQuery = { 'po.po_number': { '$contains': '1' } }; + const fqlQuery = { 'po.po_number': { $contains: '1' } }; cy.wrap(true).then(() => { validateResponse(fqlQuery, purchaseOrderLinesSchema).then((body) => { @@ -307,12 +337,14 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C442847 Search purchase order lines in the Query Builder using "POL — Payment status" (corsair)', + it( + 'C442847 Search purchase order lines in the Query Builder using "POL — Payment status" (corsair)', { tags: ['criticalPath', 'corsair', 'C442847'] }, () => { - const fqlQuery = { 'pol.payment_status': { '$ne': 'Cancelled' } }; + const fqlQuery = { 'pol.payment_status': { $ne: 'Cancelled' } }; cy.wrap(true).then(() => { validateResponse(fqlQuery, purchaseOrderLinesSchema).then((body) => { @@ -321,51 +353,61 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C442848 Search purchase order lines in the Query Builder using "PO — Updated at" (corsair)', + it( + 'C442848 Search purchase order lines in the Query Builder using "PO — Updated at" (corsair)', { tags: ['criticalPath', 'corsair', 'C442848'] }, () => { const fqlQuery = { - '$and': [ - { 'po.updated_at': { '$gt': '2020-01-01T00:00:00.000' } }, - { 'po.updated_at': { '$lt': '2040-01-01T00:00:00.000' } }, - ] + $and: [ + { 'po.updated_at': { $gt: '2020-01-01T00:00:00.000' } }, + { 'po.updated_at': { $lt: '2040-01-01T00:00:00.000' } }, + ], }; cy.wrap(true).then(() => { validateResponse(fqlQuery, purchaseOrderLinesSchema).then((body) => { body.content.forEach((item) => { - expect(new Date(item['po.updated_at'])).to.be.greaterThan(new Date('2020-01-01T00:00:00.000')); - expect(new Date(item['po.updated_at'])).to.be.lessThan(new Date('2040-01-01T00:00:00.000')); + expect(new Date(item['po.updated_at'])).to.be.greaterThan( + new Date('2020-01-01T00:00:00.000'), + ); + expect(new Date(item['po.updated_at'])).to.be.lessThan( + new Date('2040-01-01T00:00:00.000'), + ); }); }); }); - }); + }, + ); }); describe('Purchase order lines with titles', () => { before('Create test user', () => { cy.getAdminToken(); - Lists.getTypeIdByNameViaApi('Purchase order lines with titles').then((typeId) => { - recordTypeId = typeId; - }).then(() => { - Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { - typeData = typeResponse.body; + Lists.getTypeIdByNameViaApi('Purchase order lines with titles') + .then((typeId) => { + recordTypeId = typeId; + }) + .then(() => { + Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { + typeData = typeResponse.body; + }); }); - }); }); - it('C688805 Search for "Purchase orders with titles" in the query builder using the fields "Created by user — Username", "Instance — Instance HRID", "Instance — Format names", "PO — Workflow status (corsair)', + it( + 'C688805 Search for "Purchase orders with titles" in the query builder using the fields "Created by user — Username", "Instance — Instance HRID", "Instance — Format names", "PO — Workflow status (corsair)', { tags: ['extendedPath', 'corsair', 'C688805'] }, () => { const fqlQuery = { - '$and': [ - { 'created_by_user.username': { '$ne': 'test' } }, - { 'instance.hrid': { '$contains': 'in' } }, - { 'instance.format_names': { '$empty': true } }, - { 'purchase_order.workflow_status': { '$eq': 'Open' } }, - ] + $and: [ + { 'created_by_user.username': { $ne: 'test' } }, + { 'instance.hrid': { $contains: 'in' } }, + { 'instance.format_names': { $empty: true } }, + { 'purchase_order.workflow_status': { $eq: 'Open' } }, + ], }; cy.wrap(true).then(() => { @@ -378,17 +420,19 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C688805 Search for "Purchase order lines with titles" in the query builder using the fields "Instance — Languages" ,"Organization — Code", "Organization — UUID" (corsair)', + it( + 'C688805 Search for "Purchase order lines with titles" in the query builder using the fields "Instance — Languages" ,"Organization — Code", "Organization — UUID" (corsair)', { tags: ['extendedPath', 'corsair', 'C688805'] }, () => { const fqlQuery = { - '$and': [ - { 'instance.languages': { '$empty': true } }, - { 'organization.code': { '$empty': false } }, - { 'organization.id': { '$nin': ['12345'] } }, - ] + $and: [ + { 'instance.languages': { $empty: true } }, + { 'organization.code': { $empty: false } }, + { 'organization.id': { $nin: ['12345'] } }, + ], }; cy.wrap(true).then(() => { @@ -402,29 +446,34 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C688748 Search for "Purchase order lines with titles" in the query builder using the fields Created by user — Email, Organization — EDI vendor type and POL — Created at (corsair)', + it( + 'C688748 Search for "Purchase order lines with titles" in the query builder using the fields Created by user — Email, Organization — EDI vendor type and POL — Created at (corsair)', { tags: ['criticalPath', 'corsair', 'C688748'] }, () => { const fqlQuery = { - '$and': [ - { 'created_by_user.email': { '$ne': 'test' } }, - { 'pol.created_at': { '$gt': '2020-01-01T00:00:00.000' } }, - { 'organization.edi_vendor_edi_type': { '$empty': true } }, - ] + $and: [ + { 'created_by_user.email': { $ne: 'test' } }, + { 'pol.created_at': { $gt: '2020-01-01T00:00:00.000' } }, + { 'organization.edi_vendor_edi_type': { $empty: true } }, + ], }; cy.wrap(true).then(() => { validateResponse(fqlQuery, purchaseOrderLinesWithTitlesSchema).then((body) => { body.content.forEach((item) => { expect(item['created_by_user.email']).to.not.be.equal('test'); - expect(new Date(item['pol.created_at'])).to.be.greaterThan(new Date('2020-01-01T00:00:00.000')); + expect(new Date(item['pol.created_at'])).to.be.greaterThan( + new Date('2020-01-01T00:00:00.000'), + ); expect(item['organization.edi_vendor_edi_type']).to.be.equal(null); }); }); }); - }); + }, + ); }); describe('Vouchers', () => { @@ -438,13 +487,15 @@ describe('Lists', () => { userData = userProperties; cy.getUserToken(userData.username, userData.password); }); - Lists.getTypeIdByNameViaApi('Vouchers').then((typeId) => { - recordTypeId = typeId; - }).then(() => { - Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { - typeData = typeResponse.body; + Lists.getTypeIdByNameViaApi('Vouchers') + .then((typeId) => { + recordTypeId = typeId; + }) + .then(() => { + Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { + typeData = typeResponse.body; + }); }); - }); }); after('Delete test user', () => { @@ -452,59 +503,69 @@ describe('Lists', () => { Users.deleteViaApi(userData.userId); }); - it('C692068 Search for "Vouchers" in the query builder using the fields "Voucher — Enclosure needed", "Name" and "Voucher — Updated date" (corsair)', + it( + 'C692068 Search for "Vouchers" in the query builder using the fields "Voucher — Enclosure needed", "Name" and "Voucher — Updated date" (corsair)', { tags: ['criticalPath', 'corsair', 'C692068'] }, () => { const fqlQuery = { - '$and': [ - { 'voucher.enclosure_needed': { '$ne': 'true' } }, - { 'voucher.updated_date': { '$gt': '2020-01-01T00:00:00.000' } }, - { 'vendor.name': { '$empty': false } }, - ] + $and: [ + { 'voucher.enclosure_needed': { $ne: 'true' } }, + { 'voucher.updated_date': { $gt: '2020-01-01T00:00:00.000' } }, + { 'vendor.name': { $empty: false } }, + ], }; cy.wrap(true).then(() => { validateResponse(fqlQuery, vouchersSchema).then((body) => { body.content.forEach((item) => { expect(item['voucher.enclosure_needed']).to.not.be.equal('true'); - expect(new Date(item['voucher.updated_date'])).to.be.greaterThan(new Date('2020-01-01T00:00:00.000')); + expect(new Date(item['voucher.updated_date'])).to.be.greaterThan( + new Date('2020-01-01T00:00:00.000'), + ); expect(item['vendor.name']).to.not.be.equal(null); }); }); }); - }); + }, + ); - it('C692063 Search for "Vouchers" in the query builder using the fields "Voucher — Acquisition unit names", "Voucher — Disbursement amount", "Voucher — UUID" and "Voucher — Created date" (corsair)', + it( + 'C692063 Search for "Vouchers" in the query builder using the fields "Voucher — Acquisition unit names", "Voucher — Disbursement amount", "Voucher — UUID" and "Voucher — Created date" (corsair)', { tags: ['extendedPath', 'corsair', 'C692063'] }, () => { const fqlQuery = { - '$and': [ - { 'voucher.disbursement_amount': { '$ne': '10' } }, - { 'voucher.id': { '$nin': ['1'] } }, - { 'voucher.created_date': { '$gt': '2020-01-01T00:00:00.000' } }, - ] + $and: [ + { 'voucher.disbursement_amount': { $ne: '10' } }, + { 'voucher.id': { $nin: ['1'] } }, + { 'voucher.created_date': { $gt: '2020-01-01T00:00:00.000' } }, + ], }; - getFilteredValues('voucher.acquisition_units', 'name', ['main']).then(({ values }) => { - const obj = { - 'voucher.acquisition_units': { - '$nin': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, vouchersSchema).then((body) => { - body.content.forEach((item) => { - expect(item['voucher.disbursement_amount']).to.not.be.equal('10'); - expect(['1'].includes(item['voucher.id'])).to.be.equal(false); - expect(new Date(item['voucher.created_date'])).to.be.greaterThan(new Date('2020-01-01T00:00:00.000')); - if (item['voucher.acquisition_units']) { - expect(['main'].includes(item['voucher.acquisition_units'])).to.be.equal(false); - } + getFilteredValues('voucher.acquisition_units', 'name', ['main']) + .then(({ values }) => { + const obj = { + 'voucher.acquisition_units': { + $nin: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, vouchersSchema).then((body) => { + body.content.forEach((item) => { + expect(item['voucher.disbursement_amount']).to.not.be.equal('10'); + expect(['1'].includes(item['voucher.id'])).to.be.equal(false); + expect(new Date(item['voucher.created_date'])).to.be.greaterThan( + new Date('2020-01-01T00:00:00.000'), + ); + if (item['voucher.acquisition_units']) { + expect(['main'].includes(item['voucher.acquisition_units'])).to.be.equal(false); + } + }); }); }); - }); - }); + }, + ); }); describe('Invoice lines', () => { @@ -518,13 +579,15 @@ describe('Lists', () => { userData = userProperties; cy.getUserToken(userData.username, userData.password); }); - Lists.getTypeIdByNameViaApi('Invoice lines').then((typeId) => { - recordTypeId = typeId; - }).then(() => { - Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { - typeData = typeResponse.body; + Lists.getTypeIdByNameViaApi('Invoice lines') + .then((typeId) => { + recordTypeId = typeId; + }) + .then(() => { + Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { + typeData = typeResponse.body; + }); }); - }); }); after('Delete test user', () => { @@ -532,15 +595,16 @@ describe('Lists', () => { Users.deleteViaApi(userData.userId); }); - it('C692062 Search for "Invoice lines" in the query builder using the fields "Invoice — Check subscription overlap", "Invoice — Enclosure needed" and "Invoice — Export to accounting" (corsair)', + it( + 'C692062 Search for "Invoice lines" in the query builder using the fields "Invoice — Check subscription overlap", "Invoice — Enclosure needed" and "Invoice — Export to accounting" (corsair)', { tags: ['extendedPath', 'corsair', 'C692062'] }, () => { const fqlQuery = { - '$and': [ - { 'invoice.chk_subscription_overlap': { '$ne': 'true' } }, - { 'invoice.enclosure_needed': { '$eq': 'false' } }, - { 'invoice.export_to_accounting': { '$ne': 'false' } }, - ] + $and: [ + { 'invoice.chk_subscription_overlap': { $ne: 'true' } }, + { 'invoice.enclosure_needed': { $eq: 'false' } }, + { 'invoice.export_to_accounting': { $ne: 'false' } }, + ], }; cy.wrap(true).then(() => { validateResponse(fqlQuery, invoiceLinesSchema).then((body) => { @@ -551,18 +615,20 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C692061 Search for "Invoice lines" in the query builder using the fields "Invoice — Note", "Invoice — Payment method", "Invoice lines — Account number", and "Invoice — Folio invoice number" (corsair)', + it( + 'C692061 Search for "Invoice lines" in the query builder using the fields "Invoice — Note", "Invoice — Payment method", "Invoice lines — Account number", and "Invoice — Folio invoice number" (corsair)', { tags: ['criticalPath', 'corsair', 'C692061'] }, () => { const fqlQuery = { - '$and': [ - { 'invoice.note': { '$ne': 'test' } }, - { 'invoice.payment_method': { '$contains': 'a' } }, - { 'invoice_line.account_number': { '$ne': '1' } }, - { 'invoice.folio_invoice_no': { '$ne': '1' } }, - ] + $and: [ + { 'invoice.note': { $ne: 'test' } }, + { 'invoice.payment_method': { $contains: 'a' } }, + { 'invoice_line.account_number': { $ne: '1' } }, + { 'invoice.folio_invoice_no': { $ne: '1' } }, + ], }; cy.wrap(true).then(() => { validateResponse(fqlQuery, invoiceLinesSchema).then((body) => { @@ -574,18 +640,20 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C692060 Search for "Invoice lines" in the query builder using the fields "Invoice — Payment due", "Invoice lines — Total adjustments", "Invoice lines — Sub-total", and "Invoice — Invoice date" (corsair)', + it( + 'C692060 Search for "Invoice lines" in the query builder using the fields "Invoice — Payment due", "Invoice lines — Total adjustments", "Invoice lines — Sub-total", and "Invoice — Invoice date" (corsair)', { tags: ['extendedPath', 'corsair', 'C692060'] }, () => { const fqlQuery = { - '$and': [ - { 'invoice.payment_due': { '$empty': true } }, - { 'invoice_line.adjustments_total': { '$lte': '100000' } }, - { 'invoice_line.sub_total': { '$lte': '100000' } }, - { 'invoice.invoice_date': { '$lt': '2040-01-01T00:00:00.000' } }, - ] + $and: [ + { 'invoice.payment_due': { $empty: true } }, + { 'invoice_line.adjustments_total': { $lte: '100000' } }, + { 'invoice_line.sub_total': { $lte: '100000' } }, + { 'invoice.invoice_date': { $lt: '2040-01-01T00:00:00.000' } }, + ], }; cy.wrap(true).then(() => { validateResponse(fqlQuery, invoiceLinesSchema).then((body) => { @@ -593,75 +661,90 @@ describe('Lists', () => { expect(item['invoice.payment_due']).to.be.equal(null); expect(item['invoice_line.adjustments_total'] <= 100000).to.be.equal(true); expect(item['invoice_line.sub_total'] <= 100000).to.be.equal(true); - expect(new Date(item['invoice.invoice_date'])).to.be.lessThan(new Date('2040-01-01T00:00:00.000')); + expect(new Date(item['invoice.invoice_date'])).to.be.lessThan( + new Date('2040-01-01T00:00:00.000'), + ); }); }); }); - }); + }, + ); - it('C692059 Search for "Invoice lines" in the query builder using the fields "Invoice — Vendor name", "Invoice — Batch group", "Invoice — Source" and "Invoice — Fiscal year" (corsair)', + it( + 'C692059 Search for "Invoice lines" in the query builder using the fields "Invoice — Vendor name", "Invoice — Batch group", "Invoice — Source" and "Invoice — Fiscal year" (corsair)', { tags: ['criticalPath', 'corsair', 'C692059'] }, () => { const fqlQuery = { - '$and': [ - { 'invoice.source': { '$in': ['API', 'EDI'] } }, - ] + $and: [{ 'invoice.source': { $in: ['API', 'EDI'] } }], }; - getAllValues('invoice.vendor_name', 'name').then(({ values }) => { - const obj = { - 'invoice.vendor_name': { - '$in': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - getFilteredValues('invoice.batch_group', 'batch_group', ['Amherst (AC)', 'FOLIO']).then(({ values }) => { + getAllValues('invoice.vendor_name', 'name') + .then(({ values }) => { const obj = { - 'invoice.batch_group': { - '$in': values - } + 'invoice.vendor_name': { + $in: values, + }, }; fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, invoiceLinesSchema).then((body) => { - body.content.forEach((item) => { - expect(['Amherst (AC)', 'FOLIO'].includes(item['invoice.batch_group'])).to.be.equal(true); - expect(['API', 'EDI'].includes(item['invoice.source'])).to.be.equal(true); + }) + .then(() => { + getFilteredValues('invoice.batch_group', 'batch_group', ['Amherst (AC)', 'FOLIO']) + .then(({ values }) => { + const obj = { + 'invoice.batch_group': { + $in: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, invoiceLinesSchema).then((body) => { + body.content.forEach((item) => { + expect( + ['Amherst (AC)', 'FOLIO'].includes(item['invoice.batch_group']), + ).to.be.equal(true); + expect(['API', 'EDI'].includes(item['invoice.source'])).to.be.equal(true); + }); + }); }); - }); }); - }); - }); + }, + ); - it('C692058 Search for "Invoice lines" in the query builder using the fields "Acquisition unit names" , "Invoice lines — UUID" and "Invoice — Approved date" (corsair)', + it( + 'C692058 Search for "Invoice lines" in the query builder using the fields "Acquisition unit names" , "Invoice lines — UUID" and "Invoice — Approved date" (corsair)', { tags: ['criticalPath', 'corsair', 'C692058'] }, () => { const fqlQuery = { - '$and': [ - { 'invoice_line.id': { '$empty': false } }, - { 'invoice.approval_date': { '$gte': '2020-01-01T00:00:00.000' } }, - ] + $and: [ + { 'invoice_line.id': { $empty: false } }, + { 'invoice.approval_date': { $gte: '2020-01-01T00:00:00.000' } }, + ], }; - getFilteredValues('invoice.acquisition_unit', 'name', ['main']).then(({ values }) => { - const obj = { - 'invoice.acquisition_unit': { - '$nin': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, invoiceLinesSchema).then((body) => { - body.content.forEach((item) => { - expect(item['invoice_line.id']).to.not.be.equal(null); - expect(new Date(item['invoice.approval_date'])).to.be.greaterThan(new Date('2020-01-01T00:00:00.000')); - if (item['invoice.acquisition_unit']) { - expect(['main'].includes(item['invoice.acquisition_unit'])).to.be.equal(false); - } + getFilteredValues('invoice.acquisition_unit', 'name', ['main']) + .then(({ values }) => { + const obj = { + 'invoice.acquisition_unit': { + $nin: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, invoiceLinesSchema).then((body) => { + body.content.forEach((item) => { + expect(item['invoice_line.id']).to.not.be.equal(null); + expect(new Date(item['invoice.approval_date'])).to.be.greaterThan( + new Date('2020-01-01T00:00:00.000'), + ); + if (item['invoice.acquisition_unit']) { + expect(['main'].includes(item['invoice.acquisition_unit'])).to.be.equal(false); + } + }); }); }); - }); - }); + }, + ); }); describe('Voucher lines with fund', () => { @@ -675,13 +758,15 @@ describe('Lists', () => { userData = userProperties; cy.getUserToken(userData.username, userData.password); }); - Lists.getTypeIdByNameViaApi('Voucher lines with fund').then((typeId) => { - recordTypeId = typeId; - }).then(() => { - Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { - typeData = typeResponse.body; + Lists.getTypeIdByNameViaApi('Voucher lines with fund') + .then((typeId) => { + recordTypeId = typeId; + }) + .then(() => { + Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { + typeData = typeResponse.body; + }); }); - }); }); after('Delete test user', () => { @@ -689,15 +774,16 @@ describe('Lists', () => { Users.deleteViaApi(userData.userId); }); - it('C692047 Search for "Voucher lines with fund" in the query builder using the fields "Voucher — Exchange rate" and "Voucher — Total" (corsair)', + it( + 'C692047 Search for "Voucher lines with fund" in the query builder using the fields "Voucher — Exchange rate" and "Voucher — Total" (corsair)', { tags: ['criticalPath', 'corsair', 'C692047'] }, () => { const fqlQuery = { - '$and': [ - { 'voucher.enclosure_needed': { '$eq': 'false' } }, - { 'voucher.export_to_accounting': { '$ne': 'false' } }, - { 'voucher.account_no': { '$empty': true } }, - ] + $and: [ + { 'voucher.enclosure_needed': { $eq: 'false' } }, + { 'voucher.export_to_accounting': { $ne: 'false' } }, + { 'voucher.account_no': { $empty: true } }, + ], }; cy.wrap(true).then(() => { @@ -709,16 +795,18 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C692048 Search for "Voucher lines with fund" in the query builder using the fields "Voucher — Enclosure needed", "Voucher — Export to accounting", "Voucher — Account number", "Fund with ledger — Ledger — Fiscal year one" (corsair)', + it( + 'C692048 Search for "Voucher lines with fund" in the query builder using the fields "Voucher — Enclosure needed", "Voucher — Export to accounting", "Voucher — Account number", "Fund with ledger — Ledger — Fiscal year one" (corsair)', { tags: ['criticalPath', 'corsair', 'C692048'] }, () => { const fqlQuery = { - '$and': [ - { 'voucher.exchange_rate': { '$lte': '100000' } }, - { 'voucher.amount': { '$lte': '100000' } }, - ] + $and: [ + { 'voucher.exchange_rate': { $lte: '100000' } }, + { 'voucher.amount': { $lte: '100000' } }, + ], }; cy.wrap(true).then(() => { @@ -729,81 +817,101 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C689202 Search for "Voucher lines with fund" in the query builder using the fields "Voucher — Created date", " Voucher — Disbursement date" , "Voucher — Voucher date", "Ledger — UUID" (corsair)', + it( + 'C689202 Search for "Voucher lines with fund" in the query builder using the fields "Voucher — Created date", " Voucher — Disbursement date" , "Voucher — Voucher date", "Ledger — UUID" (corsair)', { tags: ['extendedPath', 'corsair', 'C689202'] }, () => { const fqlQuery = { - '$and': [ - { 'voucher.created_date': { '$gte': '2020-01-01T00:00:00.000' } }, - { 'voucher.voucher_date': { '$lte': '2040-01-01T00:00:00.000' } }, - { 'voucher.disbursement_date': { '$empty': true } }, - { 'ledger.id': { '$empty': false } }, - ] + $and: [ + { 'voucher.created_date': { $gte: '2020-01-01T00:00:00.000' } }, + { 'voucher.voucher_date': { $lte: '2040-01-01T00:00:00.000' } }, + { 'voucher.disbursement_date': { $empty: true } }, + { 'ledger.id': { $empty: false } }, + ], }; cy.wrap(true).then(() => { validateResponse(fqlQuery, voucherLinesWithFundSchema).then((body) => { body.content.forEach((item) => { - expect(new Date(item['voucher.created_date'])).to.be.greaterThan(new Date('2020-01-01T00:00:00.000')); - expect(new Date(item['voucher.voucher_date'])).to.be.lessThan(new Date('2040-01-01T00:00:00.000')); + expect(new Date(item['voucher.created_date'])).to.be.greaterThan( + new Date('2020-01-01T00:00:00.000'), + ); + expect(new Date(item['voucher.voucher_date'])).to.be.lessThan( + new Date('2040-01-01T00:00:00.000'), + ); expect(item['voucher.disbursement_date']).to.be.equal(null); expect(item['ledger.id']).to.not.be.equal(null); }); }); }); - }); + }, + ); - it('C689201 Search for "Voucher lines with fund" in the query builder using the fields "Voucher — Type", "Voucher — Batch group", "Fund — Acquisition unit names", "Fund — Status" (corsair)', + it( + 'C689201 Search for "Voucher lines with fund" in the query builder using the fields "Voucher — Type", "Voucher — Batch group", "Fund — Acquisition unit names", "Fund — Status" (corsair)', { tags: ['criticalPath', 'corsair', 'C689201'] }, () => { const fqlQuery = { - '$and': [ - { 'voucher.type': { '$in': ['Payment', 'Credit', 'Pre-payment', 'Voucher'] } }, - { 'fund.fund_status': { '$in': ['Active'] } }, - ] + $and: [ + { 'voucher.type': { $in: ['Payment', 'Credit', 'Pre-payment', 'Voucher'] } }, + { 'fund.fund_status': { $in: ['Active'] } }, + ], }; - getFilteredValues('fund.acquisition_unit', 'name', ['main']).then(({ values }) => { - const obj = { - 'fund.acquisition_unit': { - '$nin': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - getFilteredValues('voucher.batch_group', 'batch_group', ['Amherst (AC)', 'FOLIO']).then(({ values }) => { + getFilteredValues('fund.acquisition_unit', 'name', ['main']) + .then(({ values }) => { const obj = { - 'voucher.batch_group': { - '$in': values - } + 'fund.acquisition_unit': { + $nin: values, + }, }; fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, voucherLinesWithFundSchema).then((body) => { - body.content.forEach((item) => { - expect(['Payment', 'Credit', 'Pre-payment', 'Voucher'].includes(item['voucher.type'])).to.be.equal(true); - expect(['Amherst (AC)', 'FOLIO'].includes(item['voucher.batch_group'])).to.be.equal(true); - expect(['Active'].includes(item['fund.fund_status'])).to.be.equal(true); - if (item['fund.acquisition_unit']) { - expect(['main'].includes(item['fund.acquisition_unit'])).to.be.equal(false); - } + }) + .then(() => { + getFilteredValues('voucher.batch_group', 'batch_group', ['Amherst (AC)', 'FOLIO']) + .then(({ values }) => { + const obj = { + 'voucher.batch_group': { + $in: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, voucherLinesWithFundSchema).then((body) => { + body.content.forEach((item) => { + expect( + ['Payment', 'Credit', 'Pre-payment', 'Voucher'].includes( + item['voucher.type'], + ), + ).to.be.equal(true); + expect( + ['Amherst (AC)', 'FOLIO'].includes(item['voucher.batch_group']), + ).to.be.equal(true); + expect(['Active'].includes(item['fund.fund_status'])).to.be.equal(true); + if (item['fund.acquisition_unit']) { + expect(['main'].includes(item['fund.acquisition_unit'])).to.be.equal(false); + } + }); + }); }); - }); }); - }); - }); + }, + ); - it('C689200 Search for "Voucher lines with fund" in the query builder using the fields "Voucher — Disbursement number", " and "Fund with ledger — Fund — Name" (corsair)', + it( + 'C689200 Search for "Voucher lines with fund" in the query builder using the fields "Voucher — Disbursement number", " and "Fund with ledger — Fund — Name" (corsair)', { tags: ['extendedPath', 'corsair', 'C689200'] }, () => { const fqlQuery = { - '$and': [ - { 'voucher.disbursement_number': { '$ne': '1' } }, - { 'fund.name': { '$ne': 'a' } }, - { 'voucher.voucher_number': { '$ne': '1' } }, - ] + $and: [ + { 'voucher.disbursement_number': { $ne: '1' } }, + { 'fund.name': { $ne: 'a' } }, + { 'voucher.voucher_number': { $ne: '1' } }, + ], }; cy.wrap(true).then(() => { @@ -815,7 +923,8 @@ describe('Lists', () => { }); }); }); - }); + }, + ); }); describe('Voucher lines with invoice, fund, organization', () => { @@ -830,13 +939,15 @@ describe('Lists', () => { userData = userProperties; cy.getUserToken(userData.username, userData.password); }); - Lists.getTypeIdByNameViaApi('Voucher lines with invoice, fund, organization').then((typeId) => { - recordTypeId = typeId; - }).then(() => { - Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { - typeData = typeResponse.body; + Lists.getTypeIdByNameViaApi('Voucher lines with invoice, fund, organization') + .then((typeId) => { + recordTypeId = typeId; + }) + .then(() => { + Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { + typeData = typeResponse.body; + }); }); - }); }); after('Delete test user', () => { @@ -844,125 +955,155 @@ describe('Lists', () => { Users.deleteViaApi(userData.userId); }); - it('C692083 Search for "Voucher lines with invoice,fund, organization" in the query builder using the fields "Voucher line — External account number", "Invoice — Terms", "Ledger — Restrict expenditures" (corsair)', + it( + 'C692083 Search for "Voucher lines with invoice,fund, organization" in the query builder using the fields "Voucher line — External account number", "Invoice — Terms", "Ledger — Restrict expenditures" (corsair)', { tags: ['extendedPath', 'corsair', 'C692083'] }, () => { const fqlQuery = { - '$and': [ - { 'voucher_line.external_account_number': { '$ne': 'test' } }, - { 'invoice.payment_terms': { '$empty': true } }, - { 'ledger.restrict_expenditures': { '$eq': 'true' } }, - ] + $and: [ + { 'voucher_line.external_account_number': { $ne: 'test' } }, + { 'invoice.payment_terms': { $empty: true } }, + { 'ledger.restrict_expenditures': { $eq: 'true' } }, + ], }; cy.wrap(true).then(() => { - validateResponse(fqlQuery, voucherLinesWithInvoiceFundOrganizationSchema).then((body) => { - body.content.forEach((item) => { - expect(item['voucher_line.external_account_number']).to.not.be.equal('test'); - expect(item['invoice.payment_terms']).to.be.equal(null); - expect(item['ledger.restrict_expenditures']).to.be.equal('true'); - }); - }); + validateResponse(fqlQuery, voucherLinesWithInvoiceFundOrganizationSchema).then( + (body) => { + body.content.forEach((item) => { + expect(item['voucher_line.external_account_number']).to.not.be.equal('test'); + expect(item['invoice.payment_terms']).to.be.equal(null); + expect(item['ledger.restrict_expenditures']).to.be.equal('true'); + }); + }, + ); }); - }); + }, + ); - it('C692082 Search for "Voucher lines with invoice,fund, organization" in the query builder using the fields "Invoice — Note", "Ledger — Status", "Invoice — Accounting code", "Voucher — Export to accounting" (corsair)', + it( + 'C692082 Search for "Voucher lines with invoice,fund, organization" in the query builder using the fields "Invoice — Note", "Ledger — Status", "Invoice — Accounting code", "Voucher — Export to accounting" (corsair)', { tags: ['extendedPath', 'corsair', 'C692082'] }, () => { const fqlQuery = { - '$and': [ - { 'invoice.note': { '$ne': 'test' } }, - { 'ledger.ledger_status': { '$in': ['Active'] } }, - { 'invoice.accounting_code': { '$ne': 'test' } }, - { 'voucher.export_to_accounting': { '$eq': 'true' } }, - ] + $and: [ + { 'invoice.note': { $ne: 'test' } }, + { 'ledger.ledger_status': { $in: ['Active'] } }, + { 'invoice.accounting_code': { $ne: 'test' } }, + { 'voucher.export_to_accounting': { $eq: 'true' } }, + ], }; cy.wrap(true).then(() => { - validateResponse(fqlQuery, voucherLinesWithInvoiceFundOrganizationSchema).then((body) => { - body.content.forEach((item) => { - expect(item['invoice.note']).to.not.be.equal('test'); - expect(['Active'].includes(item['ledger.ledger_status'])).to.be.equal(true); - expect(item['invoice.accounting_code']).to.not.be.equal('test'); - expect(item['voucher.export_to_accounting']).to.be.equal('true'); - }); - }); + validateResponse(fqlQuery, voucherLinesWithInvoiceFundOrganizationSchema).then( + (body) => { + body.content.forEach((item) => { + expect(item['invoice.note']).to.not.be.equal('test'); + expect(['Active'].includes(item['ledger.ledger_status'])).to.be.equal(true); + expect(item['invoice.accounting_code']).to.not.be.equal('test'); + expect(item['voucher.export_to_accounting']).to.be.equal('true'); + }); + }, + ); }); - }); + }, + ); - it('C688836 Search for "Voucher lines with invoice,fund, organization" in the query builder using the fields "Voucher line — Created date", " Invoice — Created date", "Invoice — Payment date" (corsair)', + it( + 'C688836 Search for "Voucher lines with invoice,fund, organization" in the query builder using the fields "Voucher line — Created date", " Invoice — Created date", "Invoice — Payment date" (corsair)', { tags: ['criticalPath', 'corsair', 'C688836'] }, () => { const fqlQuery = { - '$and': [ - { 'voucher_line.created_date': { '$gte': '2020-01-01T00:00:00.000' } }, - { 'invoice.created_date': { '$lte': '2040-01-01T00:00:00.000' } }, - { 'invoice.payment_date': { '$gte': '2020-01-01T00:00:00.000' } }, - ] + $and: [ + { 'voucher_line.created_date': { $gte: '2020-01-01T00:00:00.000' } }, + { 'invoice.created_date': { $lte: '2040-01-01T00:00:00.000' } }, + { 'invoice.payment_date': { $gte: '2020-01-01T00:00:00.000' } }, + ], }; cy.wrap(true).then(() => { - validateResponse(fqlQuery, voucherLinesWithInvoiceFundOrganizationSchema).then((body) => { - body.content.forEach((item) => { - expect(new Date(item['voucher_line.created_date'])).to.be.greaterThan(new Date('2020-01-01T00:00:00.000')); - expect(new Date(item['invoice.created_date'])).to.be.lessThan(new Date('2040-01-01T00:00:00.000')); - expect(new Date(item['invoice.payment_date'])).to.be.greaterThan(new Date('2020-01-01T00:00:00.000')); - }); - }); + validateResponse(fqlQuery, voucherLinesWithInvoiceFundOrganizationSchema).then( + (body) => { + body.content.forEach((item) => { + expect(new Date(item['voucher_line.created_date'])).to.be.greaterThan( + new Date('2020-01-01T00:00:00.000'), + ); + expect(new Date(item['invoice.created_date'])).to.be.lessThan( + new Date('2040-01-01T00:00:00.000'), + ); + expect(new Date(item['invoice.payment_date'])).to.be.greaterThan( + new Date('2020-01-01T00:00:00.000'), + ); + }); + }, + ); }); - }); + }, + ); - it('C688832 Search for "Voucher lines with invoice,fund, organization" in the query builder using the fields "Voucher — Status", "Invoice — Exchange rate," "Organization — is vendor" (corsair)', + it( + 'C688832 Search for "Voucher lines with invoice,fund, organization" in the query builder using the fields "Voucher — Status", "Invoice — Exchange rate," "Organization — is vendor" (corsair)', { tags: ['extendedPath', 'corsair', 'C688832'] }, () => { const fqlQuery = { - '$and': [ - { 'voucher.status': { '$in': ['Paid'] } }, - { 'invoice.exchange_rate': { '$gte': '1' } }, - { 'organization.is_vendor': { '$eq': 'true' } }, - ] + $and: [ + { 'voucher.status': { $in: ['Paid'] } }, + { 'invoice.exchange_rate': { $gte: '1' } }, + { 'organization.is_vendor': { $eq: 'true' } }, + ], }; cy.wrap(true).then(() => { - validateResponse(fqlQuery, voucherLinesWithInvoiceFundOrganizationSchema).then((body) => { - body.content.forEach((item) => { - expect(item['voucher.status'].includes('Paid')).to.be.equal(true); - expect(item['invoice.exchange_rate'] >= 1).to.be.equal(true); - expect(item['organization.is_vendor']).to.be.equal('true'); - }); - }); + validateResponse(fqlQuery, voucherLinesWithInvoiceFundOrganizationSchema).then( + (body) => { + body.content.forEach((item) => { + expect(item['voucher.status'].includes('Paid')).to.be.equal(true); + expect(item['invoice.exchange_rate'] >= 1).to.be.equal(true); + expect(item['organization.is_vendor']).to.be.equal('true'); + }); + }, + ); }); - }); + }, + ); - it('C688808 Search for "Voucher lines with invoice,fund, organization" in the query builder using the fields "Fund — Acquisition unit names","Invoice — Payment method", "Organization — Status" (corsair)', + it( + 'C688808 Search for "Voucher lines with invoice,fund, organization" in the query builder using the fields "Fund — Acquisition unit names","Invoice — Payment method", "Organization — Status" (corsair)', { tags: ['criticalPath', 'corsair', 'C688808'] }, () => { const fqlQuery = { - '$and': [ - { 'invoice.payment_method': { '$contains': 'a' } }, - { 'organization.status': { '$in': ['Active', 'Inactive'] } }, - ] + $and: [ + { 'invoice.payment_method': { $contains: 'a' } }, + { 'organization.status': { $in: ['Active', 'Inactive'] } }, + ], }; - getFilteredValues('fund.acquisition_unit', 'name', ['main']).then(({ values }) => { - const obj = { - 'fund.acquisition_unit': { - '$nin': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, voucherLinesWithInvoiceFundOrganizationSchema).then((body) => { - body.content.forEach((item) => { - expect(item['invoice.payment_method'].includes('a')).to.be.equal(true); - expect(['Active', 'Inactive'].includes(item['organization.status'])).to.be.equal(true); - if (item['fund.acquisition_unit']) { - expect(['main'].includes(item['fund.acquisition_unit'])).to.be.equal(false); - } - }); + getFilteredValues('fund.acquisition_unit', 'name', ['main']) + .then(({ values }) => { + const obj = { + 'fund.acquisition_unit': { + $nin: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, voucherLinesWithInvoiceFundOrganizationSchema).then( + (body) => { + body.content.forEach((item) => { + expect(item['invoice.payment_method'].includes('a')).to.be.equal(true); + expect( + ['Active', 'Inactive'].includes(item['organization.status']), + ).to.be.equal(true); + if (item['fund.acquisition_unit']) { + expect(['main'].includes(item['fund.acquisition_unit'])).to.be.equal(false); + } + }); + }, + ); }); - }); - }); + }, + ); }); describe('Transactions', () => { @@ -975,13 +1116,15 @@ describe('Lists', () => { userData = userProperties; cy.getUserToken(userData.username, userData.password); }); - Lists.getTypeIdByNameViaApi('Transactions').then((typeId) => { - recordTypeId = typeId; - }).then(() => { - Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { - typeData = typeResponse.body; + Lists.getTypeIdByNameViaApi('Transactions') + .then((typeId) => { + recordTypeId = typeId; + }) + .then(() => { + Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { + typeData = typeResponse.body; + }); }); - }); }); after('Delete test user', () => { @@ -989,42 +1132,49 @@ describe('Lists', () => { Users.deleteViaApi(userData.userId); }); - it('C692079 Search for "Transactions" in the query builder using the fields "Fiscal year — Acquisition unit names", "From fund — Updated date" (corsair)', + it( + 'C692079 Search for "Transactions" in the query builder using the fields "Fiscal year — Acquisition unit names", "From fund — Updated date" (corsair)', { tags: ['extendedPath', 'corsair', 'C692079'] }, () => { const fqlQuery = { - '$and': [ - { 'from_fund.updated_date': { '$gt': '2020-01-01T00:00:00.000' } }, - ] + $and: [{ 'from_fund.updated_date': { $gt: '2020-01-01T00:00:00.000' } }], }; - getFilteredValues('fiscal_year.acquisition_unit', 'name', ['main']).then(({ values }) => { - const obj = { - 'fiscal_year.acquisition_unit': { - '$nin': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, transactionsSchema).then((body) => { - body.content.forEach((item) => { - expect(new Date(item['from_fund.updated_date'])).to.be.greaterThan(new Date('2020-01-01T00:00:00.000')); - if (item['fiscal_year.acquisition_unit']) { - expect(['main'].includes(item['fiscal_year.acquisition_unit'])).to.be.equal(false); - } + getFilteredValues('fiscal_year.acquisition_unit', 'name', ['main']) + .then(({ values }) => { + const obj = { + 'fiscal_year.acquisition_unit': { + $nin: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, transactionsSchema).then((body) => { + body.content.forEach((item) => { + expect(new Date(item['from_fund.updated_date'])).to.be.greaterThan( + new Date('2020-01-01T00:00:00.000'), + ); + if (item['fiscal_year.acquisition_unit']) { + expect(['main'].includes(item['fiscal_year.acquisition_unit'])).to.be.equal( + false, + ); + } + }); }); }); - }); - }); + }, + ); - it('C692078 Search for "Transactions" in the query builder using the fields "Transaction — Invoice cancelled", " From fund — Version" (corsair)', + it( + 'C692078 Search for "Transactions" in the query builder using the fields "Transaction — Invoice cancelled", " From fund — Version" (corsair)', { tags: ['extendedPath', 'corsair', 'C692078'] }, () => { const fqlQuery = { - '$and': [ - { 'transaction.invoice_cancelled': { '$eq': 'true' } }, - { 'from_fund.version': { '$gt': '0' } }, - ] + $and: [ + { 'transaction.invoice_cancelled': { $eq: 'true' } }, + { 'from_fund.version': { $gt: '0' } }, + ], }; cy.wrap(true).then(() => { @@ -1035,17 +1185,19 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C692077 Search for "Transactions" in the query builder using the fields "Transaction — Encumbrance order type", "Transaction — Encumbrance re-encumber" and "From fund — Restrict by locations" (corsair)', + it( + 'C692077 Search for "Transactions" in the query builder using the fields "Transaction — Encumbrance order type", "Transaction — Encumbrance re-encumber" and "From fund — Restrict by locations" (corsair)', { tags: ['extendedPath', 'corsair', 'C692077'] }, () => { const fqlQuery = { - '$and': [ - { 'transaction.order_type': { '$in': ['Ongoing'] } }, - { 'transaction.re_encumber': { '$ne': 'false' } }, - { 'from_fund.restrict_by_locations': { '$eq': 'false' } }, - ] + $and: [ + { 'transaction.order_type': { $in: ['Ongoing'] } }, + { 'transaction.re_encumber': { $ne: 'false' } }, + { 'from_fund.restrict_by_locations': { $eq: 'false' } }, + ], }; cy.wrap(true).then(() => { @@ -1057,47 +1209,53 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C692075 Search for "Transactions" in the query builder using the fields "To fund — Acquisition unit names", "To fund — Donor organizations" and "To fund — External account number" (corsair)', + it( + 'C692075 Search for "Transactions" in the query builder using the fields "To fund — Acquisition unit names", "To fund — Donor organizations" and "To fund — External account number" (corsair)', { tags: ['extendedPath', 'corsair', 'C692075'] }, () => { const fqlQuery = { - '$and': [ - { 'to_fund.donor_organizations': { '$empty': true } }, - { 'to_fund.external_account_no': { '$ne': '1' } }, - ] + $and: [ + { 'to_fund.donor_organizations': { $empty: true } }, + { 'to_fund.external_account_no': { $ne: '1' } }, + ], }; - getFilteredValues('to_fund.acquisition_unit', 'name', ['main']).then(({ values }) => { - const obj = { - 'to_fund.acquisition_unit': { - '$nin': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, transactionsSchema).then((body) => { - body.content.forEach((item) => { - expect(item['to_fund.donor_organizations']).to.be.equal(null); - expect(item['to_fund.external_account_no']).to.not.be.equal('1'); - if (item['to_fund.acquisition_unit']) { - expect(['main'].includes(item['to_fund.acquisition_unit'])).to.be.equal(false); - } + getFilteredValues('to_fund.acquisition_unit', 'name', ['main']) + .then(({ values }) => { + const obj = { + 'to_fund.acquisition_unit': { + $nin: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, transactionsSchema).then((body) => { + body.content.forEach((item) => { + expect(item['to_fund.donor_organizations']).to.be.equal(null); + expect(item['to_fund.external_account_no']).to.not.be.equal('1'); + if (item['to_fund.acquisition_unit']) { + expect(['main'].includes(item['to_fund.acquisition_unit'])).to.be.equal(false); + } + }); }); }); - }); - }); + }, + ); - it('C692074 Search for "Transactions" in the query builder using the fields "Transaction — Amount", "Transaction — Created date" and "Fiscal year — Code" (corsair)', + it( + 'C692074 Search for "Transactions" in the query builder using the fields "Transaction — Amount", "Transaction — Created date" and "Fiscal year — Code" (corsair)', { tags: ['criticalPath', 'corsair', 'C692074'] }, () => { const fqlQuery = { - '$and': [ - { 'transaction.amount': { '$gt': '1' } }, - { 'transaction.amount_credited': { '$lte': '100000' } }, - { 'fiscal_year.code': { '$contains': '20' } }, - ] + $and: [ + { 'transaction.amount': { $gt: '1' } }, + { 'transaction.amount_credited': { $lte: '100000' } }, + { 'fiscal_year.code': { $contains: '20' } }, + ], }; cy.wrap(true).then(() => { @@ -1109,37 +1267,44 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C688736 Search for "Transactions" in the query builder using the fields "From fund — Name", "Fiscal year — Currency and "From fund — Acquisition unit" (corsair)', + it( + 'C688736 Search for "Transactions" in the query builder using the fields "From fund — Name", "Fiscal year — Currency and "From fund — Acquisition unit" (corsair)', { tags: ['criticalPath', 'corsair', 'C688736'] }, () => { const fqlQuery = { - '$and': [ - { 'from_fund.name': { '$empty': false } }, - { 'fiscal_year.currency': { '$contains': 'S' } }, - ] + $and: [ + { 'from_fund.name': { $empty: false } }, + { 'fiscal_year.currency': { $contains: 'S' } }, + ], }; - getFilteredValues('from_fund.acquisition_unit', 'name', ['main']).then(({ values }) => { - const obj = { - 'from_fund.acquisition_unit': { - '$nin': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, transactionsSchema).then((body) => { - body.content.forEach((item) => { - expect(item['from_fund.name']).to.not.be.equal(null); - expect(item['fiscal_year.currency'].includes('S')).to.be.equal(true); - if (item['from_fund.acquisition_unit']) { - expect(['main'].includes(item['from_fund.acquisition_unit'])).to.be.equal(false); - } + getFilteredValues('from_fund.acquisition_unit', 'name', ['main']) + .then(({ values }) => { + const obj = { + 'from_fund.acquisition_unit': { + $nin: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, transactionsSchema).then((body) => { + body.content.forEach((item) => { + expect(item['from_fund.name']).to.not.be.equal(null); + expect(item['fiscal_year.currency'].includes('S')).to.be.equal(true); + if (item['from_fund.acquisition_unit']) { + expect(['main'].includes(item['from_fund.acquisition_unit'])).to.be.equal( + false, + ); + } + }); }); }); - }); - }); + }, + ); }); describe('Fund with ledger', () => { @@ -1152,13 +1317,15 @@ describe('Lists', () => { userData = userProperties; cy.getUserToken(userData.username, userData.password); }); - Lists.getTypeIdByNameViaApi('Fund with ledger').then((typeId) => { - recordTypeId = typeId; - }).then(() => { - Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { - typeData = typeResponse.body; + Lists.getTypeIdByNameViaApi('Fund with ledger') + .then((typeId) => { + recordTypeId = typeId; + }) + .then(() => { + Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { + typeData = typeResponse.body; + }); }); - }); }); after('Delete test user', () => { @@ -1166,16 +1333,17 @@ describe('Lists', () => { Users.deleteViaApi(userData.userId); }); - it('C667580 Search for "Fund with ledger" in the query builder using the fields "Ledger — Code", "Ledger — Currency", "Fund — External account number" and "Fund — Name" (corsair)', + it( + 'C667580 Search for "Fund with ledger" in the query builder using the fields "Ledger — Code", "Ledger — Currency", "Fund — External account number" and "Fund — Name" (corsair)', { tags: ['extendedPath', 'corsair', 'C667580'] }, () => { const fqlQuery = { - '$and': [ - { 'ledger.code': { '$contains': 'e' } }, - { 'ledger.currency': { '$starts_with': 'US' } }, - { 'fund.external_account_no': { '$empty': false } }, - { 'fund.name': { '$contains': 'a' } }, - ] + $and: [ + { 'ledger.code': { $contains: 'e' } }, + { 'ledger.currency': { $starts_with: 'US' } }, + { 'fund.external_account_no': { $empty: false } }, + { 'fund.name': { $contains: 'a' } }, + ], }; cy.wrap(true).then(() => { @@ -1188,18 +1356,20 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C667573 Search for "Fund with ledger" in the query builder using the fields "Ledger — UUID", " Fund — UUID", "Ledger — Version" and "Fund — Version" (corsair)', + it( + 'C667573 Search for "Fund with ledger" in the query builder using the fields "Ledger — UUID", " Fund — UUID", "Ledger — Version" and "Fund — Version" (corsair)', { tags: ['extendedPath', 'corsair', 'C667573'] }, () => { const fqlQuery = { - '$and': [ - { 'ledger.id': { '$empty': false } }, - { 'fund.id': { '$empty': false } }, - { 'ledger.version': { '$gte': '0' } }, - { 'fund.version': { '$gte': '0' } }, - ] + $and: [ + { 'ledger.id': { $empty: false } }, + { 'fund.id': { $empty: false } }, + { 'ledger.version': { $gte: '0' } }, + { 'fund.version': { $gte: '0' } }, + ], }; cy.wrap(true).then(() => { @@ -1212,18 +1382,20 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C667571 Search for "Fund with ledger" in the query builder using the fields "Ledger — Restrict expenditures" , "Fund — Restrict by locations", "Fund — Updated date" and "Ledger — Created date" (corsair)', + it( + 'C667571 Search for "Fund with ledger" in the query builder using the fields "Ledger — Restrict expenditures" , "Fund — Restrict by locations", "Fund — Updated date" and "Ledger — Created date" (corsair)', { tags: ['extendedPath', 'corsair', 'C667571'] }, () => { const fqlQuery = { - '$and': [ - { 'ledger.restrict_expenditures': { '$eq': 'true' } }, - { 'fund.restrict_by_locations': { '$ne': 'true' } }, - { 'fund.updated_date': { '$gte': '2020-01-01T00:00:00.000' } }, - { 'ledger.created_date': { '$lte': '2040-01-01T00:00:00.000' } }, - ] + $and: [ + { 'ledger.restrict_expenditures': { $eq: 'true' } }, + { 'fund.restrict_by_locations': { $ne: 'true' } }, + { 'fund.updated_date': { $gte: '2020-01-01T00:00:00.000' } }, + { 'ledger.created_date': { $lte: '2040-01-01T00:00:00.000' } }, + ], }; cy.wrap(true).then(() => { @@ -1231,84 +1403,99 @@ describe('Lists', () => { body.content.forEach((item) => { expect(item['ledger.restrict_expenditures']).to.be.equal('true'); expect(item['fund.restrict_by_locations']).to.be.equal('false'); - expect(new Date(item['fund.updated_date'])).to.be.greaterThan(new Date('2020-01-01T00:00:00.000')); - expect(new Date(item['ledger.created_date'])).to.be.lessThan(new Date('2040-01-01T00:00:00.000')); + expect(new Date(item['fund.updated_date'])).to.be.greaterThan( + new Date('2020-01-01T00:00:00.000'), + ); + expect(new Date(item['ledger.created_date'])).to.be.lessThan( + new Date('2040-01-01T00:00:00.000'), + ); }); }); }); - }); + }, + ); - it('C667570 Search for "Fund with ledger" in the query builder using the fields "Ledger — Fiscal year one", "Fund type — Type", "Fund — Status" and "Ledger — Status" (corsair)', + it( + 'C667570 Search for "Fund with ledger" in the query builder using the fields "Ledger — Fiscal year one", "Fund type — Type", "Fund — Status" and "Ledger — Status" (corsair)', { tags: ['criticalPath', 'corsair', 'C667570'] }, () => { const fqlQuery = { - '$and': [ - { 'fund.fund_status': { '$eq': 'Active' } }, - ] + $and: [{ 'fund.fund_status': { $eq: 'Active' } }], }; - getAllValues('ledger.fiscal_year_one', 'name').then(({ values }) => { - const obj = { - 'ledger.fiscal_year_one': { - '$in': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - getFilteredValues('fund_type.name', 'name', ['Books', 'Audio']).then(({ values }) => { + getAllValues('ledger.fiscal_year_one', 'name') + .then(({ values }) => { const obj = { - 'fund_type.name': { - '$nin': values - } + 'ledger.fiscal_year_one': { + $in: values, + }, }; fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, fundsSchema).then((body) => { - body.content.forEach((item) => { - expect(item['fund.fund_status'].includes('Active')).to.be.equal(true); - if (item['fund_type.name']) { - expect(['Books', 'Audio'].includes(item['fund_type.name'])).to.be.equal(false); - } + }) + .then(() => { + getFilteredValues('fund_type.name', 'name', ['Books', 'Audio']) + .then(({ values }) => { + const obj = { + 'fund_type.name': { + $nin: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, fundsSchema).then((body) => { + body.content.forEach((item) => { + expect(item['fund.fund_status'].includes('Active')).to.be.equal(true); + if (item['fund_type.name']) { + expect(['Books', 'Audio'].includes(item['fund_type.name'])).to.be.equal( + false, + ); + } + }); + }); }); - }); }); - }); - }); + }, + ); - it('C667568 Search for "Fund with ledger" in the query builder using the fields "Fund — Acquisition unit names", "Fund — Donor organizations" and " Fund — Transfer from" (corsair)', + it( + 'C667568 Search for "Fund with ledger" in the query builder using the fields "Fund — Acquisition unit names", "Fund — Donor organizations" and " Fund — Transfer from" (corsair)', { tags: ['extendedPath', 'corsair', 'C667568'] }, () => { const fqlQuery = { - '$and': [ - { 'fund.donor_organizations': { '$empty': true } }, - ] + $and: [{ 'fund.donor_organizations': { $empty: true } }], }; - getFilteredValues('fund.acquisition_unit', 'name', ['main']).then(({ values }) => { - const obj = { - 'fund.acquisition_unit': { - '$nin': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - getAllValues('fund.allocated_from', 'allocated_from').then(({ values }) => { + getFilteredValues('fund.acquisition_unit', 'name', ['main']) + .then(({ values }) => { const obj = { - 'fund.allocated_from': { - '$in': values - } + 'fund.acquisition_unit': { + $nin: values, + }, }; fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, fundsSchema).then((body) => { - body.content.forEach((item) => { - expect(item['fund.donor_organizations']).to.be.equal(null); - expect(['main'].includes(item['fund.allocated_from'])).to.be.equal(false); + }) + .then(() => { + getAllValues('fund.allocated_from', 'allocated_from') + .then(({ values }) => { + const obj = { + 'fund.allocated_from': { + $in: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, fundsSchema).then((body) => { + body.content.forEach((item) => { + expect(item['fund.donor_organizations']).to.be.equal(null); + expect(['main'].includes(item['fund.allocated_from'])).to.be.equal(false); + }); + }); }); - }); }); - }); - }); + }, + ); }); describe('Budgets', () => { @@ -1321,13 +1508,15 @@ describe('Lists', () => { userData = userProperties; cy.getUserToken(userData.username, userData.password); }); - Lists.getTypeIdByNameViaApi('Budgets').then((typeId) => { - recordTypeId = typeId; - }).then(() => { - Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { - typeData = typeResponse.body; + Lists.getTypeIdByNameViaApi('Budgets') + .then((typeId) => { + recordTypeId = typeId; + }) + .then(() => { + Lists.getTypeByIdViaApi(recordTypeId).then((typeResponse) => { + typeData = typeResponse.body; + }); }); - }); }); after('Delete test user', () => { @@ -1335,98 +1524,115 @@ describe('Lists', () => { Users.deleteViaApi(userData.userId); }); - it('C688840 Search for "Budgets" in the query builder using the fields "Fund — Fund — Acquisition unit names", "Budget — Budget UUID", "Fiscal Year — Version", "Fund — Fund — Status" (corsair)', + it( + 'C688840 Search for "Budgets" in the query builder using the fields "Fund — Fund — Acquisition unit names", "Budget — Budget UUID", "Fiscal Year — Version", "Fund — Fund — Status" (corsair)', { tags: ['extendedPath', 'corsair', 'C688840'] }, () => { const fqlQuery = { - '$and': [ - { 'budget.id': { '$nin': ['test'] } }, - { 'fiscal_year.version': { '$gte': '1' } }, - { 'fund.fund.fund_status': { '$in': ['Active', 'Frozen', 'Inactive'] } }, - ] + $and: [ + { 'budget.id': { $nin: ['test'] } }, + { 'fiscal_year.version': { $gte: '1' } }, + { 'fund.fund.fund_status': { $in: ['Active', 'Frozen', 'Inactive'] } }, + ], }; - getAllValues('fund.fund.acquisition_unit', 'name').then(({ values }) => { - const obj = { - 'fund.fund.acquisition_unit': { - '$in': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, budgetsSchema).then((body) => { - body.content.forEach((item) => { - expect(['test'].includes(item['budget.id'])).to.be.equal(false); - expect(item['fiscal_year.version'] >= 1).to.be.equal(true); - expect(['Active', 'Frozen', 'Inactive'].includes(item['fund.fund.fund_status'])).to.be.equal(true); + getAllValues('fund.fund.acquisition_unit', 'name') + .then(({ values }) => { + const obj = { + 'fund.fund.acquisition_unit': { + $in: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, budgetsSchema).then((body) => { + body.content.forEach((item) => { + expect(['test'].includes(item['budget.id'])).to.be.equal(false); + expect(item['fiscal_year.version'] >= 1).to.be.equal(true); + expect( + ['Active', 'Frozen', 'Inactive'].includes(item['fund.fund.fund_status']), + ).to.be.equal(true); + }); }); }); - }); - }); + }, + ); - it('C688845 Search for "Budgets" in the query builder using the fields "Fiscal Year — Created date", "Fiscal Year — Period begin date", "Fiscal Year — Code", "Fiscal Year — Description" (corsair)', + it( + 'C688845 Search for "Budgets" in the query builder using the fields "Fiscal Year — Created date", "Fiscal Year — Period begin date", "Fiscal Year — Code", "Fiscal Year — Description" (corsair)', { tags: ['extendedPath', 'corsair', 'C688845'] }, () => { const fqlQuery = { - '$and': [ - { 'fiscal_year.created_date': { '$gte': '2025-01-01T00:00:00.000' } }, - { 'fiscal_year.period_begin_date': { '$lte': '2040-01-01T00:00:00.000' } }, - { 'fiscal_year.code': { '$starts_with': 'F' } }, - { 'fiscal_year.description': { '$ne': 'Test' } }, - ] + $and: [ + { 'fiscal_year.created_date': { $gte: '2025-01-01T00:00:00.000' } }, + { 'fiscal_year.period_begin_date': { $lte: '2040-01-01T00:00:00.000' } }, + { 'fiscal_year.code': { $starts_with: 'F' } }, + { 'fiscal_year.description': { $ne: 'Test' } }, + ], }; cy.wrap(true).then(() => { validateResponse(fqlQuery, budgetsSchema).then((body) => { body.content.forEach((item) => { - expect(new Date(item['fiscal_year.created_date'])).to.be.greaterThan(new Date('2025-01-01T00:00:00.000')); - expect(new Date(item['fiscal_year.period_begin_date'])).to.be.lessThan(new Date('2040-01-01T00:00:00.000')); + expect(new Date(item['fiscal_year.created_date'])).to.be.greaterThan( + new Date('2025-01-01T00:00:00.000'), + ); + expect(new Date(item['fiscal_year.period_begin_date'])).to.be.lessThan( + new Date('2040-01-01T00:00:00.000'), + ); expect(item['fiscal_year.code'].startsWith('F')).to.be.equal(true); expect(item['fiscal_year.description']).to.not.be.equal('Test'); }); }); }); - }); + }, + ); - it('C689199 Search for "Budgets" in the query builder using the fields Fund — Ledger — Fiscal year one, Budget — Status, Fund — Ledger — Restrict encumbrance, Fund — Ledger — Restrict expenditures (corsair)', + it( + 'C689199 Search for "Budgets" in the query builder using the fields Fund — Ledger — Fiscal year one, Budget — Status, Fund — Ledger — Restrict encumbrance, Fund — Ledger — Restrict expenditures (corsair)', { tags: ['criticalPath', 'corsair', 'C689199'] }, () => { const fqlQuery = { - '$and': [ - { 'budget.budget_status': { '$nin': ['Active'] } }, - { 'fund.ledger.restrict_encumbrance': { '$eq': 'true' } }, - { 'fund.ledger.restrict_expenditures': { '$ne': 'false' } }, - ] + $and: [ + { 'budget.budget_status': { $nin: ['Active'] } }, + { 'fund.ledger.restrict_encumbrance': { $eq: 'true' } }, + { 'fund.ledger.restrict_expenditures': { $ne: 'false' } }, + ], }; - getAllValues('fund.ledger.fiscal_year_one', 'name').then(({ values }) => { - const obj = { - 'fund.ledger.fiscal_year_one': { - '$in': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, budgetsSchema).then((body) => { - body.content.forEach((item) => { - expect(['Active'].includes(item['budget.budget_status'])).to.be.equal(false); - expect(item['fund.ledger.restrict_encumbrance']).to.be.equal('true'); - expect(item['fund.ledger.restrict_expenditures']).to.not.be.equal('false'); + getAllValues('fund.ledger.fiscal_year_one', 'name') + .then(({ values }) => { + const obj = { + 'fund.ledger.fiscal_year_one': { + $in: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, budgetsSchema).then((body) => { + body.content.forEach((item) => { + expect(['Active'].includes(item['budget.budget_status'])).to.be.equal(false); + expect(item['fund.ledger.restrict_encumbrance']).to.be.equal('true'); + expect(item['fund.ledger.restrict_expenditures']).to.not.be.equal('false'); + }); }); }); - }); - }); + }, + ); - it('C692084 Search for "Budgets" in the query builder using the fields "Budget — Allocated", "Fiscal Year — Currency", "Fund — Fund — Donor organizations","Fund — Ledger — UUID" (corsair)', + it( + 'C692084 Search for "Budgets" in the query builder using the fields "Budget — Allocated", "Fiscal Year — Currency", "Fund — Fund — Donor organizations","Fund — Ledger — UUID" (corsair)', { tags: ['criticalPath', 'corsair', 'C692084'] }, () => { const fqlQuery = { - '$and': [ - { 'budget.allocated': { '$gt': '-2' } }, - { 'fiscal_year.currency': { '$ne': 'EURO' } }, - { 'fund.fund.donor_organizations': { '$empty': true } }, - { 'fund.ledger.id': { '$empty': false } }, - ] + $and: [ + { 'budget.allocated': { $gt: '-2' } }, + { 'fiscal_year.currency': { $ne: 'EURO' } }, + { 'fund.fund.donor_organizations': { $empty: true } }, + { 'fund.ledger.id': { $empty: false } }, + ], }; cy.wrap(true).then(() => { @@ -1439,65 +1645,76 @@ describe('Lists', () => { }); }); }); - }); + }, + ); - it('C692085 Search for "Budgets" in the query builder using the fields "Fiscal Year — Series", "Fund — Fund — Transfer to", "Fund — Fund — External account number", Budget — Initial allocation (corsair)', + it( + 'C692085 Search for "Budgets" in the query builder using the fields "Fiscal Year — Series", "Fund — Fund — Transfer to", "Fund — Fund — External account number", Budget — Initial allocation (corsair)', { tags: ['extendedPath', 'corsair', 'C692085'] }, () => { const fqlQuery = { - '$and': [ - { 'fiscal_year.series': { '$ne': '1' } }, - { 'fund.fund.external_account_no': { '$ne': '115878270630030' } }, - { 'budget.initial_allocation': { '$lte': '100000000' } }, - ] + $and: [ + { 'fiscal_year.series': { $ne: '1' } }, + { 'fund.fund.external_account_no': { $ne: '115878270630030' } }, + { 'budget.initial_allocation': { $lte: '100000000' } }, + ], }; - getAllValues('fund.fund.allocated_to', 'allocated_to').then(({ values }) => { - const obj = { - 'fund.fund.allocated_to': { - '$in': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, budgetsSchema).then((body) => { - body.content.forEach((item) => { - expect(item['fiscal_year.series']).to.not.be.equal(1); - expect(item['fund.fund.external_account_no']).to.not.be.equal('115878270630030'); - expect(item['budget.initial_allocation']).to.be.lessThan(100000000); + getAllValues('fund.fund.allocated_to', 'allocated_to') + .then(({ values }) => { + const obj = { + 'fund.fund.allocated_to': { + $in: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, budgetsSchema).then((body) => { + body.content.forEach((item) => { + expect(item['fiscal_year.series']).to.not.be.equal(1); + expect(item['fund.fund.external_account_no']).to.not.be.equal('115878270630030'); + expect(item['budget.initial_allocation']).to.be.lessThan(100000000); + }); }); }); - }); - }); + }, + ); - it('C692086 Search for "Budgets" in the query builder using the fields "Budget — Net transfers", "Fiscal Year — Updated date", "Fiscal Year — Name", "Fund — Fund — UUID" (corsair)', + it( + 'C692086 Search for "Budgets" in the query builder using the fields "Budget — Net transfers", "Fiscal Year — Updated date", "Fiscal Year — Name", "Fund — Fund — UUID" (corsair)', { tags: ['extendedPath', 'corsair', 'C692086'] }, () => { const fqlQuery = { - '$and': [ - { 'budget.net_transfers': { '$gt': '1' } }, - { 'fiscal_year.updated_date': { '$gt': '2020-01-01T00:00:00.000' } }, - { 'fund.fund.id': { '$empty': false } }, - ] + $and: [ + { 'budget.net_transfers': { $gt: '1' } }, + { 'fiscal_year.updated_date': { $gt: '2020-01-01T00:00:00.000' } }, + { 'fund.fund.id': { $empty: false } }, + ], }; - getAllValues('fiscal_year.name', 'name').then(({ values }) => { - const obj = { - 'fiscal_year.name': { - '$in': values - } - }; - fqlQuery.$and.push(obj); - }).then(() => { - validateResponse(fqlQuery, budgetsSchema).then((body) => { - body.content.forEach((item) => { - expect(item['budget.net_transfers']).to.be.greaterThan(1); - expect(new Date(item['fiscal_year.updated_date'])).to.be.greaterThan(new Date('2020-01-01T00:00:00.000')); - expect(item['fund.fund.id']).to.not.be.equal(null); + getAllValues('fiscal_year.name', 'name') + .then(({ values }) => { + const obj = { + 'fiscal_year.name': { + $in: values, + }, + }; + fqlQuery.$and.push(obj); + }) + .then(() => { + validateResponse(fqlQuery, budgetsSchema).then((body) => { + body.content.forEach((item) => { + expect(item['budget.net_transfers']).to.be.greaterThan(1); + expect(new Date(item['fiscal_year.updated_date'])).to.be.greaterThan( + new Date('2020-01-01T00:00:00.000'), + ); + expect(item['fund.fund.id']).to.not.be.equal(null); + }); }); }); - }); - }); + }, + ); }); }); }); diff --git a/cypress/e2e/lists/query-builder/search-query-builder-ui.cy.js b/cypress/e2e/lists/query-builder/search-query-builder-ui.cy.js index ffc7c9645b..996d4c3145 100644 --- a/cypress/e2e/lists/query-builder/search-query-builder-ui.cy.js +++ b/cypress/e2e/lists/query-builder/search-query-builder-ui.cy.js @@ -22,7 +22,15 @@ describe('Lists', () => { Lists.buildQuery(); }; - const verifyQueryBuilder = (field, operator, filedType, value, query, locator, valueInColumn) => { + const verifyQueryBuilder = ( + field, + operator, + filedType, + value, + query, + locator, + valueInColumn, + ) => { QueryModal.selectField(field); QueryModal.selectOperator(operator); QueryModal.populateFiled(filedType, value); diff --git a/cypress/e2e/lists/view-list/inactive-lists-view.cy.js b/cypress/e2e/lists/view-list/inactive-lists-view.cy.js index ae9354120a..c0379b1656 100644 --- a/cypress/e2e/lists/view-list/inactive-lists-view.cy.js +++ b/cypress/e2e/lists/view-list/inactive-lists-view.cy.js @@ -53,56 +53,52 @@ describe('Lists', () => { Users.deleteViaApi(userData.userId); }); - it( - 'C411840 Inactive lists (corsair)', - { tags: ['extendedPath', 'corsair', 'C411840'] }, - () => { - cy.login(userData.username, userData.password, { - path: TopMenu.listsPath, - waiter: Lists.waitLoading, - }); + it('C411840 Inactive lists (corsair)', { tags: ['extendedPath', 'corsair', 'C411840'] }, () => { + cy.login(userData.username, userData.password, { + path: TopMenu.listsPath, + waiter: Lists.waitLoading, + }); - // Step 1: Click on any of the inactive lists - Lists.selectInactiveLists(); - Lists.verifyListIsPresent(listData.name); - Lists.openList(listData.name); + // Step 1: Click on any of the inactive lists + Lists.selectInactiveLists(); + Lists.verifyListIsPresent(listData.name); + Lists.openList(listData.name); - // Step 2: Check the structure of the lists details page - Lists.verifyRecordsNumber('No'); - Lists.closeListDetailsPane(); - Lists.openList(listData.name); + // Step 2: Check the structure of the lists details page + Lists.verifyRecordsNumber('No'); + Lists.closeListDetailsPane(); + Lists.openList(listData.name); - // Step 3: Click on "Actions" dropdown - Lists.openActions(); + // Step 3: Click on "Actions" dropdown + Lists.openActions(); - // Step 4: Check the buttons status - Lists.verifyRefreshListButtonIsDisabled(); - Lists.verifyExportListVisibleColumnsButtonIsDisabled(); - Lists.verifyExportListButtonIsDisabled(); - Lists.verifyEditListButtonIsActive(); - Lists.verifyDuplicateListButtonIsActive(); - Lists.verifyDeleteListButtonIsActive(); + // Step 4: Check the buttons status + Lists.verifyRefreshListButtonIsDisabled(); + Lists.verifyExportListVisibleColumnsButtonIsDisabled(); + Lists.verifyExportListButtonIsDisabled(); + Lists.verifyEditListButtonIsActive(); + Lists.verifyDuplicateListButtonIsActive(); + Lists.verifyDeleteListButtonIsActive(); - // Step 5: Click on "List information" dropdown - Lists.clickOnListInformationAccordion(); + // Step 5: Click on "List information" dropdown + Lists.clickOnListInformationAccordion(); - // Step 6: Click on "List information" dropdown again - Lists.expandListInformationAccordion(); - Lists.verifyStatusLabel('Inactive'); - Lists.verifyRecordType(listData.recordType); + // Step 6: Click on "List information" dropdown again + Lists.expandListInformationAccordion(); + Lists.verifyStatusLabel('Inactive'); + Lists.verifyRecordType(listData.recordType); - // Step 7: Click on "Query: " dropdown - collapse it - Lists.clickOnQueryAccordion(); + // Step 7: Click on "Query: " dropdown - collapse it + Lists.clickOnQueryAccordion(); - // Step 8: Click on "Query: x" dropdown again - expand it - Lists.clickOnQueryAccordion(); - Lists.verifyQuery(listData.fqlQuery); - Lists.verifyListsPaneIsEmpty(); + // Step 8: Click on "Query: x" dropdown again - expand it + Lists.clickOnQueryAccordion(); + Lists.verifyQuery(listData.fqlQuery); + Lists.verifyListsPaneIsEmpty(); - // Step 9: Click on "X" button - Lists.closeListDetailsPane(); - Lists.verifyListIsPresent(listData.name); - }, - ); + // Step 9: Click on "X" button + Lists.closeListDetailsPane(); + Lists.verifyListIsPresent(listData.name); + }); }); }); diff --git a/cypress/e2e/orders/change-location-during-receiving.cy.js b/cypress/e2e/orders/change-location-during-receiving.cy.js index b81ae304bc..5124aeb0f6 100644 --- a/cypress/e2e/orders/change-location-during-receiving.cy.js +++ b/cypress/e2e/orders/change-location-during-receiving.cy.js @@ -14,115 +14,117 @@ import InventoryInstance from '../../support/fragments/inventory/inventoryInstan import InventoryInstances from '../../support/fragments/inventory/inventoryInstances'; describe( - 'orders: Receive piece from Order', + 'Orders', { retries: { runMode: 1, }, }, () => { - let order; - let organization; - let orderLineUI; - let user; - let orderNumber; - let firstLocation; - let secondLocation; - const displaySummary = 'autotestCaption'; + describe('Receiving and Check-in', () => { + let order; + let organization; + let orderLineUI; + let user; + let orderNumber; + let firstLocation; + let secondLocation; + const displaySummary = 'autotestCaption'; - beforeEach(() => { - order = { ...NewOrder.defaultOneTimeOrder, approved: true }; - organization = { ...NewOrganization.defaultUiOrganizations }; + beforeEach(() => { + order = { ...NewOrder.defaultOneTimeOrder, approved: true }; + organization = { ...NewOrganization.defaultUiOrganizations }; - cy.getAdminToken(); + cy.getAdminToken(); - InventoryInstances.getLocations({ limit: 2 }).then((res) => { - [firstLocation, secondLocation] = res; + InventoryInstances.getLocations({ limit: 2 }).then((res) => { + [firstLocation, secondLocation] = res; - cy.getDefaultMaterialType().then((mtype) => { - cy.getAcquisitionMethodsApi({ - query: `value="${ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE_AT_VENDOR_SYSTEM}"`, - }).then((params) => { - // Prepare 2 Open Orders for Rollover - Organizations.createOrganizationViaApi(organization).then((responseOrganizations) => { - organization.id = responseOrganizations; - order.vendor = organization.id; - const orderLine = { - ...BasicOrderLine.defaultOrderLine, - id: uuid(), - cost: { - listUnitPrice: 200.0, - currency: 'USD', - discountType: 'percentage', - quantityPhysical: 1, - poLineEstimatedPrice: 200.0, - }, - fundDistribution: [], - locations: [{ locationId: firstLocation.id, quantity: 1, quantityPhysical: 1 }], - acquisitionMethod: params.body.acquisitionMethods[0].id, - physical: { - createInventory: 'Instance, Holding, Item', - materialType: mtype.id, - materialSupplier: responseOrganizations, - volumes: [], - }, - }; - Orders.createOrderViaApi(order).then((orderResponse) => { - order.id = orderResponse.id; - orderNumber = orderResponse.poNumber; - orderLine.purchaseOrderId = orderResponse.id; - orderLineUI = orderLine; - OrderLines.createOrderLineViaApi(orderLine); - Orders.updateOrderViaApi({ - ...orderResponse, - workflowStatus: ORDER_STATUSES.OPEN, + cy.getDefaultMaterialType().then((mtype) => { + cy.getAcquisitionMethodsApi({ + query: `value="${ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE_AT_VENDOR_SYSTEM}"`, + }).then((params) => { + // Prepare 2 Open Orders for Rollover + Organizations.createOrganizationViaApi(organization).then((responseOrganizations) => { + organization.id = responseOrganizations; + order.vendor = organization.id; + const orderLine = { + ...BasicOrderLine.defaultOrderLine, + id: uuid(), + cost: { + listUnitPrice: 200.0, + currency: 'USD', + discountType: 'percentage', + quantityPhysical: 1, + poLineEstimatedPrice: 200.0, + }, + fundDistribution: [], + locations: [{ locationId: firstLocation.id, quantity: 1, quantityPhysical: 1 }], + acquisitionMethod: params.body.acquisitionMethods[0].id, + physical: { + createInventory: 'Instance, Holding, Item', + materialType: mtype.id, + materialSupplier: responseOrganizations, + volumes: [], + }, + }; + Orders.createOrderViaApi(order).then((orderResponse) => { + order.id = orderResponse.id; + orderNumber = orderResponse.poNumber; + orderLine.purchaseOrderId = orderResponse.id; + orderLineUI = orderLine; + OrderLines.createOrderLineViaApi(orderLine); + Orders.updateOrderViaApi({ + ...orderResponse, + workflowStatus: ORDER_STATUSES.OPEN, + }); }); }); }); }); }); - }); - cy.createTempUser([ - permissions.uiOrdersView.gui, - permissions.uiOrdersEdit.gui, - permissions.uiInventoryViewInstances.gui, - permissions.uiReceivingViewEditCreate.gui, - ]).then((userProperties) => { - user = userProperties; - cy.waitForAuthRefresh(() => { - cy.login(user.username, user.password, { - path: TopMenu.ordersPath, - waiter: Orders.waitLoading, + cy.createTempUser([ + permissions.uiOrdersView.gui, + permissions.uiOrdersEdit.gui, + permissions.uiInventoryViewInstances.gui, + permissions.uiReceivingViewEditCreate.gui, + ]).then((userProperties) => { + user = userProperties; + cy.waitForAuthRefresh(() => { + cy.login(user.username, user.password, { + path: TopMenu.ordersPath, + waiter: Orders.waitLoading, + }); }); }); }); - }); - afterEach(() => { - cy.getAdminToken(); - Orders.deleteOrderViaApi(order.id); - Organizations.deleteOrganizationViaApi(organization.id); - Users.deleteViaApi(user.userId); - }); + afterEach(() => { + cy.getAdminToken(); + Orders.deleteOrderViaApi(order.id); + Organizations.deleteOrganizationViaApi(organization.id); + Users.deleteViaApi(user.userId); + }); - it( - 'C9177 Change location during receiving (thunderjet)', - { tags: ['criticalPath', 'thunderjet', 'C9177', 'shiftLeft'] }, - () => { - Orders.searchByParameter('PO number', orderNumber); - Orders.selectFromResultsList(orderNumber); - // Receiving part - Orders.receiveOrderViaActions(); - Receiving.selectFromResultsList(orderLineUI.titleOrPackage); - Receiving.receiveAndChangeLocation(0, displaySummary, secondLocation.name); + it( + 'C9177 Change location during receiving (thunderjet)', + { tags: ['criticalPath', 'thunderjet', 'C9177', 'shiftLeft'] }, + () => { + Orders.searchByParameter('PO number', orderNumber); + Orders.selectFromResultsList(orderNumber); + // Receiving part + Orders.receiveOrderViaActions(); + Receiving.selectFromResultsList(orderLineUI.titleOrPackage); + Receiving.receiveAndChangeLocation(0, displaySummary, secondLocation.name); - Receiving.checkReceived(0, displaySummary); - Receiving.selectInstanceInReceive(); - InventoryInstance.checkInstanceTitle(orderLineUI.titleOrPackage); - InventoryInstance.openHoldingsAccordion(secondLocation.name); - InventoryInstance.openItemByBarcodeAndIndex('No barcode'); - }, - ); + Receiving.checkReceived(0, displaySummary); + Receiving.selectInstanceInReceive(); + InventoryInstance.checkInstanceTitle(orderLineUI.titleOrPackage); + InventoryInstance.openHoldingsAccordion(secondLocation.name); + InventoryInstance.openItemByBarcodeAndIndex('No barcode'); + }, + ); + }); }, ); diff --git a/cypress/e2e/orders/edifact-exports/create-order-to-edifact-export.cy.js b/cypress/e2e/orders/edifact-exports/create-order-to-edifact-export.cy.js index f6646171c8..c154613ec8 100644 --- a/cypress/e2e/orders/edifact-exports/create-order-to-edifact-export.cy.js +++ b/cypress/e2e/orders/edifact-exports/create-order-to-edifact-export.cy.js @@ -4,6 +4,7 @@ import OrderLines from '../../../support/fragments/orders/orderLines'; import Orders from '../../../support/fragments/orders/orders'; import NewOrganization from '../../../support/fragments/organizations/newOrganization'; import Organizations from '../../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; import NewLocation from '../../../support/fragments/settings/tenant/locations/newLocation'; import ServicePoints from '../../../support/fragments/settings/tenant/servicePoints/servicePoints'; import TopMenu from '../../../support/fragments/topMenu'; @@ -58,7 +59,7 @@ describe('Export Manager', () => { order.orderType = 'One-time'; }); cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.addIntegration(); diff --git a/cypress/e2e/orders/edifact-exports/delete-order-by-user.cy.js b/cypress/e2e/orders/edifact-exports/delete-order-by-user.cy.js index 8558168b0f..372afd4918 100644 --- a/cypress/e2e/orders/edifact-exports/delete-order-by-user.cy.js +++ b/cypress/e2e/orders/edifact-exports/delete-order-by-user.cy.js @@ -6,6 +6,7 @@ import OrderLines from '../../../support/fragments/orders/orderLines'; import Orders from '../../../support/fragments/orders/orders'; import NewOrganization from '../../../support/fragments/organizations/newOrganization'; import Organizations from '../../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; import MaterialTypes from '../../../support/fragments/settings/inventory/materialTypes'; import NewLocation from '../../../support/fragments/settings/tenant/locations/newLocation'; import ServicePoints from '../../../support/fragments/settings/tenant/servicePoints/servicePoints'; @@ -85,7 +86,7 @@ describe('orders: Edifact export', () => { path: TopMenu.organizationsPath, waiter: Organizations.waitLoading, }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.addIntegration(); diff --git a/cypress/e2e/orders/edifact-exports/exported-order-does-not-display-export-details.cy.js b/cypress/e2e/orders/edifact-exports/exported-order-does-not-display-export-details.cy.js index 372d39f75b..6aab888f5f 100644 --- a/cypress/e2e/orders/edifact-exports/exported-order-does-not-display-export-details.cy.js +++ b/cypress/e2e/orders/edifact-exports/exported-order-does-not-display-export-details.cy.js @@ -13,6 +13,7 @@ import getRandomPostfix from '../../../support/utils/stringTools'; import { ACQUISITION_METHOD_NAMES_IN_PROFILE, ORDER_STATUSES } from '../../../support/constants'; import BasicOrderLine from '../../../support/fragments/orders/basicOrderLine'; import MaterialTypes from '../../../support/fragments/settings/inventory/materialTypes'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; Cypress.on('uncaught:exception', () => false); @@ -84,7 +85,7 @@ describe('orders: Edifact export', () => { path: TopMenu.organizationsPath, waiter: Organizations.waitLoading, }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.addIntegration(); diff --git a/cypress/e2e/orders/inventory-interaction/create-new-holdings-for-existing-location.cy.js b/cypress/e2e/orders/inventory-interaction/create-new-holdings-for-existing-location.cy.js index dd3982e4bd..d4bed4c7db 100644 --- a/cypress/e2e/orders/inventory-interaction/create-new-holdings-for-existing-location.cy.js +++ b/cypress/e2e/orders/inventory-interaction/create-new-holdings-for-existing-location.cy.js @@ -16,112 +16,114 @@ import ServicePoints from '../../../support/fragments/settings/tenant/servicePoi import TopMenu from '../../../support/fragments/topMenu'; import Users from '../../../support/fragments/users/users'; -describe('Orders: Inventory interaction', () => { - const testData = { - organization: NewOrganization.getDefaultOrganization({ accounts: 1 }), - servicePoint: ServicePoints.defaultServicePoint, - instance: {}, - location: {}, - order: {}, - user: {}, - }; +describe('Orders', () => { + describe('Inventory interaction', () => { + const testData = { + organization: NewOrganization.getDefaultOrganization({ accounts: 1 }), + servicePoint: ServicePoints.defaultServicePoint, + instance: {}, + location: {}, + order: {}, + user: {}, + }; - before('Create test data', () => { - cy.getAdminToken() - .then(() => { - InventoryInstance.createInstanceViaApi().then(({ instanceData }) => { - testData.instance = instanceData; + before('Create test data', () => { + cy.getAdminToken() + .then(() => { + InventoryInstance.createInstanceViaApi().then(({ instanceData }) => { + testData.instance = instanceData; - Organizations.createOrganizationViaApi(testData.organization); - }); - }) - .then(() => { - ServicePoints.createViaApi(testData.servicePoint).then(() => { - testData.location = Locations.getDefaultLocation({ - servicePointId: testData.servicePoint.id, - }).location; + Organizations.createOrganizationViaApi(testData.organization); + }); + }) + .then(() => { + ServicePoints.createViaApi(testData.servicePoint).then(() => { + testData.location = Locations.getDefaultLocation({ + servicePointId: testData.servicePoint.id, + }).location; - Locations.createViaApi(testData.location).then(() => { - Orders.createOrderViaApi( - NewOrder.getDefaultOrder({ vendorId: testData.organization.id }), - ).then((order) => { - testData.order = order; + Locations.createViaApi(testData.location).then(() => { + Orders.createOrderViaApi( + NewOrder.getDefaultOrder({ vendorId: testData.organization.id }), + ).then((order) => { + testData.order = order; - InventoryHoldings.getHoldingsFolioSource().then((folioSource) => { - InventoryHoldings.createHoldingRecordViaApi({ - instanceId: testData.instance.instanceId, - permanentLocationId: testData.location.id, - sourceId: folioSource.id, - }).then(({ id: holdingId }) => { - testData.instance.holdingId = holdingId; + InventoryHoldings.getHoldingsFolioSource().then((folioSource) => { + InventoryHoldings.createHoldingRecordViaApi({ + instanceId: testData.instance.instanceId, + permanentLocationId: testData.location.id, + sourceId: folioSource.id, + }).then(({ id: holdingId }) => { + testData.instance.holdingId = holdingId; + }); }); }); }); }); }); - }); - cy.createTempUser([ - Permissions.uiInventoryViewInstances.gui, - Permissions.uiOrdersApprovePurchaseOrders.gui, - Permissions.uiOrdersCreate.gui, - ]).then((userProperties) => { - testData.user = userProperties; + cy.createTempUser([ + Permissions.uiInventoryViewInstances.gui, + Permissions.uiOrdersApprovePurchaseOrders.gui, + Permissions.uiOrdersCreate.gui, + ]).then((userProperties) => { + testData.user = userProperties; - cy.login(userProperties.username, userProperties.password, { - path: TopMenu.ordersPath, - waiter: Orders.waitLoading, + cy.login(userProperties.username, userProperties.password, { + path: TopMenu.ordersPath, + waiter: Orders.waitLoading, + }); }); }); - }); - after('Delete test data', () => { - cy.getAdminToken(); - InventoryHoldings.deleteHoldingRecordViaApi(testData.instance.holdingId); - Organizations.deleteOrganizationViaApi(testData.organization.id); - Orders.deleteOrderViaApi(testData.order.id); - InventoryInstance.deleteInstanceViaApi(testData.instance.instanceId); - Locations.deleteViaApi(testData.location); - ServicePoints.deleteViaApi(testData.servicePoint.id); - Users.deleteViaApi(testData.user.userId); - }); + after('Delete test data', () => { + cy.getAdminToken(); + InventoryHoldings.deleteHoldingRecordViaApi(testData.instance.holdingId); + Organizations.deleteOrganizationViaApi(testData.organization.id); + Orders.deleteOrderViaApi(testData.order.id); + InventoryInstance.deleteInstanceViaApi(testData.instance.instanceId); + Locations.deleteViaApi(testData.location); + ServicePoints.deleteViaApi(testData.servicePoint.id); + Users.deleteViaApi(testData.user.userId); + }); - it( - 'C375232 Create new holdings for already existing location when creating an order line (thunderjet) (TaaS)', - { tags: ['extendedPath', 'thunderjet', 'C375232'] }, - () => { - // Click on "PO number" link on "Orders" pane - Orders.selectOrderByPONumber(testData.order.poNumber); + it( + 'C375232 Create new holdings for already existing location when creating an order line (thunderjet) (TaaS)', + { tags: ['extendedPath', 'thunderjet', 'C375232'] }, + () => { + // Click on "PO number" link on "Orders" pane + Orders.selectOrderByPONumber(testData.order.poNumber); - // Select "Add PO line" option & fill the fields - OrderLines.addPolToOrder( - { - title: testData.instance.instanceTitle, - method: ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE_AT_VENDOR_SYSTEM, - format: ORDER_FORMAT_NAMES.PHYSICAL_RESOURCE, - price: '20', - quantity: '1', - inventory: 'Instance, holdings, item', - materialType: MATERIAL_TYPE_NAMES.BOOK, - }, - false, - ); + // Select "Add PO line" option & fill the fields + OrderLines.addPolToOrder( + { + title: testData.instance.instanceTitle, + method: ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE_AT_VENDOR_SYSTEM, + format: ORDER_FORMAT_NAMES.PHYSICAL_RESOURCE, + price: '20', + quantity: '1', + inventory: 'Instance, holdings, item', + materialType: MATERIAL_TYPE_NAMES.BOOK, + }, + false, + ); - // Click "Create new holdings for location" link in "Location" accordion - const SelectLocationModal = OrderLines.openCreateHoldingForLocation(); - SelectLocationModal.verifyModalView(); + // Click "Create new holdings for location" link in "Location" accordion + const SelectLocationModal = OrderLines.openCreateHoldingForLocation(); + SelectLocationModal.verifyModalView(); - // Select permanent location from Preconditions item #1 - SelectLocationModal.selectLocation(testData.location.name); + // Select permanent location from Preconditions item #1 + SelectLocationModal.selectLocation(testData.location.name); - // Fill the following fields & click "Save" - OrderLines.setPhysicalQuantity('1'); - OrderLines.savePol(); - OrderLines.checkTitle(testData.instance.instanceTitle); + // Fill the following fields & click "Save" + OrderLines.setPhysicalQuantity('1'); + OrderLines.savePol(); + OrderLines.checkTitle(testData.instance.instanceTitle); - // Click back arrow on- the top left of the third "PO Line details - OrderLines.backToEditingOrder(); - OrderLines.selectPOLInOrder(0); - }, - ); + // Click back arrow on- the top left of the third "PO Line details + OrderLines.backToEditingOrder(); + OrderLines.selectPOLInOrder(0); + }, + ); + }); }); diff --git a/cypress/e2e/orders/inventory-interaction/create-new-holdings.cy.js b/cypress/e2e/orders/inventory-interaction/create-new-holdings.cy.js index 1dbfc3bee2..eaa0937b82 100644 --- a/cypress/e2e/orders/inventory-interaction/create-new-holdings.cy.js +++ b/cypress/e2e/orders/inventory-interaction/create-new-holdings.cy.js @@ -17,148 +17,150 @@ import ServicePoints from '../../../support/fragments/settings/tenant/servicePoi import TopMenu from '../../../support/fragments/topMenu'; import Users from '../../../support/fragments/users/users'; -describe('Orders: Inventory interaction', () => { - const barcodeForFirstItem = Helper.getRandomBarcode(); - const barcodeForSecondItem = Helper.getRandomBarcode(); +describe('Orders', () => { + describe('Inventory interaction', () => { + const barcodeForFirstItem = Helper.getRandomBarcode(); + const barcodeForSecondItem = Helper.getRandomBarcode(); - const testData = { - organization: NewOrganization.getDefaultOrganization({ accounts: 1 }), - servicePoint: ServicePoints.defaultServicePoint, - instance: {}, - locations: [], - orderNumber: '', - user: {}, - }; + const testData = { + organization: NewOrganization.getDefaultOrganization({ accounts: 1 }), + servicePoint: ServicePoints.defaultServicePoint, + instance: {}, + locations: [], + orderNumber: '', + user: {}, + }; - before('Create test data', () => { - cy.getAdminToken() - .then(() => { - InventoryInstance.createInstanceViaApi().then(({ instanceData }) => { - testData.instance = { - ...instanceData, - quantity: '2', - vendorAccount: testData.organization.accounts[0].accountNo, - listUnitPrice: '10', - poLineEstimatedPrice: '20', - eresource: null, - }; - Organizations.createOrganizationViaApi(testData.organization); - }); - }) - .then(() => { - ServicePoints.createViaApi(testData.servicePoint).then(() => { - Locations.createViaApi( - Locations.getDefaultLocation({ servicePointId: testData.servicePoint.id }).location, - ).then((location) => { - testData.locations.push(location); - - // create the first PO with POL - Orders.createOrderWithOrderLineViaApi( - NewOrder.getDefaultOrder({ vendorId: testData.organization.id }), - BasicOrderLine.getDefaultOrderLine({ - quantity: testData.instance.quantity, - title: testData.instance.instanceTitle, - instanceId: testData.instance.instanceId, - specialLocationId: testData.locations[0].id, - listUnitPrice: testData.instance.listUnitPrice, - poLineEstimatedPrice: testData.instance.poLineEstimatedPrice, - eresource: testData.instance.eresource, - vendorAccount: testData.instance.vendorAccount, - }), - ).then((order) => { - testData.orderNumber = order.poNumber; + before('Create test data', () => { + cy.getAdminToken() + .then(() => { + InventoryInstance.createInstanceViaApi().then(({ instanceData }) => { + testData.instance = { + ...instanceData, + quantity: '2', + vendorAccount: testData.organization.accounts[0].accountNo, + listUnitPrice: '10', + poLineEstimatedPrice: '20', + eresource: null, + }; + Organizations.createOrganizationViaApi(testData.organization); + }); + }) + .then(() => { + ServicePoints.createViaApi(testData.servicePoint).then(() => { + Locations.createViaApi( + Locations.getDefaultLocation({ servicePointId: testData.servicePoint.id }).location, + ).then((location) => { + testData.locations.push(location); - InventoryHoldings.getHoldingsFolioSource().then((folioSource) => { - InventoryHoldings.createHoldingRecordViaApi({ + // create the first PO with POL + Orders.createOrderWithOrderLineViaApi( + NewOrder.getDefaultOrder({ vendorId: testData.organization.id }), + BasicOrderLine.getDefaultOrderLine({ + quantity: testData.instance.quantity, + title: testData.instance.instanceTitle, instanceId: testData.instance.instanceId, - permanentLocationId: location.id, - sourceId: folioSource.id, - }).then(({ id: holdingId }) => { - testData.instance.holdingId = holdingId; + specialLocationId: testData.locations[0].id, + listUnitPrice: testData.instance.listUnitPrice, + poLineEstimatedPrice: testData.instance.poLineEstimatedPrice, + eresource: testData.instance.eresource, + vendorAccount: testData.instance.vendorAccount, + }), + ).then((order) => { + testData.orderNumber = order.poNumber; + + InventoryHoldings.getHoldingsFolioSource().then((folioSource) => { + InventoryHoldings.createHoldingRecordViaApi({ + instanceId: testData.instance.instanceId, + permanentLocationId: location.id, + sourceId: folioSource.id, + }).then(({ id: holdingId }) => { + testData.instance.holdingId = holdingId; + }); }); }); - }); - Locations.createViaApi( - Locations.getDefaultLocation({ servicePointId: testData.servicePoint.id }).location, - ).then((secondLocation) => { - testData.locations.push(secondLocation); + Locations.createViaApi( + Locations.getDefaultLocation({ servicePointId: testData.servicePoint.id }).location, + ).then((secondLocation) => { + testData.locations.push(secondLocation); + }); }); }); }); - }); - cy.createTempUser([ - Permissions.uiInventoryViewCreateEditInstances.gui, - Permissions.uiInventoryViewCreateEditItems.gui, - Permissions.uiInventoryViewInstances.gui, - Permissions.uiOrdersApprovePurchaseOrders.gui, - Permissions.uiOrdersEdit.gui, - ]).then((userProperties) => { - testData.user = userProperties; - cy.login(userProperties.username, userProperties.password, { - path: TopMenu.ordersPath, - waiter: Orders.waitLoading, + cy.createTempUser([ + Permissions.uiInventoryViewCreateEditInstances.gui, + Permissions.uiInventoryViewCreateEditItems.gui, + Permissions.uiInventoryViewInstances.gui, + Permissions.uiOrdersApprovePurchaseOrders.gui, + Permissions.uiOrdersEdit.gui, + ]).then((userProperties) => { + testData.user = userProperties; + cy.login(userProperties.username, userProperties.password, { + path: TopMenu.ordersPath, + waiter: Orders.waitLoading, + }); }); }); - }); - after('Delete test data', () => { - cy.getAdminToken(); - InventoryHoldings.deleteHoldingRecordViaApi(testData.instance.holdingId); - Organizations.deleteOrganizationViaApi(testData.organization.id); - Orders.deleteOrderByOrderNumberViaApi(testData.orderNumber); - ServicePoints.deleteViaApi(testData.servicePoint.id); - Users.deleteViaApi(testData.user.userId); - }); + after('Delete test data', () => { + cy.getAdminToken(); + InventoryHoldings.deleteHoldingRecordViaApi(testData.instance.holdingId); + Organizations.deleteOrganizationViaApi(testData.organization.id); + Orders.deleteOrderByOrderNumberViaApi(testData.orderNumber); + ServicePoints.deleteViaApi(testData.servicePoint.id); + Users.deleteViaApi(testData.user.userId); + }); - it( - 'C375238 Create new holdings for already existing location when editing an order line (thunderjet)', - { tags: ['criticalPath', 'thunderjet', 'C375238'] }, - () => { - Orders.selectOrderByPONumber(testData.orderNumber); - OrderLines.selectPOLInOrder(0); - OrderLines.editPOLInOrder(); - OrderLines.selectRandomInstanceInTitleLookUP(`${testData.instance.instanceTitle}`, 0); - OrderLines.editPOLineInfoAndChangeLocation(testData.locations[1].name, '2'); - OrderLines.backToEditingOrder(); - Orders.openOrder(); - OrderLines.selectPOLInOrder(0); - OrderLines.openLinkedInstance(); - InventoryInstance.checkIsHoldingsCreated([`${testData.locations[0].name} >`]); - InventoryInstance.checkIsHoldingsCreated([`${testData.locations[1].name} >`]); - InventoryInstance.openHoldingsAccordion(testData.locations[1].name); - InventoryInstance.openItemByBarcodeAndIndex('No barcode'); - InventoryItems.edit(); - ItemRecordEdit.addBarcode(barcodeForFirstItem); - ItemRecordEdit.saveAndClose(); - // Need to wait,while instance will be saved - cy.wait(7000); - InventoryItems.closeItemInHeader(); - InventoryInstance.openHoldingsAccordion(testData.locations[1].name); - InventoryInstance.openItemByBarcodeAndIndex('No barcode'); - InventoryItems.edit(); - ItemRecordEdit.addBarcode(barcodeForSecondItem); - ItemRecordEdit.saveAndClose(); - // Need to wait,while instance will be saved - cy.wait(7000); - InventoryItems.closeItemInHeader(); - InventoryInstance.openHoldingsAccordion(testData.locations[1].name); - InventoryInstance.openItemByBarcodeAndIndex(barcodeForFirstItem); - ItemRecordView.checkItemDetails( - testData.locations[1].name, - barcodeForFirstItem, - ITEM_STATUS_NAMES.ON_ORDER, - ); - InventoryItems.closeItemInHeader(); - InventoryInstance.openHoldingsAccordion(testData.locations[1].name); - InventoryInstance.openItemByBarcodeAndIndex(barcodeForSecondItem); - ItemRecordView.checkItemDetails( - testData.locations[1].name, - barcodeForSecondItem, - ITEM_STATUS_NAMES.ON_ORDER, - ); - InventoryItems.closeItemInHeader(); - }, - ); + it( + 'C375238 Create new holdings for already existing location when editing an order line (thunderjet)', + { tags: ['criticalPath', 'thunderjet', 'C375238'] }, + () => { + Orders.selectOrderByPONumber(testData.orderNumber); + OrderLines.selectPOLInOrder(0); + OrderLines.editPOLInOrder(); + OrderLines.selectRandomInstanceInTitleLookUP(`${testData.instance.instanceTitle}`, 0); + OrderLines.editPOLineInfoAndChangeLocation(testData.locations[1].name, '2'); + OrderLines.backToEditingOrder(); + Orders.openOrder(); + OrderLines.selectPOLInOrder(0); + OrderLines.openLinkedInstance(); + InventoryInstance.checkIsHoldingsCreated([`${testData.locations[0].name} >`]); + InventoryInstance.checkIsHoldingsCreated([`${testData.locations[1].name} >`]); + InventoryInstance.openHoldingsAccordion(testData.locations[1].name); + InventoryInstance.openItemByBarcodeAndIndex('No barcode'); + InventoryItems.edit(); + ItemRecordEdit.addBarcode(barcodeForFirstItem); + ItemRecordEdit.saveAndClose(); + // Need to wait,while instance will be saved + cy.wait(7000); + InventoryItems.closeItemInHeader(); + InventoryInstance.openHoldingsAccordion(testData.locations[1].name); + InventoryInstance.openItemByBarcodeAndIndex('No barcode'); + InventoryItems.edit(); + ItemRecordEdit.addBarcode(barcodeForSecondItem); + ItemRecordEdit.saveAndClose(); + // Need to wait,while instance will be saved + cy.wait(7000); + InventoryItems.closeItemInHeader(); + InventoryInstance.openHoldingsAccordion(testData.locations[1].name); + InventoryInstance.openItemByBarcodeAndIndex(barcodeForFirstItem); + ItemRecordView.checkItemDetails( + testData.locations[1].name, + barcodeForFirstItem, + ITEM_STATUS_NAMES.ON_ORDER, + ); + InventoryItems.closeItemInHeader(); + InventoryInstance.openHoldingsAccordion(testData.locations[1].name); + InventoryInstance.openItemByBarcodeAndIndex(barcodeForSecondItem); + ItemRecordView.checkItemDetails( + testData.locations[1].name, + barcodeForSecondItem, + ITEM_STATUS_NAMES.ON_ORDER, + ); + InventoryItems.closeItemInHeader(); + }, + ); + }); }); diff --git a/cypress/e2e/orders/orders-export-to-a-vendor-with-open-order.cy.js b/cypress/e2e/orders/orders-export-to-a-vendor-with-open-order.cy.js index d20a076021..b734b41528 100644 --- a/cypress/e2e/orders/orders-export-to-a-vendor-with-open-order.cy.js +++ b/cypress/e2e/orders/orders-export-to-a-vendor-with-open-order.cy.js @@ -5,6 +5,7 @@ import OrderLines from '../../support/fragments/orders/orderLines'; import Orders from '../../support/fragments/orders/orders'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import InteractorsTools from '../../support/utils/interactorsTools'; @@ -45,7 +46,7 @@ describe('Export Manager', () => { order.orderType = 'One-time'; }); cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.addIntegration(); diff --git a/cypress/e2e/orders/orders-export-to-a-vendor.cy.js b/cypress/e2e/orders/orders-export-to-a-vendor.cy.js index 913a29126a..338621c3b8 100644 --- a/cypress/e2e/orders/orders-export-to-a-vendor.cy.js +++ b/cypress/e2e/orders/orders-export-to-a-vendor.cy.js @@ -4,6 +4,7 @@ import OrderLines from '../../support/fragments/orders/orderLines'; import Orders from '../../support/fragments/orders/orders'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import InteractorsTools from '../../support/utils/interactorsTools'; @@ -44,7 +45,7 @@ describe('Export Manager', () => { order.orderType = 'One-time'; }); cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.addIntegration(); diff --git a/cypress/e2e/orders/orders.unreceivePiece.cy.js b/cypress/e2e/orders/orders.unreceivePiece.cy.js index 5a0b045764..511e2087c5 100644 --- a/cypress/e2e/orders/orders.unreceivePiece.cy.js +++ b/cypress/e2e/orders/orders.unreceivePiece.cy.js @@ -13,68 +13,70 @@ import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import InventoryInstance from '../../support/fragments/inventory/inventoryInstance'; import TopMenu from '../../support/fragments/topMenu'; -describe('orders: Unreceive piece from Order', () => { - const order = { ...NewOrder.defaultOneTimeOrder }; - const orderLine = { ...BasicOrderLine.defaultOrderLine }; - const organization = { ...NewOrganization.defaultUiOrganizations }; +describe('Orders', () => { + describe('Receiving and Check-in', () => { + const order = { ...NewOrder.defaultOneTimeOrder }; + const orderLine = { ...BasicOrderLine.defaultOrderLine }; + const organization = { ...NewOrganization.defaultUiOrganizations }; - before(() => { - cy.getAdminToken(); - Organizations.createOrganizationViaApi(organization).then((response) => { - organization.id = response; - order.vendor = response; - orderLine.physical.materialSupplier = response; - orderLine.eresource.accessProvider = response; - }); - cy.getLocations({ query: `name="${OrdersHelper.mainLibraryLocation}"` }).then((location) => { - orderLine.locations[0].locationId = location.id; - }); - cy.getBookMaterialType().then((materialType) => { - orderLine.physical.materialType = materialType.id; - }); - cy.waitForAuthRefresh(() => { - cy.loginAsAdmin({ - path: TopMenu.ordersPath, - waiter: Orders.waitLoading, + before(() => { + cy.getAdminToken(); + Organizations.createOrganizationViaApi(organization).then((response) => { + organization.id = response; + order.vendor = response; + orderLine.physical.materialSupplier = response; + orderLine.eresource.accessProvider = response; + }); + cy.getLocations({ query: `name="${OrdersHelper.mainLibraryLocation}"` }).then((location) => { + orderLine.locations[0].locationId = location.id; + }); + cy.getBookMaterialType().then((materialType) => { + orderLine.physical.materialType = materialType.id; + }); + cy.waitForAuthRefresh(() => { + cy.loginAsAdmin({ + path: TopMenu.ordersPath, + waiter: Orders.waitLoading, + }); }); }); - }); - after(() => { - Orders.deleteOrderViaApi(order.id); - Organizations.deleteOrganizationViaApi(organization.id); - }); + after(() => { + Orders.deleteOrderViaApi(order.id); + Organizations.deleteOrganizationViaApi(organization.id); + }); - it( - 'C10925 Unreceive piece using "Actions" button (thunderjet)', - { tags: ['smoke', 'thunderjet', 'C10925', 'shiftLeft'] }, - () => { - const barcode = Helper.getRandomBarcode(); - const enumeration = 'autotestCaption'; - Orders.createOrderWithOrderLineViaApi(order, orderLine).then(({ poNumber }) => { - Orders.searchByParameter('PO number', poNumber); - Orders.selectFromResultsList(poNumber); - Orders.openOrder(); - InteractorsTools.checkCalloutMessage( - `The Purchase order - ${poNumber} has been successfully opened`, - ); - Orders.receiveOrderViaActions(); - // Receive piece - Receiving.selectPOLInReceive(orderLine.titleOrPackage); - Receiving.receivePiece(0, enumeration, barcode); - Receiving.checkReceivedPiece(0, enumeration, barcode); - // Unreceive piece - Receiving.unreceivePiece(); - // inventory part - TopMenuNavigation.openAppFromDropdown('Inventory'); - InventorySearchAndFilter.switchToItem(); - InventorySearchAndFilter.searchByParameter('Barcode', barcode); - cy.wait(5000); - InventorySearchAndFilter.clickOnCloseIcon(); - InventoryInstance.openHoldingsAccordion(OrdersHelper.mainLibraryLocation); - InventoryInstance.openItemByBarcodeAndIndex(barcode); - ItemRecordView.verifyItemStatus('On order'); - }); - }, - ); + it( + 'C10925 Unreceive piece using "Actions" button (thunderjet)', + { tags: ['smoke', 'thunderjet', 'C10925', 'shiftLeft'] }, + () => { + const barcode = Helper.getRandomBarcode(); + const enumeration = 'autotestCaption'; + Orders.createOrderWithOrderLineViaApi(order, orderLine).then(({ poNumber }) => { + Orders.searchByParameter('PO number', poNumber); + Orders.selectFromResultsList(poNumber); + Orders.openOrder(); + InteractorsTools.checkCalloutMessage( + `The Purchase order - ${poNumber} has been successfully opened`, + ); + Orders.receiveOrderViaActions(); + // Receive piece + Receiving.selectPOLInReceive(orderLine.titleOrPackage); + Receiving.receivePiece(0, enumeration, barcode); + Receiving.checkReceivedPiece(0, enumeration, barcode); + // Unreceive piece + Receiving.unreceivePiece(); + // inventory part + TopMenuNavigation.openAppFromDropdown('Inventory'); + InventorySearchAndFilter.switchToItem(); + InventorySearchAndFilter.searchByParameter('Barcode', barcode); + cy.wait(5000); + InventorySearchAndFilter.clickOnCloseIcon(); + InventoryInstance.openHoldingsAccordion(OrdersHelper.mainLibraryLocation); + InventoryInstance.openItemByBarcodeAndIndex(barcode); + ItemRecordView.verifyItemStatus('On order'); + }); + }, + ); + }); }); diff --git a/cypress/e2e/orders/po-filters.cy.js b/cypress/e2e/orders/po-filters.cy.js index a9e7b9c687..cfec4f2d0e 100644 --- a/cypress/e2e/orders/po-filters.cy.js +++ b/cypress/e2e/orders/po-filters.cy.js @@ -10,7 +10,7 @@ import { randomFourDigitNumber } from '../../support/utils/stringTools'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import { APPLICATION_NAMES } from '../../support/constants'; -describe('orders: Test PO filters', () => { +describe('Orders', () => { const organization = { ...NewOrganization.defaultUiOrganizations }; const orderPrefix = `pref${randomFourDigitNumber()}`; const orderSuffix = `suf${randomFourDigitNumber()}`; diff --git a/cypress/e2e/orders/po-search.cy.js b/cypress/e2e/orders/po-search.cy.js index 0c96f96010..f4f39ee0cb 100644 --- a/cypress/e2e/orders/po-search.cy.js +++ b/cypress/e2e/orders/po-search.cy.js @@ -7,7 +7,7 @@ import Organizations from '../../support/fragments/organizations/organizations'; import TopMenu from '../../support/fragments/topMenu'; import DateTools from '../../support/utils/dateTools'; -describe('orders: Test PO search', () => { +describe('Orders', () => { const order = { ...NewOrder.defaultOneTimeOrder }; const orderLine = { ...BasicOrderLine.defaultOrderLine }; const organization = { ...NewOrganization.defaultUiOrganizations }; diff --git a/cypress/e2e/orders/pol-filters.cy.js b/cypress/e2e/orders/pol-filters.cy.js index 759824c816..8f70c0afa4 100644 --- a/cypress/e2e/orders/pol-filters.cy.js +++ b/cypress/e2e/orders/pol-filters.cy.js @@ -11,7 +11,7 @@ import DateTools from '../../support/utils/dateTools'; import getRandomPostfix from '../../support/utils/stringTools'; import OrderLines from '../../support/fragments/orders/orderLines'; -describe('orders: Test Po line filters', () => { +describe('Orders', () => { const organization = { ...NewOrganization.defaultUiOrganizations }; const today = new Date(); const subcriptionDate = DateTools.getFormattedDate({ date: today }, 'MM/DD/YYYY'); diff --git a/cypress/e2e/orders/pol-search.cy.js b/cypress/e2e/orders/pol-search.cy.js index 49cc713b50..c2e66e1305 100644 --- a/cypress/e2e/orders/pol-search.cy.js +++ b/cypress/e2e/orders/pol-search.cy.js @@ -9,7 +9,7 @@ import TopMenu from '../../support/fragments/topMenu'; import getRandomPostfix from '../../support/utils/stringTools'; import OrderLines from '../../support/fragments/orders/orderLines'; -describe('orders: Test Po line search', () => { +describe('Orders', () => { const organization = { ...NewOrganization.defaultUiOrganizations }; const order = { ...NewOrder.defaultOneTimeOrder }; const orderLine = { diff --git a/cypress/e2e/orders/receive-piece-from-order.cy.js b/cypress/e2e/orders/receive-piece-from-order.cy.js index 55a324794c..1128f76be0 100644 --- a/cypress/e2e/orders/receive-piece-from-order.cy.js +++ b/cypress/e2e/orders/receive-piece-from-order.cy.js @@ -16,92 +16,98 @@ import Users from '../../support/fragments/users/users'; import InteractorsTools from '../../support/utils/interactorsTools'; describe( - 'orders: Receive piece from Order', + 'Orders', { retries: { runMode: 1, }, }, () => { - let order; - let organization; - let orderLineTitle; - let orderNumber; - let user; - const barcode = Helper.getRandomBarcode(); - const enumeration = 'autotestCaption'; + describe('Receiving and Check-in', () => { + let order; + let organization; + let orderLineTitle; + let orderNumber; + let user; + const barcode = Helper.getRandomBarcode(); + const enumeration = 'autotestCaption'; - beforeEach(() => { - order = { - ...NewOrder.defaultOneTimeOrder, - approved: true, - }; - organization = { ...NewOrganization.defaultUiOrganizations }; - orderLineTitle = BasicOrderLine.defaultOrderLine.titleOrPackage; - cy.waitForAuthRefresh(() => { - cy.loginAsAdmin({ - path: TopMenu.ordersPath, - waiter: Orders.waitLoading, - }); - }); - Organizations.createOrganizationViaApi(organization).then((response) => { - organization.id = response; - order.vendor = response; - }); - cy.createOrderApi(order).then((orderResponse) => { - orderNumber = orderResponse.body.poNumber; - Orders.resetFiltersIfActive(); - Orders.searchByParameter('PO number', orderNumber); - Orders.selectFromResultsList(orderNumber); - OrderLines.addPOLine(); - cy.wait(4000); - OrderLines.POLineInfodorPhysicalMaterial(orderLineTitle); - }); - cy.createTempUser([ - permissions.uiOrdersView.gui, - permissions.uiOrdersApprovePurchaseOrders.gui, - permissions.uiOrdersReopenPurchaseOrders.gui, - permissions.uiInventoryViewInstances.gui, - permissions.uiReceivingViewEditCreate.gui, - ]).then((userProperties) => { - user = userProperties; + beforeEach(() => { + order = { + ...NewOrder.defaultOneTimeOrder, + approved: true, + }; + organization = { ...NewOrganization.defaultUiOrganizations }; + orderLineTitle = BasicOrderLine.defaultOrderLine.titleOrPackage; cy.waitForAuthRefresh(() => { - cy.login(userProperties.username, userProperties.password, { + cy.loginAsAdmin({ path: TopMenu.ordersPath, waiter: Orders.waitLoading, }); }); + Organizations.createOrganizationViaApi(organization).then((response) => { + organization.id = response; + order.vendor = response; + }); + cy.createOrderApi(order).then((orderResponse) => { + orderNumber = orderResponse.body.poNumber; + Orders.resetFiltersIfActive(); + Orders.searchByParameter('PO number', orderNumber); + Orders.selectFromResultsList(orderNumber); + OrderLines.addPOLine(); + cy.wait(4000); + OrderLines.POLineInfodorPhysicalMaterial(orderLineTitle); + }); + cy.createTempUser([ + permissions.uiOrdersView.gui, + permissions.uiOrdersApprovePurchaseOrders.gui, + permissions.uiOrdersReopenPurchaseOrders.gui, + permissions.uiInventoryViewInstances.gui, + permissions.uiReceivingViewEditCreate.gui, + ]).then((userProperties) => { + user = userProperties; + cy.waitForAuthRefresh(() => { + cy.login(userProperties.username, userProperties.password, { + path: TopMenu.ordersPath, + waiter: Orders.waitLoading, + }); + }); + }); }); - }); - afterEach(() => { - cy.getAdminToken(); - Orders.deleteOrderViaApi(order.id); - Organizations.deleteOrganizationViaApi(organization.id); - Users.deleteViaApi(user.userId); - }); + afterEach(() => { + cy.getAdminToken(); + Orders.deleteOrderViaApi(order.id); + Organizations.deleteOrganizationViaApi(organization.id); + Users.deleteViaApi(user.userId); + }); - it( - 'C735 Receiving pieces from an order for physical material that is set to create Items in inventory (thunderjet)', - { tags: ['smoke', 'thunderjet', 'C735', 'shiftLeft'] }, - () => { - Orders.searchByParameter('PO number', orderNumber); - Orders.selectFromResultsList(orderNumber); - Orders.openOrder(); - InteractorsTools.checkCalloutMessage( - `The Purchase order - ${orderNumber} has been successfully opened`, - ); - Orders.receiveOrderViaActions(); - // Receiving part - Receiving.selectPOLInReceive(orderLineTitle); - Receiving.receivePiece(0, enumeration, barcode); - Receiving.checkReceivedPiece(0, enumeration, barcode); - // inventory part - TopMenuNavigation.navigateToApp('Inventory'); - InventorySearchAndFilter.switchToItem(); - InventorySearchAndFilter.searchByParameter('Barcode', barcode); - ItemRecordView.checkItemDetails(OrdersHelper.onlineLibraryLocation, barcode, 'In process'); - }, - ); + it( + 'C735 Receiving pieces from an order for physical material that is set to create Items in inventory (thunderjet)', + { tags: ['smoke', 'thunderjet', 'C735', 'shiftLeft'] }, + () => { + Orders.searchByParameter('PO number', orderNumber); + Orders.selectFromResultsList(orderNumber); + Orders.openOrder(); + InteractorsTools.checkCalloutMessage( + `The Purchase order - ${orderNumber} has been successfully opened`, + ); + Orders.receiveOrderViaActions(); + // Receiving part + Receiving.selectPOLInReceive(orderLineTitle); + Receiving.receivePiece(0, enumeration, barcode); + Receiving.checkReceivedPiece(0, enumeration, barcode); + // inventory part + TopMenuNavigation.navigateToApp('Inventory'); + InventorySearchAndFilter.switchToItem(); + InventorySearchAndFilter.searchByParameter('Barcode', barcode); + ItemRecordView.checkItemDetails( + OrdersHelper.onlineLibraryLocation, + barcode, + 'In process', + ); + }, + ); + }); }, ); diff --git a/cypress/e2e/orders/receiving-and-check-in/receive-pieces-for-package-order.cy.js b/cypress/e2e/orders/receiving-and-check-in/receive-pieces-for-package-order.cy.js index 2ea0622ace..48eab494cf 100644 --- a/cypress/e2e/orders/receiving-and-check-in/receive-pieces-for-package-order.cy.js +++ b/cypress/e2e/orders/receiving-and-check-in/receive-pieces-for-package-order.cy.js @@ -1,18 +1,19 @@ -import permissions from '../../../support/dictionary/permissions'; +import uuid from 'uuid'; +import { + ACQUISITION_METHOD_NAMES_IN_PROFILE, + APPLICATION_NAMES, + LOCATION_NAMES, +} from '../../../support/constants'; +import Permissions from '../../../support/dictionary/permissions'; import Helper from '../../../support/fragments/finance/financeHelper'; import InventoryInstance from '../../../support/fragments/inventory/inventoryInstance'; import ItemRecordView from '../../../support/fragments/inventory/item/itemRecordView'; -import BasicOrderLine from '../../../support/fragments/orders/basicOrderLine'; -import NewOrder from '../../../support/fragments/orders/newOrder'; -import OrderLines from '../../../support/fragments/orders/orderLines'; -import Orders from '../../../support/fragments/orders/orders'; -import OrdersHelper from '../../../support/fragments/orders/ordersHelper'; -import NewOrganization from '../../../support/fragments/organizations/newOrganization'; -import Organizations from '../../../support/fragments/organizations/organizations'; +import { BasicOrderLine, NewOrder, OrderLines, Orders } from '../../../support/fragments/orders'; +import { NewOrganization, Organizations } from '../../../support/fragments/organizations'; import Receiving from '../../../support/fragments/receiving/receiving'; +import TopMenuNavigation from '../../../support/fragments/topMenuNavigation'; import Users from '../../../support/fragments/users/users'; -import InteractorsTools from '../../../support/utils/interactorsTools'; -import TopMenu from '../../../support/fragments/topMenu'; +import getRandomPostfix from '../../../support/utils/stringTools'; describe('Orders', () => { describe('Receiving and Check-in', () => { @@ -21,7 +22,9 @@ describe('Orders', () => { approved: true, }; const organization = { ...NewOrganization.defaultUiOrganizations }; - const orderLineTitle = BasicOrderLine.defaultOrderLine.titleOrPackage; + const testData = { + orderLine: { titleOrPackage: `Autotest_POL_${getRandomPostfix()}` }, + }; const firstPiece = { copyNumber: Helper.getRandomBarcode(), enumeration: Helper.getRandomBarcode(), @@ -46,42 +49,80 @@ describe('Orders', () => { chronology: Helper.getRandomBarcode(), displaySummary: `AQA-${Helper.getRandomBarcode()}`, }; - let orderNumber; - let user; before(() => { - cy.waitForAuthRefresh(() => { - cy.loginAsAdmin({ - path: TopMenu.ordersPath, - waiter: Orders.waitLoading, - }); - }); + cy.getAdminToken(); Organizations.createOrganizationViaApi(organization).then((response) => { organization.id = response; order.vendor = response; + + cy.getLocations({ query: `name="${LOCATION_NAMES.ANNEX_UI}"` }).then((res) => { + testData.location = res; + + cy.getBookMaterialType().then((materialType) => { + testData.materialType = materialType; + + cy.getAcquisitionMethodsApi({ + query: `value="${ACQUISITION_METHOD_NAMES_IN_PROFILE.PURCHASE_AT_VENDOR_SYSTEM}"`, + }).then((acquisitionMethodResponse) => { + testData.acquisitionMethod = acquisitionMethodResponse.body.acquisitionMethods[0].id; + + Orders.createOrderViaApi(order).then((orderResponse) => { + testData.order = orderResponse; + testData.orderNumber = orderResponse.poNumber; + + const orderLineData = { + ...BasicOrderLine.defaultOrderLine, + id: uuid(), + purchaseOrderId: testData.order.id, + titleOrPackage: testData.orderLine.titleOrPackage, + claimingActive: true, + claimingInterval: 1, + checkinItems: false, + receiptStatus: 'Awaiting Receipt', + cost: { + listUnitPrice: 10.0, + currency: 'USD', + quantityPhysical: 1, + }, + locations: [ + { + locationId: testData.location.id, + quantity: 1, + quantityPhysical: 1, + }, + ], + acquisitionMethod: testData.acquisitionMethod, + physical: { + createInventory: 'Instance, Holding, Item', + materialType: testData.materialType.id, + materialSupplier: organization.id, + volumes: [], + }, + }; + + OrderLines.createOrderLineViaApi(orderLineData).then((orderLineResponse) => { + testData.orderLine = orderLineResponse; + }); + }); + }); + }); + }); }); - cy.createOrderApi(order).then((orderResponse) => { - orderNumber = orderResponse.body.poNumber; - Orders.searchByParameter('PO number', orderNumber); - Orders.selectFromResultsList(orderNumber); - OrderLines.addPOLine(); - OrderLines.POLineInfodorPhysicalMaterial(orderLineTitle); - InteractorsTools.checkCalloutMessage('The purchase order line was successfully created'); - }); + cy.createTempUser([ - permissions.uiOrdersView.gui, - permissions.uiOrdersApprovePurchaseOrders.gui, - permissions.uiOrdersReopenPurchaseOrders.gui, - permissions.uiInventoryViewInstances.gui, - permissions.uiReceivingViewEditCreate.gui, + Permissions.uiOrdersView.gui, + Permissions.uiOrdersApprovePurchaseOrders.gui, + Permissions.uiOrdersReopenPurchaseOrders.gui, + Permissions.uiInventoryViewInstances.gui, + Permissions.uiReceivingViewEditCreate.gui, ]).then((userProperties) => { - user = userProperties; - cy.waitForAuthRefresh(() => { - cy.login(userProperties.username, userProperties.password, { - path: TopMenu.ordersPath, - waiter: Orders.waitLoading, - }); - }); + testData.user = userProperties; + + cy.login(userProperties.username, userProperties.password); + TopMenuNavigation.navigateToApp(APPLICATION_NAMES.ORDERS); + Orders.selectOrdersPane(); + Orders.waitLoading(); }); }); @@ -89,19 +130,19 @@ describe('Orders', () => { cy.getAdminToken(); Orders.deleteOrderViaApi(order.id); Organizations.deleteOrganizationViaApi(organization.id); - Users.deleteViaApi(user.userId); + Users.deleteViaApi(testData.user.userId); }); it( 'C343213 Receive pieces for package order (thunderjet)', - { tags: ['criticalPathFlaky', 'thunderjet', 'C343213', 'shiftLeft'] }, + { tags: ['criticalPath', 'thunderjet', 'C343213'] }, () => { - Orders.searchByParameter('PO number', orderNumber); - Orders.selectFromResultsList(orderNumber); + Orders.searchByParameter('PO number', testData.orderNumber); + Orders.selectFromResultsList(testData.orderNumber); Orders.openOrder(); Orders.receiveOrderViaActions(); // Receiving part - Receiving.selectPOLInReceive(orderLineTitle); + Receiving.selectPOLInReceive(testData.orderLine.titleOrPackage); Receiving.addPiece( firstPiece.displaySummary, firstPiece.copyNumber, @@ -138,26 +179,26 @@ describe('Orders', () => { Receiving.selectPiece(fourthPiece.displaySummary); Receiving.openDropDownInEditPieceModal(); Receiving.quickReceivePiece(fourthPiece.enumeration); - Receiving.selectInstanceInReceive(orderLineTitle); + Receiving.selectInstanceInReceive(testData.orderLine.titleOrPackage); // inventory part - InventoryInstance.openHoldingsAccordion(OrdersHelper.onlineLibraryLocation); + InventoryInstance.openHoldingsAccordion(testData.location.name); ItemRecordView.findRowAndClickLink(firstPiece.copyNumber); - ItemRecordView.verifyEffectiveLocation(OrdersHelper.onlineLibraryLocation); + ItemRecordView.verifyEffectiveLocation(testData.location.name); ItemRecordView.verifyItemStatus('In process'); ItemRecordView.closeDetailView(); - InventoryInstance.openHoldingsAccordion(OrdersHelper.onlineLibraryLocation); + InventoryInstance.openHoldingsAccordion(testData.location.name); ItemRecordView.findRowAndClickLink(secondPiece.enumeration); - ItemRecordView.verifyEffectiveLocation(OrdersHelper.onlineLibraryLocation); + ItemRecordView.verifyEffectiveLocation(testData.location.name); ItemRecordView.verifyItemStatus('In process'); ItemRecordView.closeDetailView(); - InventoryInstance.openHoldingsAccordion(OrdersHelper.onlineLibraryLocation); + InventoryInstance.openHoldingsAccordion(testData.location.name); ItemRecordView.findRowAndClickLink(thirdPiece.chronology); - ItemRecordView.verifyEffectiveLocation(OrdersHelper.onlineLibraryLocation); + ItemRecordView.verifyEffectiveLocation(testData.location.name); ItemRecordView.verifyItemStatus('In process'); ItemRecordView.closeDetailView(); - InventoryInstance.openHoldingsAccordion(OrdersHelper.onlineLibraryLocation); + InventoryInstance.openHoldingsAccordion(testData.location.name); ItemRecordView.findRowAndClickLink(fourthPiece.copyNumber); - ItemRecordView.verifyEffectiveLocation(OrdersHelper.onlineLibraryLocation); + ItemRecordView.verifyEffectiveLocation(testData.location.name); ItemRecordView.verifyItemStatus('In process'); ItemRecordView.closeDetailView(); }, diff --git a/cypress/e2e/organizations/add-contact-to-organization.cy.js b/cypress/e2e/organizations/add-contact-to-organization.cy.js index 340e5fdc36..66676f0d9a 100644 --- a/cypress/e2e/organizations/add-contact-to-organization.cy.js +++ b/cypress/e2e/organizations/add-contact-to-organization.cy.js @@ -3,6 +3,7 @@ import Organizations from '../../support/fragments/organizations/organizations'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; import Permissions from '../../support/dictionary/permissions'; import Users from '../../support/fragments/users/users'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; const testData = { user: null, @@ -40,7 +41,7 @@ describe('Organizations: Add new contact and assign to an organization record', 'C725 Add new contact and assign to an organization record (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C725'] }, () => { - Organizations.searchByParameters('Name', testData.organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', testData.organization.name); Organizations.selectOrganization(testData.organization.name); Organizations.editOrganization(); Organizations.addNewContact(testData.contact); diff --git a/cypress/e2e/organizations/add-kosovo-country.cy.js b/cypress/e2e/organizations/add-kosovo-country.cy.js index 96f99a7e19..25dd1ffd5e 100644 --- a/cypress/e2e/organizations/add-kosovo-country.cy.js +++ b/cypress/e2e/organizations/add-kosovo-country.cy.js @@ -3,6 +3,7 @@ import NewOrganization from '../../support/fragments/organizations/newOrganizati import getRandomPostfix from '../../support/utils/stringTools'; import permissions from '../../support/dictionary/permissions'; import TopMenu from '../../support/fragments/topMenu'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { const organization1 = { @@ -55,7 +56,7 @@ describe('Organizations', () => { }); }); Organizations.deleteOrganizationViaApi(organization2.id); - Organizations.searchByParameters('Name', organization1.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization1.name); Organizations.selectOrganization(organization1.name); Organizations.deleteOrganization(organization1.name); }); @@ -70,13 +71,13 @@ describe('Organizations', () => { Organizations.clickAddAdressButton(); Organizations.addAdressToOrganization(adress, 0); Organizations.saveOrganization(); - Organizations.searchByParameters('Name', organization2.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization2.name); Organizations.selectOrganization(organization2.name); Organizations.editOrganization(); Organizations.addAdressToOrganization(adress, 0); Organizations.saveOrganization(); - Organizations.resetFilters(); - Organizations.selectCountryFilter('Kosovo'); + OrganizationsSearchAndFilter.resetFilters(); + OrganizationsSearchAndFilter.filterByCountry('Kosovo'); Organizations.checkSearchResults(organization1); Organizations.checkSearchResults(organization2); }, diff --git a/cypress/e2e/organizations/add-note-to-contact-people-list.cy.js b/cypress/e2e/organizations/add-note-to-contact-people-list.cy.js index 7c3de934c8..8292700e8d 100644 --- a/cypress/e2e/organizations/add-note-to-contact-people-list.cy.js +++ b/cypress/e2e/organizations/add-note-to-contact-people-list.cy.js @@ -1,6 +1,7 @@ import permissions from '../../support/dictionary/permissions'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; @@ -16,7 +17,7 @@ describe('Organizations', () => { organization.id = response; cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.addNewContact(contact); @@ -43,7 +44,7 @@ describe('Organizations', () => { 'C380642 Add a note to "Contact people" list in "Organization" app (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C380642'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.selectContact(contact); Organizations.clickEdit(); diff --git a/cypress/e2e/organizations/add-privileged-donor-information-in-not-a-vendor-organization-record.cy.js b/cypress/e2e/organizations/add-privileged-donor-information-in-not-a-vendor-organization-record.cy.js index e2f5e10e25..ea9f05c8b5 100644 --- a/cypress/e2e/organizations/add-privileged-donor-information-in-not-a-vendor-organization-record.cy.js +++ b/cypress/e2e/organizations/add-privileged-donor-information-in-not-a-vendor-organization-record.cy.js @@ -5,6 +5,7 @@ import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { const organization = { @@ -28,7 +29,7 @@ describe('Organizations', () => { organization.id = response; }); cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.addNewDonorContact(firstContact); @@ -60,7 +61,7 @@ describe('Organizations', () => { { tags: ['criticalPath', 'thunderjet', 'C423690'] }, () => { TopMenuNavigation.navigateToApp('Organizations'); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.addNewDonorContact(secondContact); diff --git a/cypress/e2e/organizations/add-tags-to-organization.cy.js b/cypress/e2e/organizations/add-tags-to-organization.cy.js index b7e75a7fed..bac179b36a 100644 --- a/cypress/e2e/organizations/add-tags-to-organization.cy.js +++ b/cypress/e2e/organizations/add-tags-to-organization.cy.js @@ -4,6 +4,7 @@ import permissions from '../../support/dictionary/permissions'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { let user; @@ -31,9 +32,9 @@ describe('Organizations', () => { after('Delete test data', () => { cy.getAdminToken(); - Organizations.getTagByLabel(tag.name).then((tags) => { + Organizations.getTagByLabelViaApi(tag.name).then((tags) => { if (tags) tag.id = tags.id; - Organizations.deleteTagById(tag.id, { failOnStatusCode: false }); + Organizations.deleteTagByIdViaApi(tag.id, { failOnStatusCode: false }); }); Organizations.deleteOrganizationViaApi(organization.id); Users.deleteViaApi(user.userId); @@ -43,7 +44,7 @@ describe('Organizations', () => { 'C6710 Add tags to an Organization record (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C6710'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.verifyTagsCount(0); Organizations.organizationTagDetails(); diff --git a/cypress/e2e/organizations/all-fields-and-cancel-option-while-adding-banking-info-record.cy.js b/cypress/e2e/organizations/all-fields-and-cancel-option-while-adding-banking-info-record.cy.js index cf6262dada..2de657bcf9 100644 --- a/cypress/e2e/organizations/all-fields-and-cancel-option-while-adding-banking-info-record.cy.js +++ b/cypress/e2e/organizations/all-fields-and-cancel-option-while-adding-banking-info-record.cy.js @@ -2,6 +2,7 @@ import uuid from 'uuid'; import { APPLICATION_NAMES } from '../../support/constants'; import Permissions from '../../support/dictionary/permissions'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import SettingsOrganizations from '../../support/fragments/settings/organizations/settingsOrganizations'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import Users from '../../support/fragments/users/users'; @@ -83,7 +84,7 @@ describe('Organizations', () => { 'C423519 Verifying all fields and "Cancel" option while adding "Banking information" record (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C423519'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.verifyBankingInformationAccordionIsPresent(); Organizations.editOrganization(); diff --git a/cypress/e2e/organizations/assign-categories-to-contact.cy.js b/cypress/e2e/organizations/assign-categories-to-contact.cy.js index 72d4cb1203..e9a03057f0 100644 --- a/cypress/e2e/organizations/assign-categories-to-contact.cy.js +++ b/cypress/e2e/organizations/assign-categories-to-contact.cy.js @@ -6,6 +6,7 @@ import SettingsOrganizations from '../../support/fragments/settings/organization import permissions from '../../support/dictionary/permissions'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { const category1 = { ...SettingsOrganizations.defaultCategories }; @@ -47,7 +48,7 @@ describe('Organizations', () => { 'C732 Assign categories to contact person (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C732'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.openContactPeopleSectionInEditCard(); diff --git a/cypress/e2e/organizations/assign-existing-contact.cy.js b/cypress/e2e/organizations/assign-existing-contact.cy.js index 13efdb53cb..48a0ef7922 100644 --- a/cypress/e2e/organizations/assign-existing-contact.cy.js +++ b/cypress/e2e/organizations/assign-existing-contact.cy.js @@ -1,6 +1,6 @@ -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; -import permissions from '../../support/dictionary/permissions'; +import Permissions from '../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; @@ -19,7 +19,7 @@ describe('Organizations', () => { Organizations.createContactViaApi(contact).then((contactId) => { contact.id = contactId; }); - cy.createTempUser([permissions.uiOrganizationsViewEdit.gui]).then((userProperties) => { + cy.createTempUser([Permissions.uiOrganizationsViewEdit.gui]).then((userProperties) => { user = userProperties; cy.login(user.username, user.password, { path: TopMenu.organizationsPath, @@ -38,7 +38,7 @@ describe('Organizations', () => { 'C676 Assign existing contact to an organization record (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C676'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.addContactToOrganization(contact); diff --git a/cypress/e2e/organizations/check-organizations-table-content.cy.js b/cypress/e2e/organizations/check-organizations-table-content.cy.js index a2df90d61c..ace6dfcc47 100644 --- a/cypress/e2e/organizations/check-organizations-table-content.cy.js +++ b/cypress/e2e/organizations/check-organizations-table-content.cy.js @@ -1,5 +1,6 @@ import { Permissions } from '../../support/dictionary'; import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; @@ -43,11 +44,11 @@ describe('Organizations', () => { { tags: ['extendedPath', 'thunderjet', 'C369086'] }, () => { // Check "Active" checkbox in "Organizations status" accordion on "Search & filter" pane - Organizations.selectActiveStatus(); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Active'); testData.organizations.forEach((organization) => { // Search for organizations from Preconditions - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); // Click on the hyperlink in "Name" column diff --git a/cypress/e2e/organizations/correct-page-title.cy.js b/cypress/e2e/organizations/correct-page-title.cy.js index 5c14325743..708ee9c34a 100644 --- a/cypress/e2e/organizations/correct-page-title.cy.js +++ b/cypress/e2e/organizations/correct-page-title.cy.js @@ -1,8 +1,8 @@ -import permissions from '../../support/dictionary/permissions'; -import Organizations from '../../support/fragments/organizations/organizations'; +import Permissions from '../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; -import newOrganization from '../../support/fragments/organizations/newOrganization'; import getRandomPostfix from '../../support/utils/stringTools'; describe('Organizations', () => { @@ -10,12 +10,12 @@ describe('Organizations', () => { const resetFiltersMessage = 'Choose a filter or enter a search query to show results.'; const organizations = [ { - ...newOrganization.defaultUiOrganizations, + ...NewOrganization.defaultUiOrganizations, name: `Test Organization 1 ${Date.now()}`, code: `${getRandomPostfix()}_1`, }, { - ...newOrganization.defaultUiOrganizations, + ...NewOrganization.defaultUiOrganizations, name: `Test Organization 2 ${Date.now()}`, code: `${getRandomPostfix()}_2`, }, @@ -28,7 +28,7 @@ describe('Organizations', () => { org.id = orgId; }); }); - cy.createTempUser([permissions.uiOrganizationsView.gui]).then((userProperties) => { + cy.createTempUser([Permissions.uiOrganizationsView.gui]).then((userProperties) => { user = userProperties; cy.login(user.username, user.password, { path: TopMenu.organizationsPath, @@ -50,17 +50,17 @@ describe('Organizations', () => { { tags: ['extendedPath', 'thunderjet', 'C451606'] }, () => { Organizations.verifyNoResultMessage(resetFiltersMessage); - Organizations.searchByParameters('Name', organizations[0].name); + OrganizationsSearchAndFilter.searchByParameters('Name', organizations[0].name); Organizations.selectOrganization(organizations[0].name); Organizations.closeDetailsPane(); Organizations.resetFilters(); Organizations.verifyNoResultMessage(resetFiltersMessage); - Organizations.selectActiveStatus(); - Organizations.searchByParameters('Name', organizations[0].name); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Active'); + OrganizationsSearchAndFilter.searchByParameters('Name', organizations[0].name); Organizations.checkSearchResults(organizations[0]); Organizations.selectOrganization(organizations[0].name); Organizations.checkOrganizationInfo(organizations[0]); - Organizations.searchByParameters('Name', organizations[1].name); + OrganizationsSearchAndFilter.searchByParameters('Name', organizations[1].name); Organizations.checkSearchResults(organizations[1]); Organizations.selectOrganization(organizations[1].name); Organizations.checkOrganizationInfo(organizations[1]); diff --git a/cypress/e2e/organizations/create-a-donor-organization.cy.js b/cypress/e2e/organizations/create-a-donor-organization.cy.js index fedcef0cbc..97a75a4f0f 100644 --- a/cypress/e2e/organizations/create-a-donor-organization.cy.js +++ b/cypress/e2e/organizations/create-a-donor-organization.cy.js @@ -1,5 +1,6 @@ -import permissions from '../../support/dictionary/permissions'; +import Permissions from '../../support/dictionary/permissions'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; @@ -16,7 +17,7 @@ describe('Organizations', () => { before(() => { cy.getAdminToken(); - cy.createTempUser([permissions.uiOrganizationsViewEditCreate.gui]).then((userProperties) => { + cy.createTempUser([Permissions.uiOrganizationsViewEditCreate.gui]).then((userProperties) => { user = userProperties; cy.login(user.username, user.password, { path: TopMenu.organizationsPath, @@ -41,14 +42,13 @@ describe('Organizations', () => { () => { Organizations.createDonorOrganization(organization); Organizations.closeDetailsPane(); - Organizations.selectIsDonorFilter('Yes'); + OrganizationsSearchAndFilter.filterByIsDonor('Yes'); Organizations.selectOrganization(organization.name); Organizations.checkOrganizationInfo(organization); Organizations.closeDetailsPane(); - Organizations.resetFilters(); - Organizations.selectIsDonorFilter('No'); + OrganizationsSearchAndFilter.filterByIsDonor('No'); Organizations.organizationIsAbsent(organization.name); - Organizations.resetFilters(); + OrganizationsSearchAndFilter.resetFiltersIfActive(); }, ); }); diff --git a/cypress/e2e/organizations/create-and-add-privileged-donor-information.cy.js b/cypress/e2e/organizations/create-and-add-privileged-donor-information.cy.js index 50d29b3eec..967a494579 100644 --- a/cypress/e2e/organizations/create-and-add-privileged-donor-information.cy.js +++ b/cypress/e2e/organizations/create-and-add-privileged-donor-information.cy.js @@ -1,6 +1,6 @@ import Permissions from '../../support/dictionary/permissions'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; @@ -24,11 +24,13 @@ describe('Organizations', () => { Organizations.createOrganizationViaApi(organization).then((orgId) => { organization.id = orgId; }); + cy.createTempUser([ Permissions.uiOrganizationsViewEdit.gui, Permissions.uiOrganizationsViewEditCreateDeletePrivilegedDonorInformation.gui, ]).then((userProperties) => { user = userProperties; + cy.login(user.username, user.password, { path: TopMenu.organizationsPath, waiter: Organizations.waitLoading, @@ -54,7 +56,7 @@ describe('Organizations', () => { 'C423618 Create and add privileged donor information in Organization (vendor) record (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C423618'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.selectDonorCheckbox(); diff --git a/cypress/e2e/organizations/create-edit-autosuggested-fields.cy.js b/cypress/e2e/organizations/create-edit-autosuggested-fields.cy.js index 5bd34519b4..251fad5bfa 100644 --- a/cypress/e2e/organizations/create-edit-autosuggested-fields.cy.js +++ b/cypress/e2e/organizations/create-edit-autosuggested-fields.cy.js @@ -1,18 +1,17 @@ -import permissions from '../../support/dictionary/permissions'; -import Organizations from '../../support/fragments/organizations/organizations'; +import Permissions from '../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; -import newOrganization from '../../support/fragments/organizations/newOrganization'; describe('Organizations', () => { let user; - const organization = { ...newOrganization.defaultUiOrganizations }; + const organization = { ...NewOrganization.defaultUiOrganizations }; before('Create user and organization', () => { cy.getAdminToken(); cy.createTempUser([ - permissions.uiOrganizationsViewEdit.gui, - permissions.uiOrganizationsViewEditCreate.gui, + Permissions.uiOrganizationsViewEdit.gui, + Permissions.uiOrganizationsViewEditCreate.gui, ]).then((userProperties) => { user = userProperties; cy.login(user.username, user.password, { @@ -24,14 +23,10 @@ describe('Organizations', () => { }); after('Delete test data', () => { - cy.loginAsAdmin({ - path: TopMenu.organizationsPath, - waiter: Organizations.waitLoading, - authRefresh: true, + cy.getAdminToken(); + Organizations.getOrganizationViaApi({ name: organization.name }).then((response) => { + Organizations.deleteOrganizationViaApi(response.id); }); - Organizations.searchByParameters('Name', organization.name); - Organizations.selectOrganizationInCurrentPage(organization.name); - Organizations.deleteOrganization(); Users.deleteViaApi(user.userId); }); @@ -51,7 +46,7 @@ describe('Organizations', () => { Organizations.clickAddAdressButton(); Organizations.addAdressToOrganization({ addressLine1: 'Test Address 4' }, 3); Organizations.saveOrganization(); - Organizations.varifySaveOrganizationCalloutMessage(organization); + Organizations.verifySaveCalloutMessage(organization); Organizations.editOrganization(); Organizations.openContactInformationSection(); Organizations.addAdressToOrganization({ addressLine1: 'Test Address Edited' }, 0); @@ -62,7 +57,7 @@ describe('Organizations', () => { Organizations.clickAddPhoneNumberButton(); Organizations.addPhoneNumberToOrganization({ phoneNum: '123456' }, 1); Organizations.saveOrganization(); - Organizations.varifySaveOrganizationCalloutMessage(organization); + Organizations.verifySaveCalloutMessage(organization); }, ); }); diff --git a/cypress/e2e/organizations/create-organization.cy.js b/cypress/e2e/organizations/create-organization.cy.js index 562ef801ab..b6a4a18ab2 100644 --- a/cypress/e2e/organizations/create-organization.cy.js +++ b/cypress/e2e/organizations/create-organization.cy.js @@ -29,7 +29,7 @@ describe( 'C675 Create new organization record (thunderjet)', { tags: ['smoke', 'thunderjet', 'C675', 'shiftLeft'] }, () => { - Organizations.createOrganizationViaUi(organization); + Organizations.createOrganization(organization); Organizations.checkOrganizationInfo(organization); }, ); diff --git a/cypress/e2e/organizations/delete-contact-person.cy.js b/cypress/e2e/organizations/delete-contact-person.cy.js index 2e6f0ffe57..c47617cbcb 100644 --- a/cypress/e2e/organizations/delete-contact-person.cy.js +++ b/cypress/e2e/organizations/delete-contact-person.cy.js @@ -3,6 +3,7 @@ import Organizations from '../../support/fragments/organizations/organizations'; import Permissions from '../../support/dictionary/permissions'; import Users from '../../support/fragments/users/users'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { const organization = { @@ -36,19 +37,15 @@ describe('Organizations', () => { Users.deleteViaApi(user.userId); }); - it( - 'C729 Delete a contact person (thunderjet)', - { tags: ['extendedPath', 'thunderjet', 'C729'] }, - () => { - Organizations.searchByParameters('Name', organization.name); - Organizations.selectOrganization(organization.name); - Organizations.editOrganization(); - Organizations.openContactPeopleSectionInEditCard(); - Organizations.deleteContactFromContactPeople(); - Organizations.saveOrganization(); - Organizations.varifySaveOrganizationCalloutMessage(organization); - Organizations.openContactPeopleSection(); - Organizations.checkContactSectionIsEmpty(); - }, - ); + it('C729 Delete a contact person (thunderjet)', { tags: ['extendedPath', 'thunderjet'] }, () => { + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); + Organizations.selectOrganization(organization.name); + Organizations.editOrganization(); + Organizations.openContactPeopleSectionInEditCard(); + Organizations.deleteContactFromContactPeople(); + Organizations.saveOrganization(); + Organizations.verifySaveCalloutMessage(organization); + Organizations.openContactPeopleSection(); + Organizations.checkContactSectionIsEmpty(); + }); }); diff --git a/cypress/e2e/organizations/delete-existing-organization-record.cy.js b/cypress/e2e/organizations/delete-existing-organization-record.cy.js index 5bee57b6d3..b873129aa1 100644 --- a/cypress/e2e/organizations/delete-existing-organization-record.cy.js +++ b/cypress/e2e/organizations/delete-existing-organization-record.cy.js @@ -8,6 +8,7 @@ import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import ConfirmDeleteOrganizationModal from '../../support/fragments/organizations/modals/confirmDeleteOrganizationModal'; import InteractorsTools from '../../support/utils/interactorsTools'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { const organization = { ...NewOrganization.defaultUiOrganizations }; @@ -37,7 +38,7 @@ describe('Organizations', () => { { tags: ['extendedPath', 'thunderjet', 'C674'] }, () => { // Step 1: Open organization from "Preconditions" details pane - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); // Step 2: Click "Actions" button on organization from "Preconditions" details pane and select "Delete" option @@ -60,7 +61,7 @@ describe('Organizations', () => { `The organization ${organization.name} was successfully deleted`, ); OrganizationDetails.organizationDetailsSectionIsAbsent(); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkZeroSearchResultsHeader(); }, ); diff --git a/cypress/e2e/organizations/delete-org-with-at-least-one-existing-banking-info.cy.js b/cypress/e2e/organizations/delete-org-with-at-least-one-existing-banking-info.cy.js index 94bb38e69f..5c6574bf0a 100644 --- a/cypress/e2e/organizations/delete-org-with-at-least-one-existing-banking-info.cy.js +++ b/cypress/e2e/organizations/delete-org-with-at-least-one-existing-banking-info.cy.js @@ -1,8 +1,8 @@ import { APPLICATION_NAMES } from '../../support/constants'; import Permissions from '../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; import ConfirmDeleteOrganizationModal from '../../support/fragments/organizations/modals/confirmDeleteOrganizationModal'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import Users from '../../support/fragments/users/users'; import InteractorsTools from '../../support/utils/interactorsTools'; @@ -47,7 +47,7 @@ describe('Organizations', () => { 'C613152 Delete organization with at least one existing Banking information (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C613152'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.verifyBankingInformationAccordionIsPresent(); Organizations.checkBankInformationExist(bankingInformation.bankName); diff --git a/cypress/e2e/organizations/deleting-banking-info-records-from-org-with-org-view-edit-create-and-delete-banking-info.cy.js b/cypress/e2e/organizations/deleting-banking-info-records-from-org-with-org-view-edit-create-and-delete-banking-info.cy.js index 66b742fa79..6066e394db 100644 --- a/cypress/e2e/organizations/deleting-banking-info-records-from-org-with-org-view-edit-create-and-delete-banking-info.cy.js +++ b/cypress/e2e/organizations/deleting-banking-info-records-from-org-with-org-view-edit-create-and-delete-banking-info.cy.js @@ -1,7 +1,7 @@ import { APPLICATION_NAMES } from '../../support/constants'; import Permissions from '../../support/dictionary/permissions'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; @@ -50,7 +50,7 @@ describe('Organizations', () => { 'C423514 Deleting Banking information records from an Organization with "Organizations: View, edit, create and delete banking information" (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C423514'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.checkBankInformationExist(firstBankingInformation.bankName); diff --git a/cypress/e2e/organizations/edit-contact-of-organization.cy.js b/cypress/e2e/organizations/edit-contact-of-organization.cy.js index 7446bcfdb5..16b2a06614 100644 --- a/cypress/e2e/organizations/edit-contact-of-organization.cy.js +++ b/cypress/e2e/organizations/edit-contact-of-organization.cy.js @@ -1,6 +1,7 @@ import permissions from '../../support/dictionary/permissions'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; @@ -33,7 +34,7 @@ describe('Organizations', () => { 'C726 Edit contact from an organization record (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C726'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.addNewContact(contact); diff --git a/cypress/e2e/organizations/edit-note-in-contact-people-list.cy.js b/cypress/e2e/organizations/edit-note-in-contact-people-list.cy.js index 86bfb2b0b9..31db4ccd75 100644 --- a/cypress/e2e/organizations/edit-note-in-contact-people-list.cy.js +++ b/cypress/e2e/organizations/edit-note-in-contact-people-list.cy.js @@ -1,6 +1,7 @@ import permissions from '../../support/dictionary/permissions'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; @@ -38,7 +39,7 @@ describe('Organizations', () => { 'C380639 Edit note (enter more than 30 characters) in "Contact people" list in "Organization" app (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C380639'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.openContactPeopleSectionInEditCard(); diff --git a/cypress/e2e/organizations/edit-organization.cy.js b/cypress/e2e/organizations/edit-organization.cy.js index ad47a9884a..fede8d17b2 100644 --- a/cypress/e2e/organizations/edit-organization.cy.js +++ b/cypress/e2e/organizations/edit-organization.cy.js @@ -1,6 +1,7 @@ import permissions from '../../support/dictionary/permissions'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; @@ -32,10 +33,11 @@ describe('Organizations', () => { 'C673 Edit existing organization record (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C673'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.editOrganizationName(organization); + organization.name = `${organization.name}-edited`; Organizations.checkOrganizationInfo(organization); }, diff --git a/cypress/e2e/organizations/error-message-related-to-banking-info-does-not-appear-when-user-without-banking-permissions-edits-org.cy.js b/cypress/e2e/organizations/error-message-related-to-banking-info-does-not-appear-when-user-without-banking-permissions-edits-org.cy.js index 44720e78c0..8bec1d7d13 100644 --- a/cypress/e2e/organizations/error-message-related-to-banking-info-does-not-appear-when-user-without-banking-permissions-edits-org.cy.js +++ b/cypress/e2e/organizations/error-message-related-to-banking-info-does-not-appear-when-user-without-banking-permissions-edits-org.cy.js @@ -1,7 +1,7 @@ import { APPLICATION_NAMES } from '../../support/constants'; import Permissions from '../../support/dictionary/permissions'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; @@ -42,7 +42,7 @@ describe('Organizations', () => { 'C434070 Error message related to Banking information does not appear when user without Banking permissions edits Organization details (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C434070'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.verifyBankingInformationAccordionIsAbsent(); Organizations.editOrganization(); diff --git a/cypress/e2e/organizations/filter-by-created-by.cy.js b/cypress/e2e/organizations/filter-by-created-by.cy.js index a75db6699a..0e6df5a75f 100644 --- a/cypress/e2e/organizations/filter-by-created-by.cy.js +++ b/cypress/e2e/organizations/filter-by-created-by.cy.js @@ -1,8 +1,8 @@ import { Permissions } from '../../support/dictionary'; import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; -import newOrganization from '../../support/fragments/organizations/newOrganization'; import getRandomPostfix from '../../support/utils/stringTools'; describe('Organizations', () => { @@ -10,13 +10,13 @@ describe('Organizations', () => { users: [], organizations: { org1: { - ...newOrganization.defaultUiOrganizations, + ...NewOrganization.defaultUiOrganizations, name: `autotest_name_${getRandomPostfix()}_1`, code: `${getRandomPostfix()}_1`, erpCode: `ERP-${getRandomPostfix()}_1`, }, org2: { - ...newOrganization.defaultUiOrganizations, + ...NewOrganization.defaultUiOrganizations, name: `autotest_name_${getRandomPostfix()}_2`, code: `${getRandomPostfix()}_2`, erpCode: `ERP-${getRandomPostfix()}_2`, @@ -38,7 +38,6 @@ describe('Organizations', () => { NewOrganization.createViaApi(testData.organizations.org1).then((responseOrganization) => { testData.organizations.org1.id = responseOrganization.id; }); - cy.logout(); cy.login(user2.username, user2.password, { path: TopMenu.organizationsPath, @@ -65,11 +64,11 @@ describe('Organizations', () => { { tags: ['criticalPath', 'thunderjet', 'C466127'] }, () => { Organizations.resetFiltersIfActive(); - Organizations.selectCreatedByFiler(testData.users[0].username); + OrganizationsSearchAndFilter.filterByCreator(testData.users[0].username); Organizations.selectOrganization(testData.organizations.org1.name); Organizations.checkOrganizationInfo(testData.organizations.org1); Organizations.resetFilters(); - Organizations.selectCreatedByFiler(testData.users[1].username); + OrganizationsSearchAndFilter.filterByCreator(testData.users[1].username); Organizations.selectOrganization(testData.organizations.org2.name); Organizations.checkOrganizationInfo(testData.organizations.org2); }, diff --git a/cypress/e2e/organizations/filter-by-date-updated.cy.js b/cypress/e2e/organizations/filter-by-date-updated.cy.js index 4f856045cc..661abac653 100644 --- a/cypress/e2e/organizations/filter-by-date-updated.cy.js +++ b/cypress/e2e/organizations/filter-by-date-updated.cy.js @@ -4,6 +4,7 @@ import NewOrganization from '../../support/fragments/organizations/newOrganizati import Permissions from '../../support/dictionary/permissions'; import Users from '../../support/fragments/users/users'; import DateTools from '../../support/utils/dateTools'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; const testData = { user: null, @@ -18,16 +19,15 @@ const yesterday = DateTools.getFormattedDate({ date: d }, 'MM/DD/YYYY'); describe('Organizations', () => { before('Create user and organization', () => { - cy.createTempUser([Permissions.uiOrganizationsView.gui]).then((user) => { - testData.user = user; - NewOrganization.createViaApi(testData.organization).then((responseOrganization) => { - testData.organization.id = responseOrganization.id; - }); + cy.getAdminToken(); + NewOrganization.createViaApi(testData.organization).then((responseOrganization) => { + testData.organization.id = responseOrganization.id; + cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading, }); - Organizations.searchByParameters('Name', testData.organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', testData.organization.name); Organizations.checkSearchResults(testData.organization); Organizations.selectOrganization(testData.organization.name); Organizations.editOrganization(); @@ -37,6 +37,10 @@ describe('Organizations', () => { name: `${testData.organization.name}-edited`, code: testData.organization.code, }); + }); + + cy.createTempUser([Permissions.uiOrganizationsView.gui]).then((user) => { + testData.user = user; cy.login(user.username, user.password, { path: TopMenu.organizationsPath, @@ -55,16 +59,16 @@ describe('Organizations', () => { 'C466131 Organizations can be found by "Date updated" filter (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C466131'] }, () => { - Organizations.filterByDateUpdated(today, today); - Organizations.searchByParameters('Name', testData.organization.name); + OrganizationsSearchAndFilter.filterByDateUpdated(today, today); + OrganizationsSearchAndFilter.searchByParameters('Name', testData.organization.name); Organizations.checkSearchResults({ name: `${testData.organization.name}-edited` }); - Organizations.resetFilters(); - Organizations.filterByDateUpdated('01/01/2000', '12/31/2000'); + OrganizationsSearchAndFilter.resetFilters(); + OrganizationsSearchAndFilter.filterByDateUpdated('01/01/2000', '12/31/2000'); Organizations.checkZeroSearchResultsHeader(); - Organizations.filterByDateUpdated(today, yesterday); + OrganizationsSearchAndFilter.filterByDateUpdated(today, yesterday); Organizations.checkInvalidDateRangeMessage(); - Organizations.filterByDateUpdated(yesterday, today); - Organizations.searchByParameters('Name', testData.organization.name); + OrganizationsSearchAndFilter.filterByDateUpdated(yesterday, today); + OrganizationsSearchAndFilter.searchByParameters('Name', testData.organization.name); Organizations.checkSearchResults({ name: `${testData.organization.name}-edited` }); }, ); diff --git a/cypress/e2e/organizations/filter-by-updated-by.cy.js b/cypress/e2e/organizations/filter-by-updated-by.cy.js index a81421acd0..ef01d20f78 100644 --- a/cypress/e2e/organizations/filter-by-updated-by.cy.js +++ b/cypress/e2e/organizations/filter-by-updated-by.cy.js @@ -1,6 +1,6 @@ import Permissions from '../../support/dictionary/permissions'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; @@ -25,63 +25,60 @@ const testData = { describe('Organizations', () => { before('Create users and organizations', () => { - cy.getAdminToken() - .then(() => { - cy.createTempUser([Permissions.uiOrganizationsViewEdit.gui]).then((user1) => { - testData.users[0] = user1; - }); - cy.createTempUser([Permissions.uiOrganizationsViewEdit.gui]).then((user2) => { - testData.users[1] = user2; - }); - NewOrganization.createViaApi(testData.organizations.org1).then((responseOrganization) => { - testData.organizations.org1.id = responseOrganization.id; - }); - NewOrganization.createViaApi(testData.organizations.org2).then((responseOrganization) => { - testData.organizations.org2.id = responseOrganization.id; - }); - }) - .then(() => { - cy.login(testData.users[1].username, testData.users[1].password, { - path: TopMenu.organizationsPath, - waiter: Organizations.waitLoading, - }); - Organizations.searchByParameters('Name', testData.organizations.org1.name); - Organizations.checkSearchResults(testData.organizations.org1); - Organizations.selectOrganization(testData.organizations.org1.name); - Organizations.editOrganization(); - Organizations.editOrganizationName(testData.organizations.org1); - Organizations.saveOrganization(); - Organizations.checkOrganizationInfo({ - name: `${testData.organizations.org1.name}-edited`, - code: testData.organizations.org1.code, - }); + cy.getAdminToken(); + cy.createTempUser([Permissions.uiOrganizationsViewEdit.gui]).then((user1) => { + testData.users[0] = user1; + }); + cy.createTempUser([Permissions.uiOrganizationsViewEdit.gui]).then((user2) => { + testData.users[1] = user2; + }); + NewOrganization.createViaApi(testData.organizations.org1).then((responseOrganization) => { + testData.organizations.org1.id = responseOrganization.id; + }); + NewOrganization.createViaApi(testData.organizations.org2).then((responseOrganization) => { + testData.organizations.org2.id = responseOrganization.id; + }); - Organizations.searchByParameters('Name', testData.organizations.org2.name); - Organizations.checkSearchResults(testData.organizations.org2); - Organizations.selectOrganizationInCurrentPage(testData.organizations.org2.name); - Organizations.editOrganization(); - Organizations.editOrganizationName(testData.organizations.org2); - Organizations.saveOrganization(); - Organizations.checkOrganizationInfo({ - name: `${testData.organizations.org2.name}-edited`, - code: testData.organizations.org2.code, - }); + cy.login(testData.users[1].username, testData.users[1].password, { + path: TopMenu.organizationsPath, + waiter: Organizations.waitLoading, + }); + OrganizationsSearchAndFilter.searchByParameters('Name', testData.organizations.org1.name); + Organizations.checkSearchResults(testData.organizations.org1); + Organizations.selectOrganization(testData.organizations.org1.name); + Organizations.editOrganization(); + Organizations.editOrganizationName(testData.organizations.org1); + Organizations.saveOrganization(); + Organizations.checkOrganizationInfo({ + name: `${testData.organizations.org1.name}-edited`, + code: testData.organizations.org1.code, + }); - cy.login(testData.users[0].username, testData.users[0].password, { - path: TopMenu.organizationsPath, - waiter: Organizations.waitLoading, - }); - Organizations.searchByParameters('Name', testData.organizations.org1.name); - Organizations.checkSearchResults({ name: `${testData.organizations.org1.name}-edited` }); - Organizations.selectOrganizationInCurrentPage(`${testData.organizations.org1.name}-edited`); - Organizations.editOrganization(); - Organizations.editOrganizationName({ name: `${testData.organizations.org1.name}-twice` }); - Organizations.saveOrganization(); - Organizations.checkOrganizationInfo({ - name: `${testData.organizations.org1.name}-twice-edited`, - code: testData.organizations.org1.code, - }); - }); + OrganizationsSearchAndFilter.searchByParameters('Name', testData.organizations.org2.name); + Organizations.checkSearchResults(testData.organizations.org2); + Organizations.selectOrganizationInCurrentPage(testData.organizations.org2.name); + Organizations.editOrganization(); + Organizations.editOrganizationName(testData.organizations.org2); + Organizations.saveOrganization(); + Organizations.checkOrganizationInfo({ + name: `${testData.organizations.org2.name}-edited`, + code: testData.organizations.org2.code, + }); + + cy.login(testData.users[0].username, testData.users[0].password, { + path: TopMenu.organizationsPath, + waiter: Organizations.waitLoading, + }); + OrganizationsSearchAndFilter.searchByParameters('Name', testData.organizations.org1.name); + Organizations.checkSearchResults({ name: `${testData.organizations.org1.name}-edited` }); + Organizations.selectOrganizationInCurrentPage(`${testData.organizations.org1.name}-edited`); + Organizations.editOrganization(); + Organizations.editOrganizationName({ name: `${testData.organizations.org1.name}-twice` }); + Organizations.saveOrganization(); + Organizations.checkOrganizationInfo({ + name: `${testData.organizations.org1.name}-twice-edited`, + code: testData.organizations.org1.code, + }); }); after('Delete test data', () => { @@ -97,7 +94,7 @@ describe('Organizations', () => { { tags: ['criticalPath', 'thunderjet', 'C466128'] }, () => { Organizations.resetFilters(); - Organizations.selectUpdatedByFiler(testData.users[0].username); + OrganizationsSearchAndFilter.filterByUpdater(testData.users[0].username); Organizations.selectOrganizationInCurrentPage( `${testData.organizations.org1.name}-twice-edited`, ); @@ -106,14 +103,14 @@ describe('Organizations', () => { code: testData.organizations.org1.code, }); Organizations.resetFilters(); - Organizations.selectUpdatedByFiler(testData.users[1].username); + OrganizationsSearchAndFilter.filterByUpdater(testData.users[1].username); Organizations.selectOrganizationInCurrentPage(`${testData.organizations.org2.name}-edited`); Organizations.checkOrganizationInfo({ name: `${testData.organizations.org2.name}-edited`, code: testData.organizations.org2.code, }); Organizations.resetFilters(); - Organizations.selectUpdatedByFiler(testData.users[0].username); + OrganizationsSearchAndFilter.filterByUpdater(testData.users[0].username); Organizations.selectOrganizationInCurrentPage( `${testData.organizations.org1.name}-twice-edited`, ); diff --git a/cypress/e2e/organizations/filter-organization.cy.js b/cypress/e2e/organizations/filter-organization.cy.js index 755f4975b3..e08429eda2 100644 --- a/cypress/e2e/organizations/filter-organization.cy.js +++ b/cypress/e2e/organizations/filter-organization.cy.js @@ -1,7 +1,7 @@ -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; -import TopMenu from '../../support/fragments/topMenu'; import { Permissions } from '../../support/dictionary'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; +import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; describe('Organizations', () => { @@ -32,19 +32,19 @@ describe('Organizations', () => { Users.deleteViaApi(user.id); Organizations.deleteOrganizationViaApi(organization.id); }); + [ - { filterActions: Organizations.selectPendingStatus }, - { filterActions: Organizations.selectNoInIsVendor }, - { filterActions: () => Organizations.selectCountryFilter('United States') }, - { filterActions: Organizations.selectLanguageFilter }, - { filterActions: Organizations.selectCashInPaymentMethod }, + { filterActions: () => OrganizationsSearchAndFilter.filterByStatus('Pending') }, + { filterActions: () => OrganizationsSearchAndFilter.filterByCountry('United States') }, + { filterActions: () => OrganizationsSearchAndFilter.filterByLanguage('English') }, + { filterActions: () => OrganizationsSearchAndFilter.filterByPaymentMethod('Cash') }, ].forEach((filter) => { it( 'C6713 Test the Organizations app filters (except Tags) (thunderjet)', { tags: ['smoke', 'thunderjet', 'C6713'] }, () => { filter.filterActions(); - Organizations.checkOrganizationFilter(); + OrganizationsSearchAndFilter.checkSearchAndFilterPaneExists(); Organizations.selectOrganization(organization.name); Organizations.checkOrganizationInfo(organization); Organizations.closeDetailsPane(); diff --git a/cypress/e2e/organizations/filter-organizations-by-status.cy.js b/cypress/e2e/organizations/filter-organizations-by-status.cy.js index 52d03156ec..3619fef6f0 100644 --- a/cypress/e2e/organizations/filter-organizations-by-status.cy.js +++ b/cypress/e2e/organizations/filter-organizations-by-status.cy.js @@ -1,9 +1,9 @@ -import TopMenu from '../../support/fragments/topMenu'; -import Organizations from '../../support/fragments/organizations/organizations'; import Permissions from '../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; +import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; describe('Organizations', () => { const orgA = { @@ -59,46 +59,46 @@ describe('Organizations', () => { { tags: ['extendedPath', 'thunderjet', 'C728'] }, () => { // Step 1: Expand "Organizations status" accordion - Organizations.selectActiveStatus(); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Active'); Organizations.organizationIsAbsent(orgB.name); Organizations.organizationIsAbsent(orgC.name); - Organizations.searchByParameters('Name', orgA.name); + OrganizationsSearchAndFilter.searchByParameters('Name', orgA.name); Organizations.checkSearchResults(orgA); // Step 3: Filter by "Inactive" status Organizations.resetFilters(); - Organizations.selectInactiveStatus(); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Inactive'); Organizations.checkSearchResults(orgB); Organizations.organizationIsAbsent(orgA.name); Organizations.organizationIsAbsent(orgC.name); // Step 4: Filter by "Pending" status Organizations.resetFilters(); - Organizations.selectPendingStatus(); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Pending'); Organizations.checkSearchResults(orgC); Organizations.organizationIsAbsent(orgA.name); Organizations.organizationIsAbsent(orgB.name); // Step 5: Filter by "Active" and "Pending" statuses - Organizations.selectActiveStatus(); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Active'); Organizations.organizationIsAbsent(orgB.name); - Organizations.searchByParameters('Name', orgC.name); + OrganizationsSearchAndFilter.searchByParameters('Name', orgC.name); Organizations.checkSearchResults(orgC); - Organizations.searchByParameters('Name', orgA.name); + OrganizationsSearchAndFilter.searchByParameters('Name', orgA.name); Organizations.checkSearchResults(orgA); // Step 6: Filter by all statuses - Organizations.selectInactiveStatus(); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Inactive'); Organizations.checkSearchResults(orgA); - Organizations.searchByParameters('Name', orgB.name); + OrganizationsSearchAndFilter.searchByParameters('Name', orgB.name); Organizations.checkSearchResults(orgB); - Organizations.searchByParameters('Name', orgC.name); + OrganizationsSearchAndFilter.searchByParameters('Name', orgC.name); Organizations.checkSearchResults(orgC); // Step 7: Filter by "Inactive" and "Pending" statuses Organizations.resetFilters(); - Organizations.selectInactiveStatus(); - Organizations.selectPendingStatus(); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Inactive'); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Pending'); Organizations.checkSearchResults(orgB); Organizations.checkSearchResults(orgC); Organizations.organizationIsAbsent(orgA.name); diff --git a/cypress/e2e/organizations/filter-organizations-by-tags.cy.js b/cypress/e2e/organizations/filter-organizations-by-tags.cy.js index 0bfe533e65..8f0512aba9 100644 --- a/cypress/e2e/organizations/filter-organizations-by-tags.cy.js +++ b/cypress/e2e/organizations/filter-organizations-by-tags.cy.js @@ -60,8 +60,8 @@ describe('Organizations', () => { cy.getAdminToken(); Organizations.deleteOrganizationViaApi(organization1.id); Organizations.deleteOrganizationViaApi(organization2.id); - Organizations.deleteTagById(tag1.id, { failOnStatusCode: false }); - Organizations.deleteTagById(tag2.id, { failOnStatusCode: false }); + Organizations.deleteTagByIdViaApi(tag1.id, { failOnStatusCode: false }); + Organizations.deleteTagByIdViaApi(tag2.id, { failOnStatusCode: false }); Users.deleteViaApi(user.userId); }); diff --git a/cypress/e2e/organizations/integration-claiming.cy.js b/cypress/e2e/organizations/integration-claiming.cy.js index 54973dde28..7bcf309891 100644 --- a/cypress/e2e/organizations/integration-claiming.cy.js +++ b/cypress/e2e/organizations/integration-claiming.cy.js @@ -7,6 +7,7 @@ import InteractorsTools from '../../support/utils/interactorsTools'; import getRandomPostfix from '../../support/utils/stringTools'; import TopMenu from '../../support/fragments/topMenu'; import DateTools from '../../support/utils/dateTools'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { let user; @@ -95,7 +96,7 @@ describe('Organizations', () => { 'C688767 Create claiming integration, edit, duplicate and delete duplicated integration (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C688767'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.addIntegration(); diff --git a/cypress/e2e/organizations/integration-day-field-validation.cy.js b/cypress/e2e/organizations/integration-day-field-validation.cy.js index 59094fbcec..ec7e0d6d70 100644 --- a/cypress/e2e/organizations/integration-day-field-validation.cy.js +++ b/cypress/e2e/organizations/integration-day-field-validation.cy.js @@ -1,15 +1,15 @@ -import permissions from '../../support/dictionary/permissions'; -import Organizations from '../../support/fragments/organizations/organizations'; +import Permissions from '../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; -import newOrganization from '../../support/fragments/organizations/newOrganization'; -import getRandomPostfix from '../../support/utils/stringTools'; import DateTools from '../../support/utils/dateTools'; +import getRandomPostfix from '../../support/utils/stringTools'; describe('Organizations', () => { let user; const organization = { - ...newOrganization.defaultUiOrganizations, + ...NewOrganization.defaultUiOrganizations, accounts: [ { name: `autotest_name_${getRandomPostfix()}`, @@ -63,7 +63,7 @@ describe('Organizations', () => { Organizations.createOrganizationViaApi(organization).then((orgId) => { organization.id = orgId; }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.addIntegration(); Organizations.fillIntegrationInformationWithoutSchedulingWithDifferentInformation( @@ -71,7 +71,7 @@ describe('Organizations', () => { ); Organizations.saveOrganization(); cy.wait(4000); - cy.createTempUser([permissions.uiOrganizationsViewEdit.gui]).then((userProperties) => { + cy.createTempUser([Permissions.uiOrganizationsViewEdit.gui]).then((userProperties) => { user = userProperties; cy.login(user.username, user.password, { path: TopMenu.organizationsPath, @@ -90,7 +90,7 @@ describe('Organizations', () => { 'C434063 "Day" field on Integration edit page accepts only numbers less than "31" (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C434063'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.selectIntegration(informationForIntegration.integrationName); Organizations.editIntegration(); diff --git a/cypress/e2e/organizations/integration-organization.cy.js b/cypress/e2e/organizations/integration-organization.cy.js index 7ded38a577..b35f5c8f17 100644 --- a/cypress/e2e/organizations/integration-organization.cy.js +++ b/cypress/e2e/organizations/integration-organization.cy.js @@ -5,6 +5,7 @@ import Users from '../../support/fragments/users/users'; import InteractorsTools from '../../support/utils/interactorsTools'; import getRandomPostfix from '../../support/utils/stringTools'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { let userId; @@ -52,7 +53,7 @@ describe('Organizations', () => { 'C350758 Verify if a User can not set and edit EDI convention in Organization Integration (thunderjet)', { tags: ['smoke', 'thunderjet', 'C350758', 'shiftLeft'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); diff --git a/cypress/e2e/organizations/interface-details/add-existing-interface.cy.js b/cypress/e2e/organizations/interface-details/add-existing-interface.cy.js index e891b87c48..d0031887cb 100644 --- a/cypress/e2e/organizations/interface-details/add-existing-interface.cy.js +++ b/cypress/e2e/organizations/interface-details/add-existing-interface.cy.js @@ -1,6 +1,7 @@ import permissions from '../../../support/dictionary/permissions'; import NewOrganization from '../../../support/fragments/organizations/newOrganization'; import Organizations from '../../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../../support/fragments/topMenu'; import Users from '../../../support/fragments/users/users'; @@ -36,7 +37,7 @@ describe('Organizations --> Interface details', () => { 'C1322 Add an existing interface to an Organization record (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C1322'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.openInterfaceSection(); Organizations.checkInterfaceSectionIsEmpty(); diff --git a/cypress/e2e/organizations/interface-details/create-interface-to-organization.cy.js b/cypress/e2e/organizations/interface-details/create-interface-to-organization.cy.js index ae900fbdd2..21804a7cb6 100644 --- a/cypress/e2e/organizations/interface-details/create-interface-to-organization.cy.js +++ b/cypress/e2e/organizations/interface-details/create-interface-to-organization.cy.js @@ -1,6 +1,7 @@ import permissions from '../../../support/dictionary/permissions'; import NewOrganization from '../../../support/fragments/organizations/newOrganization'; import Organizations from '../../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../../support/fragments/topMenu'; import Users from '../../../support/fragments/users/users'; @@ -36,7 +37,7 @@ describe('Organizations --> Interface details', () => { 'C3467 Create an interface and Assign to an Organization record (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C3467'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.addNewInterface(defaultInterface); diff --git a/cypress/e2e/organizations/interface-details/delete-interface-details.cy.js b/cypress/e2e/organizations/interface-details/delete-interface-details.cy.js index 6f78c13199..20d27ca066 100644 --- a/cypress/e2e/organizations/interface-details/delete-interface-details.cy.js +++ b/cypress/e2e/organizations/interface-details/delete-interface-details.cy.js @@ -3,6 +3,7 @@ import Organizations from '../../../support/fragments/organizations/organization import permissions from '../../../support/dictionary/permissions'; import Users from '../../../support/fragments/users/users'; import NewOrganization from '../../../support/fragments/organizations/newOrganization'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations --> Interface details', () => { let user; @@ -40,7 +41,7 @@ describe('Organizations --> Interface details', () => { 'C1326 Delete interface details (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C1326'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.checkInterfaceIsAdd(defaultInterface); Organizations.editOrganization(); diff --git a/cypress/e2e/organizations/interface-details/edit-interface-details.cy.js b/cypress/e2e/organizations/interface-details/edit-interface-details.cy.js index 24a2a7ae96..d715c5cec5 100644 --- a/cypress/e2e/organizations/interface-details/edit-interface-details.cy.js +++ b/cypress/e2e/organizations/interface-details/edit-interface-details.cy.js @@ -3,62 +3,65 @@ import Users from '../../../support/fragments/users/users'; import Organizations from '../../../support/fragments/organizations/organizations'; import permissions from '../../../support/dictionary/permissions'; import NewOrganization from '../../../support/fragments/organizations/newOrganization'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; -describe('Organizations --> Interface details', () => { - const organization = { - ...NewOrganization.defaultUiOrganizations, - interfaces: [], - }; - const defaultInterface = { ...NewOrganization.defaultInterface }; - let user; +describe('Organizations', () => { + describe('Interface details', () => { + const organization = { + ...NewOrganization.defaultUiOrganizations, + interfaces: [], + }; + const defaultInterface = { ...NewOrganization.defaultInterface }; + let user; - before('Create user, organization, and interface', () => { - cy.getAdminToken(); - Organizations.createInterfaceViaApi(defaultInterface).then((interfaceId) => { - defaultInterface.id = interfaceId; - organization.interfaces.push(interfaceId); - }); - Organizations.createOrganizationViaApi(organization).then((organizationId) => { - organization.id = organizationId; - }); - cy.createTempUser([permissions.uiOrganizationsViewEdit.gui]).then((userProperties) => { - user = userProperties; - cy.login(user.username, user.password, { - path: TopMenu.organizationsPath, - waiter: Organizations.waitLoading, + before('Create user, organization, and interface', () => { + cy.getAdminToken(); + Organizations.createInterfaceViaApi(defaultInterface).then((interfaceId) => { + defaultInterface.id = interfaceId; + organization.interfaces.push(interfaceId); + }); + Organizations.createOrganizationViaApi(organization).then((organizationId) => { + organization.id = organizationId; + }); + cy.createTempUser([permissions.uiOrganizationsViewEdit.gui]).then((userProperties) => { + user = userProperties; + cy.login(user.username, user.password, { + path: TopMenu.organizationsPath, + waiter: Organizations.waitLoading, + }); }); }); - }); - after('Delete test data', () => { - cy.getAdminToken(); - Organizations.deleteOrganizationViaApi(organization.id); - Users.deleteViaApi(user.userId); - }); + after('Delete test data', () => { + cy.getAdminToken(); + Organizations.deleteOrganizationViaApi(organization.id); + Users.deleteViaApi(user.userId); + }); - it( - 'C1324 Edit interface details (thunderjet)', - { tags: ['extendedPath', 'thunderjet', 'C1324'] }, - () => { - Organizations.searchByParameters('Name', organization.name); - Organizations.selectOrganization(organization.name); - Organizations.openInterfaceSection(); - Organizations.checkInterfaceIsAdd(defaultInterface); - Organizations.editOrganization(); - Organizations.selectInterface(defaultInterface); - Organizations.clickEdit(); - Organizations.addNoteToInterface('Note for interface'); - Organizations.closeEditInterface(); - Organizations.closeWithoutSaving(); - Organizations.clickEdit(); - Organizations.addNoteToInterface('Note for interface'); - Organizations.closeEditInterface(); - Organizations.keepEditingOrganization(); - Organizations.clickSaveButton(); - Organizations.closeInterface(); - Organizations.closeEditOrganizationPane(); - Organizations.checkInterfaceIsAdd(defaultInterface); - Organizations.checkInterfaceNoteIsAdd('Note for interface'); - }, - ); + it( + 'C1324 Edit interface details (thunderjet)', + { tags: ['extendedPath', 'thunderjet', 'C1324'] }, + () => { + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); + Organizations.selectOrganization(organization.name); + Organizations.openInterfaceSection(); + Organizations.checkInterfaceIsAdd(defaultInterface); + Organizations.editOrganization(); + Organizations.selectInterface(defaultInterface); + Organizations.clickEdit(); + Organizations.addNoteToInterface('Note for interface'); + Organizations.closeEditInterface(); + Organizations.closeWithoutSaving(); + Organizations.clickEdit(); + Organizations.addNoteToInterface('Note for interface'); + Organizations.closeEditInterface(); + Organizations.keepEditingOrganization(); + Organizations.clickSaveButton(); + Organizations.closeInterface(); + Organizations.closeEditOrganizationPane(); + Organizations.checkInterfaceIsAdd(defaultInterface); + Organizations.checkInterfaceNoteIsAdd('Note for interface'); + }, + ); + }); }); diff --git a/cypress/e2e/organizations/interface-details/edit-interface-type.cy.js b/cypress/e2e/organizations/interface-details/edit-interface-type.cy.js index 29b8ab0182..34d425d68b 100644 --- a/cypress/e2e/organizations/interface-details/edit-interface-type.cy.js +++ b/cypress/e2e/organizations/interface-details/edit-interface-type.cy.js @@ -3,6 +3,7 @@ import Users from '../../../support/fragments/users/users'; import Organizations from '../../../support/fragments/organizations/organizations'; import permissions from '../../../support/dictionary/permissions'; import NewOrganization from '../../../support/fragments/organizations/newOrganization'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations --> Interface details', () => { const organization = { @@ -40,7 +41,7 @@ describe('Organizations --> Interface details', () => { 'C1323 Edit an existing interface to an Organization record > Assign an interface type (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C1323'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.openInterfaceSection(); Organizations.checkInterfaceIsAdd(defaultInterface); diff --git a/cypress/e2e/organizations/interface-details/verify-password-masking.cy.js b/cypress/e2e/organizations/interface-details/verify-password-masking.cy.js index 0bb5e3de31..55e0ce5a23 100644 --- a/cypress/e2e/organizations/interface-details/verify-password-masking.cy.js +++ b/cypress/e2e/organizations/interface-details/verify-password-masking.cy.js @@ -3,6 +3,7 @@ import Organizations from '../../../support/fragments/organizations/organization import permissions from '../../../support/dictionary/permissions'; import Users from '../../../support/fragments/users/users'; import NewOrganization from '../../../support/fragments/organizations/newOrganization'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations --> Interface details', () => { let user; @@ -51,7 +52,7 @@ describe('Organizations --> Interface details', () => { 'C3455 Verify that password is masked by default (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C3455'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.checkInterfaceIsAdd(defaultInterface); Organizations.editOrganization(); diff --git a/cypress/e2e/organizations/interface-details/view-interface-details.cy.js b/cypress/e2e/organizations/interface-details/view-interface-details.cy.js index a6d73cbca6..19929eb951 100644 --- a/cypress/e2e/organizations/interface-details/view-interface-details.cy.js +++ b/cypress/e2e/organizations/interface-details/view-interface-details.cy.js @@ -3,46 +3,49 @@ import Organizations from '../../../support/fragments/organizations/organization import permissions from '../../../support/dictionary/permissions'; import Users from '../../../support/fragments/users/users'; import NewOrganization from '../../../support/fragments/organizations/newOrganization'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; -describe('Organizations --> Interface details', () => { - let user; - const defaultInterface = { ...NewOrganization.defaultInterface }; - const organization = { - ...NewOrganization.defaultUiOrganizations, - interfaces: [], - }; +describe('Organizations', () => { + describe('Interface details', () => { + let user; + const defaultInterface = { ...NewOrganization.defaultInterface }; + const organization = { + ...NewOrganization.defaultUiOrganizations, + interfaces: [], + }; - before('Create user and organization with interface', () => { - cy.getAdminToken(); - Organizations.createInterfaceViaApi(defaultInterface).then((interfaceId) => { - defaultInterface.id = interfaceId; - organization.interfaces.push(interfaceId); - }); - Organizations.createOrganizationViaApi(organization).then((organizationId) => { - organization.id = organizationId; - }); - cy.createTempUser([permissions.uiOrganizationsView.gui]).then((userProperties) => { - user = userProperties; - cy.login(user.username, user.password, { - path: TopMenu.organizationsPath, - waiter: Organizations.waitLoading, + before('Create user and organization with interface', () => { + cy.getAdminToken(); + Organizations.createInterfaceViaApi(defaultInterface).then((interfaceId) => { + defaultInterface.id = interfaceId; + organization.interfaces.push(interfaceId); + }); + Organizations.createOrganizationViaApi(organization).then((organizationId) => { + organization.id = organizationId; + }); + cy.createTempUser([permissions.uiOrganizationsView.gui]).then((userProperties) => { + user = userProperties; + cy.login(user.username, user.password, { + path: TopMenu.organizationsPath, + waiter: Organizations.waitLoading, + }); }); }); - }); - after('Delete test data', () => { - cy.getAdminToken(); - Organizations.deleteOrganizationViaApi(organization.id); - Users.deleteViaApi(user.userId); - }); + after('Delete test data', () => { + cy.getAdminToken(); + Organizations.deleteOrganizationViaApi(organization.id); + Users.deleteViaApi(user.userId); + }); - it( - 'C1325 View interface details (thunderjet)', - { tags: ['extendedPath', 'thunderjet', 'C1325'] }, - () => { - Organizations.searchByParameters('Name', organization.name); - Organizations.selectOrganization(organization.name); - Organizations.checkInterfaceIsAdd(defaultInterface); - }, - ); + it( + 'C1325 View interface details (thunderjet)', + { tags: ['extendedPath', 'thunderjet', 'C1325'] }, + () => { + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); + Organizations.selectOrganization(organization.name); + Organizations.checkInterfaceIsAdd(defaultInterface); + }, + ); + }); }); diff --git a/cypress/e2e/organizations/make-organization-a-vendor.cy.js b/cypress/e2e/organizations/make-organization-a-vendor.cy.js index aaad921515..add8ef74e8 100644 --- a/cypress/e2e/organizations/make-organization-a-vendor.cy.js +++ b/cypress/e2e/organizations/make-organization-a-vendor.cy.js @@ -4,6 +4,7 @@ import Permissions from '../../support/dictionary/permissions'; import Users from '../../support/fragments/users/users'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; import getRandomPostfix from '../../support/utils/stringTools'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { const organization = { @@ -43,12 +44,12 @@ describe('Organizations', () => { 'C730 Make existing organization a Vendor (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C730'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.selectVendor(); Organizations.addVendorInformation(vendorInformation); - Organizations.varifySaveOrganizationCalloutMessage(organization); + Organizations.verifySaveCalloutMessage(organization); }, ); }); diff --git a/cypress/e2e/organizations/making-organization-donor-and-vice-versa.cy.js b/cypress/e2e/organizations/make-organization-donor-and-vice-versa.cy.js similarity index 75% rename from cypress/e2e/organizations/making-organization-donor-and-vice-versa.cy.js rename to cypress/e2e/organizations/make-organization-donor-and-vice-versa.cy.js index 4493aca254..e1a5c13e2b 100644 --- a/cypress/e2e/organizations/making-organization-donor-and-vice-versa.cy.js +++ b/cypress/e2e/organizations/make-organization-donor-and-vice-versa.cy.js @@ -1,6 +1,6 @@ -import permissions from '../../support/dictionary/permissions'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; +import Permissions from '../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; @@ -13,7 +13,7 @@ describe('Organizations', { retries: { runMode: 1 } }, () => { Organizations.createOrganizationViaApi(organization).then((response) => { organization.id = response; }); - cy.createTempUser([permissions.uiOrganizationsViewEditCreate.gui]).then((userProperties) => { + cy.createTempUser([Permissions.uiOrganizationsViewEditCreate.gui]).then((userProperties) => { user = userProperties; cy.login(user.username, user.password, { path: TopMenu.organizationsPath, @@ -32,20 +32,20 @@ describe('Organizations', { retries: { runMode: 1 } }, () => { 'C421981 Making existing Organization a Donor and vice versa (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C421981'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.addDonorToOrganization(); Organizations.closeDetailsPane(); Organizations.resetFilters(); - Organizations.selectIsDonorFilter('Yes'); + OrganizationsSearchAndFilter.filterByIsDonor('Yes'); Organizations.selectOrganization(organization.name); Organizations.checkOrganizationInfo(organization); Organizations.editOrganization(); Organizations.removeDonorFromOrganization(); Organizations.closeDetailsPane(); Organizations.resetFilters(); - Organizations.selectIsDonorFilter('No'); + OrganizationsSearchAndFilter.filterByIsDonor('No'); Organizations.selectOrganization(organization.name); Organizations.checkOrganizationInfo(organization); Organizations.resetFilters(); diff --git a/cypress/e2e/organizations/make-organization-not-a-vendor.cy.js b/cypress/e2e/organizations/make-organization-not-a-vendor.cy.js index 1067a3a6b8..ea8592914d 100644 --- a/cypress/e2e/organizations/make-organization-not-a-vendor.cy.js +++ b/cypress/e2e/organizations/make-organization-not-a-vendor.cy.js @@ -3,6 +3,7 @@ import Organizations from '../../support/fragments/organizations/organizations'; import Permissions from '../../support/dictionary/permissions'; import Users from '../../support/fragments/users/users'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { const organization = { @@ -35,11 +36,11 @@ describe('Organizations', () => { 'C358965 Make existing organization NOT a Vendor (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C358965'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.deselectVendor(); - Organizations.varifySaveOrganizationCalloutMessage(organization); + Organizations.verifySaveCalloutMessage(organization); }, ); }); diff --git a/cypress/e2e/organizations/pagination-and-bulk-selection.cy.js b/cypress/e2e/organizations/pagination-and-bulk-selection.cy.js index a45fa67aa5..ceb208c354 100644 --- a/cypress/e2e/organizations/pagination-and-bulk-selection.cy.js +++ b/cypress/e2e/organizations/pagination-and-bulk-selection.cy.js @@ -1,13 +1,13 @@ +import Permissions from '../../support/dictionary/permissions'; +import SearchHelper from '../../support/fragments/finance/financeHelper'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; -import Organizations from '../../support/fragments/organizations/organizations'; -import permissions from '../../support/dictionary/permissions'; import Users from '../../support/fragments/users/users'; -import newOrganization from '../../support/fragments/organizations/newOrganization'; -import SearchHelper from '../../support/fragments/finance/financeHelper'; describe('Organizations', () => { let user; - const organization = { ...newOrganization.defaultUiOrganizations }; + const organization = { ...NewOrganization.defaultUiOrganizations }; const contactIds = []; before('Create user, organization, and contacts', () => { @@ -34,7 +34,7 @@ describe('Organizations', () => { contactIds.push(contactId); }); - cy.createTempUser([permissions.uiOrganizationsViewEditCreate.gui]).then((userProperties) => { + cy.createTempUser([Permissions.uiOrganizationsViewEditCreate.gui]).then((userProperties) => { user = userProperties; cy.login(user.username, user.password, { path: TopMenu.organizationsPath, @@ -56,13 +56,13 @@ describe('Organizations', () => { 'C359169 Next/previous pagination and bulk selection in "Add contacts" dialog (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C359169'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.filterContactsByStatus('Inactive'); Organizations.verifyPaginationInContactList(); Organizations.resetFilters(); - Organizations.selectActiveStatus(); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Active'); Organizations.verifyPaginationInContactList(); Organizations.selectAllContactsOnPage(); Organizations.verifyTotalSelected(50); diff --git a/cypress/e2e/organizations/print-organization-details-pane.cy.js b/cypress/e2e/organizations/print-organization-details-pane.cy.js index c629dc8caf..1dccc30037 100644 --- a/cypress/e2e/organizations/print-organization-details-pane.cy.js +++ b/cypress/e2e/organizations/print-organization-details-pane.cy.js @@ -3,6 +3,7 @@ import Organizations from '../../support/fragments/organizations/organizations'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import newOrganization from '../../support/fragments/organizations/newOrganization'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { let user; @@ -32,7 +33,7 @@ describe('Organizations', () => { 'C422053 Print organization details pane (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C422053'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.checkOrganizationInfo(organization); Organizations.clickExpandAllButton(); diff --git a/cypress/e2e/organizations/privileged-donor-contacts-not-in-lookups.cy.js b/cypress/e2e/organizations/privileged-donor-contacts-not-in-lookups.cy.js index b8f7a17b23..10d3a0ced0 100644 --- a/cypress/e2e/organizations/privileged-donor-contacts-not-in-lookups.cy.js +++ b/cypress/e2e/organizations/privileged-donor-contacts-not-in-lookups.cy.js @@ -4,6 +4,7 @@ import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import newOrganization from '../../support/fragments/organizations/newOrganization'; import getRandomPostfix from '../../support/utils/stringTools'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { let user; @@ -51,7 +52,7 @@ describe('Organizations', () => { 'C423630 Privileged Donor contacts do NOT appear in Contact Person lookups (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C423630'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.openPrivilegedDonorInformationSection(); Organizations.checkDonorContactIsAdd(privilegedContact); diff --git a/cypress/e2e/organizations/save-and-keep-editing-when-creating.cy.js b/cypress/e2e/organizations/save-and-keep-editing-when-creating.cy.js index cb5ef09995..ba37d59429 100644 --- a/cypress/e2e/organizations/save-and-keep-editing-when-creating.cy.js +++ b/cypress/e2e/organizations/save-and-keep-editing-when-creating.cy.js @@ -1,7 +1,6 @@ +import Permissions from '../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; import TopMenu from '../../support/fragments/topMenu'; -import Organizations from '../../support/fragments/organizations/organizations'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import permissions from '../../support/dictionary/permissions'; import Users from '../../support/fragments/users/users'; describe('Organizations', () => { @@ -9,25 +8,18 @@ describe('Organizations', () => { let user; before(() => { - cy.createTempUser([permissions.uiOrganizationsViewEditCreate.gui]).then((u) => { + cy.createTempUser([Permissions.uiOrganizationsViewEditCreate.gui]).then((u) => { user = u; - cy.waitForAuthRefresh(() => { - cy.login(user.username, user.password, { - path: TopMenu.organizationsPath, - waiter: Organizations.waitLoading, - }); + cy.login(user.username, user.password, { + path: TopMenu.organizationsPath, + waiter: Organizations.waitLoading, }); }); }); after(() => { - cy.loginAsAdmin({ - path: TopMenu.organizationsPath, - waiter: Organizations.waitLoading, - }); - Organizations.searchByParameters('Name', org.name); - Organizations.selectOrganization(org.name); - Organizations.deleteOrganization(); + cy.getAdminToken(); + Organizations.deleteOrganizationViaApi(org.id); Users.deleteViaApi(user.userId); }); @@ -42,11 +34,11 @@ describe('Organizations', () => { Organizations.checkRequiredFields('Status'); Organizations.fillInInfoNewOrganization(org); Organizations.saveOrganization(); - Organizations.varifySaveOrganizationCalloutMessage(org); + Organizations.verifySaveCalloutMessage(org); Organizations.editOrganization(); Organizations.selectVendor(); Organizations.saveOrganization(); - Organizations.varifySaveOrganizationCalloutMessage(org); + Organizations.verifySaveCalloutMessage(org); Organizations.checkIsaVendor(org); Organizations.editOrganization(); Organizations.selectDonorCheckbox(); diff --git a/cypress/e2e/organizations/save-and-keep-editing-when-editing.cy.js b/cypress/e2e/organizations/save-and-keep-editing-when-editing.cy.js index da125f05ec..85884b4519 100644 --- a/cypress/e2e/organizations/save-and-keep-editing-when-editing.cy.js +++ b/cypress/e2e/organizations/save-and-keep-editing-when-editing.cy.js @@ -1,6 +1,6 @@ import Permissions from '../../support/dictionary/permissions'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; @@ -21,11 +21,10 @@ describe('Organizations', () => { }); cy.createTempUser([Permissions.uiOrganizationsViewEdit.gui]).then((u) => { user = u; - cy.waitForAuthRefresh(() => { - cy.login(user.username, user.password, { - path: TopMenu.organizationsPath, - waiter: Organizations.waitLoading, - }); + + cy.login(user.username, user.password, { + path: TopMenu.organizationsPath, + waiter: Organizations.waitLoading, }); }); }); @@ -38,9 +37,9 @@ describe('Organizations', () => { it( 'C656335 Save using Save & keep editing when editing organization', - { tags: ['extendedPath', 'thunderjet', 'C656335'] }, + { tags: ['extended', 'thunderjet', 'C656335'] }, () => { - Organizations.searchByParameters('Name', org.name); + OrganizationsSearchAndFilter.searchByParameters('Name', org.name); Organizations.selectOrganization(org.name); Organizations.getLastUpdateTime().then((time) => { preUpdated = time; @@ -51,10 +50,10 @@ describe('Organizations', () => { Organizations.checkRequiredFields('Name'); Organizations.fillNameField(organizationWithNewName.name); Organizations.saveAndKeepEditing(); - Organizations.varifySaveOrganizationCalloutMessage(organizationWithNewName); + Organizations.verifySaveCalloutMessage(organizationWithNewName); Organizations.selectVendor(); Organizations.saveAndKeepEditing(); - Organizations.varifySaveOrganizationCalloutMessage(organizationWithNewName); + Organizations.verifySaveCalloutMessage(organizationWithNewName); Organizations.selectDonorCheckbox(); Organizations.cancelOrganization(); Organizations.closeWithoutSaving(); diff --git a/cypress/e2e/organizations/search-alternate-organization-name.cy.js b/cypress/e2e/organizations/search-alternate-organization-name.cy.js index a35dbb9cc1..837f23b068 100644 --- a/cypress/e2e/organizations/search-alternate-organization-name.cy.js +++ b/cypress/e2e/organizations/search-alternate-organization-name.cy.js @@ -1,9 +1,9 @@ -import TopMenu from '../../support/fragments/topMenu'; -import Organizations from '../../support/fragments/organizations/organizations'; import Permissions from '../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; +import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; describe('Organizations', () => { const organization = { @@ -41,10 +41,10 @@ describe('Organizations', () => { 'C677 Search an alternate organization name (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C677'] }, () => { - Organizations.searchByParameters('Alias', organization.aliases[0].value); + OrganizationsSearchAndFilter.searchByParameters('Alias', organization.aliases[0].value); Organizations.checkSearchResults(organization); Organizations.resetFilters(); - Organizations.searchByParameters('All', organization.aliases[0].value); + OrganizationsSearchAndFilter.searchByParameters('All', organization.aliases[0].value); Organizations.checkSearchResults(organization); }, ); diff --git a/cypress/e2e/organizations/search-organization.cy.js b/cypress/e2e/organizations/search-organization.cy.js index 70ca437a9a..9b26813402 100644 --- a/cypress/e2e/organizations/search-organization.cy.js +++ b/cypress/e2e/organizations/search-organization.cy.js @@ -1,5 +1,5 @@ -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; describe('Organizations', () => { @@ -34,7 +34,7 @@ describe('Organizations', () => { 'C6712 Test the Organizations app searches (thunderjet)', { tags: ['smoke', 'thunderjet', 'C6712', 'shiftLeft'] }, () => { - Organizations.searchByParameters(searcher.parameter, searcher.value); + OrganizationsSearchAndFilter.searchByParameters(searcher.parameter, searcher.value); Organizations.checkSearchResults(organization); Organizations.resetFilters(); }, diff --git a/cypress/e2e/organizations/search-pagination.cy.js b/cypress/e2e/organizations/search-pagination.cy.js index d6cb385824..653ed4645c 100644 --- a/cypress/e2e/organizations/search-pagination.cy.js +++ b/cypress/e2e/organizations/search-pagination.cy.js @@ -1,5 +1,6 @@ import Permissions from '../../support/dictionary/permissions'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; @@ -25,8 +26,8 @@ describe('Organizations', () => { 'C353532 Organizations search style and position of pagination (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C353532'] }, () => { - Organizations.verifySearchAndFilterPane(); - Organizations.selectActiveStatus(); + OrganizationsSearchAndFilter.verifySearchAndFilterPane(); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Active'); Organizations.verifyPagination(50); Organizations.clickNextPaginationButton(); Organizations.clickPreviousPaginationButton(); diff --git a/cypress/e2e/organizations/settings/create-new-categories.cy.js b/cypress/e2e/organizations/settings/create-new-categories.cy.js index ba9013f454..f68e0bb2d9 100644 --- a/cypress/e2e/organizations/settings/create-new-categories.cy.js +++ b/cypress/e2e/organizations/settings/create-new-categories.cy.js @@ -1,60 +1,60 @@ -import TopMenu from '../../../support/fragments/topMenu'; +import { APPLICATION_NAMES } from '../../../support/constants'; +import Permissions from '../../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; import SettingsOrganizations from '../../../support/fragments/settings/organizations/settingsOrganizations'; -import Organizations from '../../../support/fragments/organizations/organizations'; -import getRandomPostfix from '../../../support/utils/stringTools'; -import permissions from '../../../support/dictionary/permissions'; -import Users from '../../../support/fragments/users/users'; -import NewOrganization from '../../../support/fragments/organizations/newOrganization'; +import TopMenu from '../../../support/fragments/topMenu'; import TopMenuNavigation from '../../../support/fragments/topMenuNavigation'; +import Users from '../../../support/fragments/users/users'; +import getRandomPostfix from '../../../support/utils/stringTools'; -describe('Organizations --> Settings', () => { - const categoryName = `Category_${getRandomPostfix()}`; - const contact = { ...NewOrganization.defaultContact }; - const organization = { ...NewOrganization.defaultUiOrganizations }; - let user; +describe('Organizations', () => { + describe('Settings', () => { + const categoryName = `Category_${getRandomPostfix()}`; + const contact = { ...NewOrganization.defaultContact }; + const organization = { ...NewOrganization.defaultUiOrganizations }; + let user; + + before('Create user and organization', () => { + cy.getAdminToken(); + Organizations.createOrganizationViaApi(organization).then((organizationId) => { + organization.id = organizationId; + }); + cy.createTempUser([ + Permissions.uiOrganizationsViewEdit.gui, + Permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui, + ]).then((userProperties) => { + user = userProperties; - before('Create user and organization', () => { - cy.getAdminToken(); - Organizations.createOrganizationViaApi(organization).then((organizationId) => { - organization.id = organizationId; - }); - cy.createTempUser([ - permissions.uiOrganizationsViewEdit.gui, - permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui, - ]).then((userProperties) => { - user = userProperties; - cy.waitForAuthRefresh(() => { cy.login(user.username, user.password, { path: TopMenu.settingsOrganizationsPath, waiter: SettingsOrganizations.waitLoadingOrganizationSettings, }); - cy.reload(); - SettingsOrganizations.waitLoadingOrganizationSettings(); - }, 20_000); + }); }); - }); - after('Delete test data', () => { - cy.getAdminToken(); - Organizations.deleteOrganizationViaApi(organization.id); - Users.deleteViaApi(user.userId); - }); + after('Delete test data', () => { + cy.getAdminToken(); + Organizations.deleteOrganizationViaApi(organization.id); + Users.deleteViaApi(user.userId); + }); - it( - 'C731 Create new categories (thunderjet)', - { tags: ['extendedPath', 'thunderjet', 'C731'] }, - () => { - SettingsOrganizations.selectCategories(); - SettingsOrganizations.clickNewCategoriesButton(); - SettingsOrganizations.fillCategoryName(categoryName); - SettingsOrganizations.saveCategoryChanges(); - SettingsOrganizations.checkCategoriesTableContent(categoryName); - TopMenuNavigation.navigateToApp('Organizations'); - Organizations.searchByParameters('Name', organization.name); - Organizations.selectOrganization(organization.name); - Organizations.editOrganization(); - Organizations.openContactPeopleSection(); - Organizations.addNewContactWithCategory(contact, categoryName); - }, - ); + it( + 'C731 Create new categories (thunderjet)', + { tags: ['extendedPath', 'thunderjet', 'C731'] }, + () => { + SettingsOrganizations.selectCategories(); + SettingsOrganizations.clickNewCategoriesButton(); + SettingsOrganizations.fillCategoryName(categoryName); + SettingsOrganizations.saveCategoryChanges(); + SettingsOrganizations.checkCategoriesTableContent(categoryName); + TopMenuNavigation.navigateToApp(APPLICATION_NAMES.ORGANIZATIONS); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); + Organizations.selectOrganization(organization.name); + Organizations.editOrganization(); + Organizations.openContactPeopleSection(); + Organizations.addNewContactWithCategory(contact, categoryName); + }, + ); + }); }); diff --git a/cypress/e2e/organizations/settings/organizations-settings-account-types-manage.cy.js b/cypress/e2e/organizations/settings/organizations-settings-account-types-manage.cy.js index e9f6304b89..f97bdb50d5 100644 --- a/cypress/e2e/organizations/settings/organizations-settings-account-types-manage.cy.js +++ b/cypress/e2e/organizations/settings/organizations-settings-account-types-manage.cy.js @@ -1,10 +1,12 @@ -import TopMenu from '../../../support/fragments/topMenu'; +import { APPLICATION_NAMES } from '../../../support/constants'; +import Permissions from '../../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../../support/fragments/organizations/organizationsSearchAndFilter'; import SettingsOrganizations from '../../../support/fragments/settings/organizations/settingsOrganizations'; -import getRandomPostfix from '../../../support/utils/stringTools'; -import permissions from '../../../support/dictionary/permissions'; +import TopMenu from '../../../support/fragments/topMenu'; +import TopMenuNavigation from '../../../support/fragments/topMenuNavigation'; import Users from '../../../support/fragments/users/users'; -import NewOrganization from '../../../support/fragments/organizations/newOrganization'; -import Organizations from '../../../support/fragments/organizations/organizations'; +import getRandomPostfix from '../../../support/utils/stringTools'; describe('Banking Information', () => { before('Enable Banking Information', () => { @@ -25,7 +27,7 @@ describe('Banking Information', () => { before('Create test data', () => { cy.getAdminToken(); SettingsOrganizations.createAccountTypesViaApi(existingAccountType); - cy.createTempUser([permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui]).then( + cy.createTempUser([Permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui]).then( (userProperties) => { user = userProperties; cy.login(user.username, user.password, { @@ -78,7 +80,7 @@ describe('Banking Information', () => { before('Create test data', () => { cy.getAdminToken(); SettingsOrganizations.createAccountTypesViaApi(accountType); - cy.createTempUser([permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui]).then( + cy.createTempUser([Permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui]).then( (userProperties) => { user = userProperties; cy.login(user.username, user.password, { @@ -124,7 +126,7 @@ describe('Banking Information', () => { before('Create test data', () => { cy.getAdminToken(); SettingsOrganizations.createAccountTypesViaApi(accountType); - cy.createTempUser([permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui]).then( + cy.createTempUser([Permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui]).then( (userProperties) => { user = userProperties; cy.login(user.username, user.password, { @@ -180,7 +182,7 @@ describe('Banking Information', () => { }); SettingsOrganizations.uncheckenableBankingInformationIfChecked(); SettingsOrganizations.createAccountTypesViaApi(accountType); - cy.createTempUser([permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui]).then( + cy.createTempUser([Permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui]).then( (userProperties) => { user = userProperties; cy.login(user.username, user.password, { @@ -234,9 +236,9 @@ describe('Banking Information', () => { Organizations.createBankingInformationViaApi(bankingInformation); cy.createTempUser([ - permissions.uiOrganizationsView.gui, - permissions.uiOrganizationsViewBankingInformation.gui, - permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui, + Permissions.uiOrganizationsView.gui, + Permissions.uiOrganizationsViewBankingInformation.gui, + Permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui, ]).then((userProperties) => { user = userProperties; cy.waitForAuthRefresh(() => { @@ -266,12 +268,12 @@ describe('Banking Information', () => { // Verify banking information settings enabled: other settings might deactivate it SettingsOrganizations.selectBankingInformation(); SettingsOrganizations.checkenableBankingInformationIfNeeded(); - SettingsOrganizations.selectAccountTypes(); SettingsOrganizations.checkNewAccountTypeButtonExists(); SettingsOrganizations.tryToDeleteAccountTypeWhenItUnable(existingAccountType); - cy.visit(TopMenu.organizationsPath); - Organizations.searchByParameters('Name', organization.name); + + TopMenuNavigation.navigateToApp(APPLICATION_NAMES.ORGANIZATIONS); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.verifyBankingInformationAccordionIsPresent(); Organizations.checkBankInformationExist(bankingInformation.bankName); diff --git a/cypress/e2e/organizations/test-acquisition-unit-for-organizations.cy.js b/cypress/e2e/organizations/test-acquisition-unit-for-organizations.cy.js index a364eb932d..37a1662c5c 100644 --- a/cypress/e2e/organizations/test-acquisition-unit-for-organizations.cy.js +++ b/cypress/e2e/organizations/test-acquisition-unit-for-organizations.cy.js @@ -1,5 +1,6 @@ -import permissions from '../../support/dictionary/permissions'; +import Permissions from '../../support/dictionary/permissions'; import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import AcquisitionUnits from '../../support/fragments/settings/acquisitionUnits/acquisitionUnits'; import SettingsMenu from '../../support/fragments/settingsMenu'; import TopMenu from '../../support/fragments/topMenu'; @@ -13,15 +14,15 @@ describe('Organizations', () => { before(() => { cy.getAdminToken(); cy.createTempUser([ - permissions.uiOrganizationsAssignAcquisitionUnitsToNewOrganization.gui, - permissions.uiOrganizationsIntegrationUsernamesAndPasswordsView.gui, - permissions.uiOrganizationsIntegrationUsernamesAndPasswordsViewEdit.gui, - permissions.uiOrganizationsInterfaceUsernamesAndPasswordsView.gui, - permissions.uiOrganizationsInterfaceUsernamesAndPasswordsViewEditCreateDelete.gui, - permissions.uiOrganizationsManageAcquisitionUnits.gui, - permissions.uiOrganizationsViewEditCreate.gui, - permissions.uiOrganizationsViewEditDelete.gui, - permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui, + Permissions.uiOrganizationsAssignAcquisitionUnitsToNewOrganization.gui, + Permissions.uiOrganizationsIntegrationUsernamesAndPasswordsView.gui, + Permissions.uiOrganizationsIntegrationUsernamesAndPasswordsViewEdit.gui, + Permissions.uiOrganizationsInterfaceUsernamesAndPasswordsView.gui, + Permissions.uiOrganizationsInterfaceUsernamesAndPasswordsViewEditCreateDelete.gui, + Permissions.uiOrganizationsManageAcquisitionUnits.gui, + Permissions.uiOrganizationsViewEditCreate.gui, + Permissions.uiOrganizationsViewEditDelete.gui, + Permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui, ]).then((userProperties) => { user = userProperties; }); @@ -73,7 +74,7 @@ describe('Organizations', () => { path: TopMenu.organizationsPath, waiter: Organizations.waitLoading, }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkZeroSearchResultsHeader(); cy.logout(); @@ -89,7 +90,7 @@ describe('Organizations', () => { path: TopMenu.organizationsPath, waiter: Organizations.waitLoading, }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); }, ); diff --git a/cypress/e2e/organizations/unassign-contact-from-organization.cy.js b/cypress/e2e/organizations/unassign-contact-from-organization.cy.js index 22a3076ec8..53460786b0 100644 --- a/cypress/e2e/organizations/unassign-contact-from-organization.cy.js +++ b/cypress/e2e/organizations/unassign-contact-from-organization.cy.js @@ -3,6 +3,7 @@ import Organizations from '../../support/fragments/organizations/organizations'; import Permissions from '../../support/dictionary/permissions'; import Users from '../../support/fragments/users/users'; import NewOrganization from '../../support/fragments/organizations/newOrganization'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { const organization = { @@ -40,13 +41,13 @@ describe('Organizations', () => { 'C727 Unassign contact from an organization record (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C727'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.openContactPeopleSectionInEditCard(); Organizations.deleteContactFromContactPeople(); Organizations.saveOrganization(); - Organizations.varifySaveOrganizationCalloutMessage(organization); + Organizations.verifySaveCalloutMessage(organization); Organizations.checkContactSectionIsEmpty(); }, ); diff --git a/cypress/e2e/organizations/user-can-not-edit-banking-info-without-org-edit-permission.cy.js b/cypress/e2e/organizations/user-can-not-edit-banking-info-without-org-edit-permission.cy.js index 6116265675..567ca42cab 100644 --- a/cypress/e2e/organizations/user-can-not-edit-banking-info-without-org-edit-permission.cy.js +++ b/cypress/e2e/organizations/user-can-not-edit-banking-info-without-org-edit-permission.cy.js @@ -1,7 +1,7 @@ import { APPLICATION_NAMES } from '../../support/constants'; import Permissions from '../../support/dictionary/permissions'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import SettingsOrganizations from '../../support/fragments/settings/organizations/settingsOrganizations'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import Users from '../../support/fragments/users/users'; @@ -52,7 +52,7 @@ describe('Organizations', () => { 'C423518 A user cannot edit banking information without organization edit permission (thunderjet)', { tags: ['extendedPath', 'thunderjet', 'C423518'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.verifyBankingInformationAccordionIsPresent(); Organizations.checkAvailableActionsInTheActionsField(); diff --git a/cypress/e2e/organizations/user-can-not-view-banking-info-when-enabled-banking-info-settings-is-not-active.cy.js b/cypress/e2e/organizations/user-can-not-view-banking-info-when-enabled-banking-info-settings-is-not-active.cy.js index 8963c590e5..776f3be6a0 100644 --- a/cypress/e2e/organizations/user-can-not-view-banking-info-when-enabled-banking-info-settings-is-not-active.cy.js +++ b/cypress/e2e/organizations/user-can-not-view-banking-info-when-enabled-banking-info-settings-is-not-active.cy.js @@ -1,6 +1,7 @@ import { APPLICATION_NAMES } from '../../support/constants'; import Permissions from '../../support/dictionary/permissions'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import SettingsOrganizations from '../../support/fragments/settings/organizations/settingsOrganizations'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import Users from '../../support/fragments/users/users'; @@ -71,7 +72,7 @@ describe('Organizations', () => { 'C423547 A user can not view banking information when "Enable banking information" setting is not active (thunderjet)', { tags: ['criticalPathFlaky', 'thunderjet', 'C423547'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.verifyBankingInformationAccordionIsAbsent(); Organizations.editOrganization(); diff --git a/cypress/e2e/organizations/user-can-not-view-banking-info-without-banking-info-permission.cy.js b/cypress/e2e/organizations/user-can-not-view-banking-info-without-banking-info-permission.cy.js index 0866cc29f6..57b2e37085 100644 --- a/cypress/e2e/organizations/user-can-not-view-banking-info-without-banking-info-permission.cy.js +++ b/cypress/e2e/organizations/user-can-not-view-banking-info-without-banking-info-permission.cy.js @@ -1,6 +1,7 @@ import { APPLICATION_NAMES, CAPABILITY_ACTIONS, CAPABILITY_TYPES } from '../../support/constants'; import Permissions from '../../support/dictionary/permissions'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import SettingsOrganizations from '../../support/fragments/settings/organizations/settingsOrganizations'; import TopMenu from '../../support/fragments/topMenu'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; @@ -80,7 +81,7 @@ describe('Organizations', () => { cy.login(userA.username, userA.password); TopMenuNavigation.navigateToApp(APPLICATION_NAMES.ORGANIZATIONS); Organizations.waitLoading(); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); @@ -106,7 +107,7 @@ describe('Organizations', () => { path: TopMenu.organizationsPath, waiter: Organizations.waitLoading, }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); diff --git a/cypress/e2e/organizations/user-can-only-view-banking-info-with-org-view-banking-info-permission.cy.js b/cypress/e2e/organizations/user-can-only-view-banking-info-with-org-view-banking-info-permission.cy.js index 0c5ee87b8b..cf669887df 100644 --- a/cypress/e2e/organizations/user-can-only-view-banking-info-with-org-view-banking-info-permission.cy.js +++ b/cypress/e2e/organizations/user-can-only-view-banking-info-with-org-view-banking-info-permission.cy.js @@ -1,6 +1,7 @@ import { APPLICATION_NAMES, CAPABILITY_ACTIONS, CAPABILITY_TYPES } from '../../support/constants'; import Permissions from '../../support/dictionary/permissions'; import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; @@ -93,7 +94,7 @@ describe('Organizations', () => { cy.login(user.username, user.password); TopMenuNavigation.navigateToApp(APPLICATION_NAMES.ORGANIZATIONS); Organizations.waitLoading(); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.verifyBankingInformationAccordionIsPresent(); Organizations.checkBankInformationExist(bankingInformation.bankName); @@ -113,7 +114,7 @@ describe('Organizations', () => { cy.login(user.username, user.password); TopMenuNavigation.navigateToApp(APPLICATION_NAMES.ORGANIZATIONS); Organizations.waitLoading(); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.verifyBankingInformationAccordionIsPresent(); Organizations.editOrganization(); diff --git a/cypress/e2e/organizations/user-can-only-view-privileged-donor-information.cy.js b/cypress/e2e/organizations/user-can-only-view-privileged-donor-information.cy.js index 65a8cd5c1e..3ae9e7f05b 100644 --- a/cypress/e2e/organizations/user-can-only-view-privileged-donor-information.cy.js +++ b/cypress/e2e/organizations/user-can-only-view-privileged-donor-information.cy.js @@ -1,9 +1,9 @@ -import permissions from '../../support/dictionary/permissions'; -import Organizations from '../../support/fragments/organizations/organizations'; +import Permissions from '../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; describe('Organizations', () => { const organization = { @@ -23,7 +23,7 @@ describe('Organizations', () => { organization.id = response; }); cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.addNewDonorContact(firstContact); @@ -32,8 +32,8 @@ describe('Organizations', () => { Organizations.checkDonorContactIsAdd(firstContact); Organizations.saveOrganization(); cy.createTempUser([ - permissions.uiOrganizationsViewEdit.gui, - permissions.uiOrganizationsViewEditCreateDeletePrivilegedDonorInformation.gui, + Permissions.uiOrganizationsViewEdit.gui, + Permissions.uiOrganizationsViewEditCreateDeletePrivilegedDonorInformation.gui, ]).then((userProperties) => { user = userProperties; cy.login(user.username, user.password, { @@ -57,7 +57,7 @@ describe('Organizations', () => { 'C423623 A user with "Organizations: can view privileged donor information" permission can only view privileged donor information (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C423623'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.openPrivilegedDonorInformationSection(); diff --git a/cypress/e2e/organizations/user-cannot-view-privileged-donor-information-when-create-organization-record.cy.js b/cypress/e2e/organizations/user-cannot-view-privileged-donor-information-when-create-organization-record.cy.js index 1bf7674c99..40c6af591b 100644 --- a/cypress/e2e/organizations/user-cannot-view-privileged-donor-information-when-create-organization-record.cy.js +++ b/cypress/e2e/organizations/user-cannot-view-privileged-donor-information-when-create-organization-record.cy.js @@ -46,7 +46,7 @@ describe('Organizations', () => { Organizations.fillInInfoNewOrganization(organization); Organizations.selectDonorCheckbox(); Organizations.saveOrganization(); - Organizations.varifySaveOrganizationCalloutMessage(organization); + Organizations.verifySaveCalloutMessage(organization); Organizations.varifyAbsentPrivilegedDonorInformationSection(); }, ); diff --git a/cypress/e2e/organizations/user-cannot-view-privileged-donor-information-when-edit-organization-record.cy.js b/cypress/e2e/organizations/user-cannot-view-privileged-donor-information-when-edit-organization-record.cy.js index 187d311979..ad58d22c1c 100644 --- a/cypress/e2e/organizations/user-cannot-view-privileged-donor-information-when-edit-organization-record.cy.js +++ b/cypress/e2e/organizations/user-cannot-view-privileged-donor-information-when-edit-organization-record.cy.js @@ -1,9 +1,9 @@ -import permissions from '../../support/dictionary/permissions'; -import Organizations from '../../support/fragments/organizations/organizations'; +import Permissions from '../../support/dictionary/permissions'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; import getRandomPostfix from '../../support/utils/stringTools'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; describe('Organizations', () => { const organization = { @@ -23,7 +23,7 @@ describe('Organizations', () => { organization.id = response; }); cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.addNewDonorContact(firstContact); @@ -31,7 +31,7 @@ describe('Organizations', () => { Organizations.addDonorContactToOrganization(firstContact); Organizations.checkDonorContactIsAdd(firstContact); Organizations.saveOrganization(); - cy.createTempUser([permissions.uiOrganizationsViewEdit.gui]).then((userProperties) => { + cy.createTempUser([Permissions.uiOrganizationsViewEdit.gui]).then((userProperties) => { user = userProperties; cy.login(user.username, user.password, { path: TopMenu.organizationsPath, @@ -54,7 +54,7 @@ describe('Organizations', () => { 'C423625 A user without privileged donor information permission cannot view privileged donor information when edit organization record (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C423625'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.editOrganization(); Organizations.removeDonorFromOrganization(); diff --git a/cypress/e2e/organizations/user-integration-organization.cy.js b/cypress/e2e/organizations/user-integration-organization.cy.js index 7073a46cfc..8fe3438403 100644 --- a/cypress/e2e/organizations/user-integration-organization.cy.js +++ b/cypress/e2e/organizations/user-integration-organization.cy.js @@ -5,6 +5,7 @@ import Users from '../../support/fragments/users/users'; import InteractorsTools from '../../support/utils/interactorsTools'; import getRandomPostfix from '../../support/utils/stringTools'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; describe('Organizations', () => { let userId; @@ -69,7 +70,7 @@ describe('Organizations', () => { { tags: ['smoke', 'thunderjet', 'C350762', 'shiftLeft'] }, () => { // Found and edit created organization - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); // Add first integration and check this diff --git a/cypress/e2e/organizations/version-history-view.cy.js b/cypress/e2e/organizations/version-history-view.cy.js index 01ab8b1bdb..27dd01089e 100644 --- a/cypress/e2e/organizations/version-history-view.cy.js +++ b/cypress/e2e/organizations/version-history-view.cy.js @@ -1,25 +1,25 @@ -import Organizations from '../../support/fragments/organizations/organizations'; -import Users from '../../support/fragments/users/users'; +import { APPLICATION_NAMES } from '../../support/constants'; +import Permissions from '../../support/dictionary/permissions'; import Agreements from '../../support/fragments/agreements/agreements'; -import TopMenu from '../../support/fragments/topMenu'; -import getRandomPostfix from '../../support/utils/stringTools'; -import newOrganization from '../../support/fragments/organizations/newOrganization'; import NewAgreement from '../../support/fragments/agreements/newAgreement'; -import InteractorsTools from '../../support/utils/interactorsTools'; -import Permissions from '../../support/dictionary/permissions'; import VersionHistorySection from '../../support/fragments/inventory/versionHistorySection'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; +import TopMenu from '../../support/fragments/topMenu'; import TopMenuNavigation from '../../support/fragments/topMenuNavigation'; -import { APPLICATION_NAMES } from '../../support/constants'; +import Users from '../../support/fragments/users/users'; +import InteractorsTools from '../../support/utils/interactorsTools'; +import getRandomPostfix from '../../support/utils/stringTools'; describe('Organizations', () => { const organization = { - ...newOrganization.defaultUiOrganizations, + ...NewOrganization.defaultUiOrganizations, isDonor: true, privilegedContacts: [], isVendor: false, }; - const privilegedContact = { ...newOrganization.defaultContact }; - const organizationInterface = { ...newOrganization.defaultInterface }; + const privilegedContact = { ...NewOrganization.defaultContact }; + const organizationInterface = { ...NewOrganization.defaultInterface }; const contactPeople = { firstName: `AT_FN_${getRandomPostfix()}_2`, lastName: `AT_LN_${getRandomPostfix()}_2`, @@ -35,9 +35,6 @@ describe('Organizations', () => { before(() => { cy.getAdminToken(); - cy.getAdminUserDetails().then((admin) => { - adminUser = admin.username; - }); Organizations.createInterfaceViaApi(organizationInterface).then((interfaceId) => { organizationInterface.id = interfaceId; }); @@ -51,12 +48,12 @@ describe('Organizations', () => { organization.id = organizationResponse; }); }); - cy.wait(7000); + cy.loginAsAdmin({ path: TopMenu.organizationsPath, waiter: Organizations.waitLoading, }); - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganizationInCurrentPage(organization.name); Organizations.getLastUpdateTime().then((time) => { preUpdated = time.replace(' ', ', '); @@ -64,7 +61,7 @@ describe('Organizations', () => { Organizations.editOrganization(); Organizations.addContactToOrganizationWithoutSaving(contactPeople); Organizations.addIntrefaceToOrganization(organizationInterface); - Organizations.varifySaveOrganizationCalloutMessage(organization); + Organizations.verifySaveCalloutMessage(organization); Organizations.getLastUpdateTime().then((time) => { afterUpdated = time.replace(' ', ', '); }); @@ -80,6 +77,8 @@ describe('Organizations', () => { cy.createTempUser([ Permissions.uiOrganizationsViewEdit.gui, Permissions.uiOrganizationsViewEditCreateDeletePrivilegedDonorInformation.gui, + Permissions.uiOrganizationsViewEdit.gui, + Permissions.uiOrganizationsViewEditCreateDeletePrivilegedDonorInformation.gui, ]).then((userProperties) => { user = userProperties; @@ -91,11 +90,9 @@ describe('Organizations', () => { after(() => { cy.getAdminToken(); - Agreements.getIdViaApi({ limit: 1000, query: `"name"=="${defaultAgreement.name}"` }).then( - (id) => { - Agreements.deleteViaApi(id); - }, - ); + Agreements.getIdViaApi(defaultAgreement.name).then((agreementId) => { + Agreements.deleteViaApi(agreementId); + }); Organizations.deleteContactViaApi(contactPeople.id); Organizations.deletePrivilegedContactsViaApi(privilegedContact.id); Organizations.deleteOrganizationViaApi(organization.id); @@ -106,7 +103,7 @@ describe('Organizations', () => { 'C663330 Version history view for Organizations', { tags: ['criticalPath', 'thunderjet', 'C663330'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.selectOrganization(organization.name); Organizations.openVersionHistory(); Organizations.selectVersionHistoryCard(preUpdated); diff --git a/cypress/e2e/organizations/view-existing-record.cy.js b/cypress/e2e/organizations/view-existing-record.cy.js index 2bed1870a4..6211bd91c0 100644 --- a/cypress/e2e/organizations/view-existing-record.cy.js +++ b/cypress/e2e/organizations/view-existing-record.cy.js @@ -1,4 +1,5 @@ import Organizations from '../../support/fragments/organizations/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import TopMenu from '../../support/fragments/topMenu'; import getRandomPostfix from '../../support/utils/stringTools'; @@ -12,12 +13,15 @@ describe('Organizations', () => { }; before(() => { - cy.loginAsAdmin(); cy.getAdminToken(); Organizations.createOrganizationViaApi(organization).then((response) => { organization.id = response; }); - cy.visit(TopMenu.organizationsPath); + + cy.loginAsAdmin({ + path: TopMenu.organizationsPath, + waiter: Organizations.waitLoading, + }); }); after(() => { @@ -29,8 +33,9 @@ describe('Organizations', () => { 'C672 View existing organization record (thunderjet)', { tags: ['smoke', 'thunderjet', 'C672'] }, () => { - Organizations.selectActiveStatus(); - Organizations.checkOrganizationFilter(); + OrganizationsSearchAndFilter.waitLoading(); + OrganizationsSearchAndFilter.filterByOrganizationStatus('Active'); + OrganizationsSearchAndFilter.checkSearchAndFilterPaneExists(); Organizations.selectOrganization(organization.name); Organizations.checkOrganizationInfo(organization); }, diff --git a/cypress/e2e/organizations/viewing-and-edititng-banking-info-record-with-org-view-and-edit-banking-info-permission.cy.js b/cypress/e2e/organizations/viewing-and-edititng-banking-info-record-with-org-view-and-edit-banking-info-permission.cy.js index 98b78911cc..056b15b1cb 100644 --- a/cypress/e2e/organizations/viewing-and-edititng-banking-info-record-with-org-view-and-edit-banking-info-permission.cy.js +++ b/cypress/e2e/organizations/viewing-and-edititng-banking-info-record-with-org-view-and-edit-banking-info-permission.cy.js @@ -1,6 +1,6 @@ import Permissions from '../../support/dictionary/permissions'; -import NewOrganization from '../../support/fragments/organizations/newOrganization'; -import Organizations from '../../support/fragments/organizations/organizations'; +import { NewOrganization, Organizations } from '../../support/fragments/organizations'; +import OrganizationsSearchAndFilter from '../../support/fragments/organizations/organizationsSearchAndFilter'; import SettingsOrganizations from '../../support/fragments/settings/organizations/settingsOrganizations'; import TopMenu from '../../support/fragments/topMenu'; import Users from '../../support/fragments/users/users'; @@ -57,7 +57,7 @@ describe('Organizations', () => { 'C423504 Viewing and editing "Banking information" record with "Organizations: View and edit banking information" permission (thunderjet)', { tags: ['criticalPath', 'thunderjet', 'C423504'] }, () => { - Organizations.searchByParameters('Name', organization.name); + OrganizationsSearchAndFilter.searchByParameters('Name', organization.name); Organizations.checkSearchResults(organization); Organizations.selectOrganization(organization.name); Organizations.buttonNewIsAbsent(); diff --git a/cypress/e2e/settings/inventory/subjects/subject-source-can-not-be-created-with-already-existed-folio-subject-source-name.cy.js b/cypress/e2e/settings/inventory/subjects/subject-source-can-not-be-created-with-already-existed-folio-subject-source-name.cy.js new file mode 100644 index 0000000000..6ec0d94445 --- /dev/null +++ b/cypress/e2e/settings/inventory/subjects/subject-source-can-not-be-created-with-already-existed-folio-subject-source-name.cy.js @@ -0,0 +1,48 @@ +import { APPLICATION_NAMES } from '../../../../support/constants'; +import { Permissions } from '../../../../support/dictionary'; +import SubjectSources from '../../../../support/fragments/settings/inventory/instances/subjectSources'; +import SettingsInventory, { + INVENTORY_SETTINGS_TABS, +} from '../../../../support/fragments/settings/inventory/settingsInventory'; +import TopMenuNavigation from '../../../../support/fragments/topMenuNavigation'; +import Users from '../../../../support/fragments/users/users'; + +describe('Inventory', () => { + describe('Settings', () => { + describe('Subjects', () => { + const testData = { + user: {}, + subjectSourceName: 'Canadian Subject Headings', + errorMessage: 'Error saving data. Name must be unique.', + }; + + before('Create test data and login', () => { + cy.createTempUser([Permissions.uiSettingsSubjectSourceCreateEditDelete.gui]).then( + (userProperties) => { + testData.user = userProperties; + + cy.login(testData.user.username, testData.user.password); + TopMenuNavigation.navigateToApp(APPLICATION_NAMES.SETTINGS); + SettingsInventory.goToSettingsInventory(); + SettingsInventory.selectSettingsTab(INVENTORY_SETTINGS_TABS.SUBJECT_SOURCES); + SubjectSources.waitLoading(); + }, + ); + }); + + after('Delete test data', () => { + cy.getAdminToken(); + Users.deleteViaApi(testData.user.userId); + }); + + it( + "C543860 Check that Subject source can't be created with already existed folio subject source name (folijet)", + { tags: ['extendedPath', 'folijet', 'C543860'] }, + () => { + SubjectSources.create(testData.subjectSourceName); + SubjectSources.validateNameFieldWithError(testData.errorMessage); + }, + ); + }); + }); +}); diff --git a/cypress/e2e/settings/inventory/subjects/subject-source-can-not-be-created-with-already-existed-local-subject-source-name.cy.js b/cypress/e2e/settings/inventory/subjects/subject-source-can-not-be-created-with-already-existed-local-subject-source-name.cy.js new file mode 100644 index 0000000000..79a671f7af --- /dev/null +++ b/cypress/e2e/settings/inventory/subjects/subject-source-can-not-be-created-with-already-existed-local-subject-source-name.cy.js @@ -0,0 +1,61 @@ +import { APPLICATION_NAMES } from '../../../../support/constants'; +import { Permissions } from '../../../../support/dictionary'; +import SubjectSources from '../../../../support/fragments/settings/inventory/instances/subjectSources'; +import SettingsInventory, { + INVENTORY_SETTINGS_TABS, +} from '../../../../support/fragments/settings/inventory/settingsInventory'; +import TopMenuNavigation from '../../../../support/fragments/topMenuNavigation'; +import Users from '../../../../support/fragments/users/users'; +import getRandomPostfix from '../../../../support/utils/stringTools'; + +describe('Inventory', () => { + describe('Settings', () => { + describe('Subjects', () => { + const testData = { + user: {}, + errorMessage: 'Error saving data. Name must be unique.', + }; + const localSubjectSource = { + name: `C543861 autotestSubjectSourceName${getRandomPostfix()}`, + source: 'local', + }; + + before('Create test data and login', () => { + cy.getAdminToken(); + SubjectSources.createViaApi({ + source: localSubjectSource.source, + name: localSubjectSource.name, + }).then((response) => { + localSubjectSource.id = response.body.id; + }); + + cy.createTempUser([Permissions.uiSettingsSubjectSourceCreateEditDelete.gui]).then( + (userProperties) => { + testData.user = userProperties; + + cy.login(testData.user.username, testData.user.password); + TopMenuNavigation.navigateToApp(APPLICATION_NAMES.SETTINGS); + SettingsInventory.goToSettingsInventory(); + SettingsInventory.selectSettingsTab(INVENTORY_SETTINGS_TABS.SUBJECT_SOURCES); + SubjectSources.waitLoading(); + }, + ); + }); + + after('Delete test data', () => { + cy.getAdminToken(); + Users.deleteViaApi(testData.user.userId); + SubjectSources.deleteViaApi(localSubjectSource.id); + }); + + it( + "C543861 Check that Subject source can't be created with already existed local subject source name (folijet)", + { tags: ['extendedPath', 'folijet', 'C543861'] }, + () => { + SubjectSources.create(localSubjectSource.name); + SubjectSources.validateNameFieldWithError(testData.errorMessage); + }, + ); + }); + }); +}); diff --git a/cypress/e2e/settings/inventory/subjects/subject-source-can-not-be-edited-with-already-existed-subject-source-name.cy.js b/cypress/e2e/settings/inventory/subjects/subject-source-can-not-be-edited-with-already-existed-subject-source-name.cy.js new file mode 100644 index 0000000000..cfe6840201 --- /dev/null +++ b/cypress/e2e/settings/inventory/subjects/subject-source-can-not-be-edited-with-already-existed-subject-source-name.cy.js @@ -0,0 +1,87 @@ +import { APPLICATION_NAMES } from '../../../../support/constants'; +import { Permissions } from '../../../../support/dictionary'; +import SubjectSources from '../../../../support/fragments/settings/inventory/instances/subjectSources'; +import SettingsInventory, { + INVENTORY_SETTINGS_TABS, +} from '../../../../support/fragments/settings/inventory/settingsInventory'; +import TopMenuNavigation from '../../../../support/fragments/topMenuNavigation'; +import Users from '../../../../support/fragments/users/users'; +import getRandomPostfix from '../../../../support/utils/stringTools'; + +describe('Inventory', () => { + describe('Settings', () => { + describe('Subjects', () => { + const testData = { + user: {}, + errorMessage: 'Error saving data. Name must be unique.', + }; + const firstLocalSubjectSource = { + name: `C543864 autotestSubjectSourceName${getRandomPostfix()}`, + source: 'local', + }; + const secondLocalSubjectSource = { + name: `C543864 autotestSubjectSourceName${getRandomPostfix()}`, + source: 'local', + }; + + before('Create test data and login', () => { + cy.getAdminToken(); + cy.getAdminUserDetails().then((admin) => { + testData.adminUser = admin; + }); + SubjectSources.createViaApi({ + source: firstLocalSubjectSource.source, + name: firstLocalSubjectSource.name, + }).then((response) => { + firstLocalSubjectSource.id = response.body.id; + }); + SubjectSources.createViaApi({ + source: secondLocalSubjectSource.source, + name: secondLocalSubjectSource.name, + }).then((response) => { + secondLocalSubjectSource.id = response.body.id; + }); + + cy.createTempUser([Permissions.uiSettingsSubjectSourceCreateEditDelete.gui]).then( + (userProperties) => { + testData.user = userProperties; + + cy.login(testData.user.username, testData.user.password); + TopMenuNavigation.navigateToApp(APPLICATION_NAMES.SETTINGS); + SettingsInventory.goToSettingsInventory(); + SettingsInventory.selectSettingsTab(INVENTORY_SETTINGS_TABS.SUBJECT_SOURCES); + SubjectSources.waitLoading(); + }, + ); + }); + + after('Delete test data', () => { + cy.getAdminToken(); + Users.deleteViaApi(testData.user.userId); + SubjectSources.deleteViaApi(firstLocalSubjectSource.id); + SubjectSources.deleteViaApi(secondLocalSubjectSource.id); + }); + + it( + "C543864 Check that Subject source can't be edited with already existed subject source name (folijet)", + { tags: ['extendedPath', 'folijet', 'C543864'] }, + () => { + SubjectSources.verifySubjectSourceExists( + firstLocalSubjectSource.name, + firstLocalSubjectSource.source, + `${testData.adminUser.personal.lastName}, ${testData.adminUser.personal.firstName}`, + { actions: ['edit', 'trash'] }, + ); + SubjectSources.editSubjectSourceName( + firstLocalSubjectSource.name, + secondLocalSubjectSource.name, + ); + SubjectSources.validateNameFieldWithError( + testData.errorMessage, + secondLocalSubjectSource.name, + ); + }, + ); + }); + }); +}); diff --git a/cypress/e2e/settings/invoices/delete-batch-group.cy.js b/cypress/e2e/settings/invoices/delete-batch-group.cy.js index f33724b07a..22c89c737c 100644 --- a/cypress/e2e/settings/invoices/delete-batch-group.cy.js +++ b/cypress/e2e/settings/invoices/delete-batch-group.cy.js @@ -1,44 +1,48 @@ -import permissions from '../../../support/dictionary/permissions'; -import getRandomPostfix from '../../../support/utils/stringTools'; -import SettingsMenu from '../../../support/fragments/settingsMenu'; -import Users from '../../../support/fragments/users/users'; +import Permissions from '../../../support/dictionary/permissions'; +import { Invoices, NewInvoice } from '../../../support/fragments/invoices'; import NewBatchGroup from '../../../support/fragments/invoices/newBatchGroup'; import SettingsInvoices from '../../../support/fragments/invoices/settingsInvoices'; -import NewOrganization from '../../../support/fragments/organizations/newOrganization'; -import Organizations from '../../../support/fragments/organizations/organizations'; -import Invoices from '../../../support/fragments/invoices/invoices'; -import NewInvoice from '../../../support/fragments/invoices/newInvoice'; +import { NewOrganization, Organizations } from '../../../support/fragments/organizations'; import BatchGroups from '../../../support/fragments/settings/invoices/batchGroups'; import SettingsOrganizations from '../../../support/fragments/settings/organizations/settingsOrganizations'; -import TopMenu from '../../../support/fragments/topMenu'; +import SettingsMenu from '../../../support/fragments/settingsMenu'; +import Users from '../../../support/fragments/users/users'; +import getRandomPostfix from '../../../support/utils/stringTools'; describe('ui-invoices-settings: System Batch Group deletion', () => { - const firstBatchGroup = { ...NewBatchGroup.defaultUiBatchGroup }; + let user; + const firstBatchGroup = { + ...NewBatchGroup.defaultUiBatchGroup, + name: `first_autotest_group_${getRandomPostfix()}`, + }; const secondBatchGroup = { - name: `000autotest_group_${getRandomPostfix()}`, + name: `second_autotest_group_${getRandomPostfix()}`, description: 'Created by autotest', }; const invoice = { ...NewInvoice.defaultUiInvoice }; const organization = { ...NewOrganization.defaultUiOrganizations }; - let user; before(() => { cy.getAdminToken(); - BatchGroups.createBatchGroupViaApi(firstBatchGroup).then((response) => { - invoice.batchGroup = response.name; - }); - BatchGroups.createBatchGroupViaApi(secondBatchGroup); - Organizations.createOrganizationViaApi(organization).then((responseOrganizations) => { - organization.id = responseOrganizations; - invoice.accountingCode = organization.erpCode; - cy.loginAsAdmin({ - path: TopMenu.invoicesPath, - waiter: Invoices.waitLoading, + BatchGroups.createBatchGroupViaApi(firstBatchGroup).then((firstResponse) => { + invoice.batchGroup = firstResponse.name; + firstBatchGroup.id = firstResponse.id; + + Organizations.createOrganizationViaApi(organization).then((responseOrganizations) => { + organization.id = responseOrganizations; + invoice.accountingCode = organization.erpCode; + invoice.vendorId = organization.id; + + Invoices.createInvoiceViaApi(invoice).then((responseInvoice) => { + invoice.id = responseInvoice.id; + }); }); - Invoices.createDefaultInvoiceWithoutAddress(invoice); }); - cy.createTempUser([permissions.invoiceSettingsAll.gui]).then((userProperties) => { + BatchGroups.createBatchGroupViaApi(secondBatchGroup); + + cy.createTempUser([Permissions.invoiceSettingsAll.gui]).then((userProperties) => { user = userProperties; + cy.login(user.username, user.password, { path: SettingsMenu.invoiceBatchGroupsPath, waiter: SettingsOrganizations.waitLoadingOrganizationSettings, @@ -48,16 +52,8 @@ describe('ui-invoices-settings: System Batch Group deletion', () => { after(() => { cy.getAdminToken(); - cy.loginAsAdmin({ - path: TopMenu.invoicesPath, - waiter: Invoices.waitLoading, - }); - Invoices.searchByNumber(invoice.invoiceNumber); - Invoices.selectInvoice(invoice.invoiceNumber); - Invoices.deleteInvoiceViaActions(); - Invoices.confirmInvoiceDeletion(); - cy.visit(SettingsMenu.invoiceBatchGroupsPath); - SettingsInvoices.deleteBatchGroup(firstBatchGroup); + Invoices.deleteInvoiceViaApi(invoice.id); + BatchGroups.deleteBatchGroupViaApi(firstBatchGroup.id); Users.deleteViaApi(user.userId); }); diff --git a/cypress/e2e/settings/organizations/delete-organization-type.cy.js b/cypress/e2e/settings/organizations/delete-organization-type.cy.js index 972a74f513..e0c415b224 100644 --- a/cypress/e2e/settings/organizations/delete-organization-type.cy.js +++ b/cypress/e2e/settings/organizations/delete-organization-type.cy.js @@ -3,34 +3,36 @@ import SettingsMenu from '../../../support/fragments/settingsMenu'; import Users from '../../../support/fragments/users/users'; import SettingsOrganizations from '../../../support/fragments/settings/organizations/settingsOrganizations'; -describe('Organizations: Settings (Organizations)', () => { - const type = { ...SettingsOrganizations.defaultTypes }; - let user; - before(() => { - cy.getAdminToken(); - SettingsOrganizations.createTypesViaApi(type); - cy.createTempUser([permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui]).then( - (userProperties) => { - user = userProperties; - cy.login(user.username, user.password, { - path: SettingsMenu.organizationsPath, - waiter: SettingsOrganizations.waitLoadingOrganizationSettings, - }); +describe('Organizations', () => { + describe('Settings (Organizations)', () => { + const type = { ...SettingsOrganizations.defaultTypes }; + let user; + before(() => { + cy.getAdminToken(); + SettingsOrganizations.createTypesViaApi(type); + cy.createTempUser([permissions.uiSettingsOrganizationsCanViewAndEditSettings.gui]).then( + (userProperties) => { + user = userProperties; + cy.login(user.username, user.password, { + path: SettingsMenu.organizationsPath, + waiter: SettingsOrganizations.waitLoadingOrganizationSettings, + }); + }, + ); + }); + + after(() => { + cy.getAdminToken(); + Users.deleteViaApi(user.userId); + }); + + it( + 'C367990 Delete organization type (thunderjet)', + { tags: ['extendedPath', 'thunderjet', 'C367990'] }, + () => { + SettingsOrganizations.selectTypes(); + SettingsOrganizations.deleteType(type); }, ); }); - - after(() => { - cy.getAdminToken(); - Users.deleteViaApi(user.userId); - }); - - it( - 'C367990 Delete organization type (thunderjet)', - { tags: ['extendedPath', 'thunderjet', 'C367990'] }, - () => { - SettingsOrganizations.selectTypes(); - SettingsOrganizations.deleteType(type); - }, - ); }); diff --git a/cypress/e2e/settings/tenant/delete-address.cy.js b/cypress/e2e/settings/tenant/delete-address.cy.js index 297b93a03b..fc0c404158 100644 --- a/cypress/e2e/settings/tenant/delete-address.cy.js +++ b/cypress/e2e/settings/tenant/delete-address.cy.js @@ -5,46 +5,48 @@ import SettingsMenu from '../../../support/fragments/settingsMenu'; import TenantPane, { TENANTS } from '../../../support/fragments/settings/tenant/tenantPane'; import { Addresses } from '../../../support/fragments/settings/tenant/general'; -describe('Settings', () => { - const testData = { - newAddress: { - name: `addressName_${getRandomPostfix()}`, - address: `address_${getRandomPostfix()}`, - }, - }; +describe('Tenant', () => { + describe('Settings', () => { + const testData = { + newAddress: { + name: `addressName_${getRandomPostfix()}`, + address: `address_${getRandomPostfix()}`, + }, + }; - before('Create test data', () => { - cy.createTempUser([Permissions.uiSettingsTenantAddresses.gui]).then((userProperties) => { - testData.user = userProperties; - Addresses.setAddress(testData.newAddress); - cy.login(testData.user.username, testData.user.password, { - path: SettingsMenu.tenantLocationsPath, - waiter: TenantPane.waitLoading, + before('Create test data', () => { + cy.createTempUser([Permissions.uiSettingsTenantAddresses.gui]).then((userProperties) => { + testData.user = userProperties; + Addresses.setAddress(testData.newAddress); + cy.login(testData.user.username, testData.user.password, { + path: SettingsMenu.tenantLocationsPath, + waiter: TenantPane.waitLoading, + }); }); }); - }); - after('Delete test data', () => { - cy.getAdminToken().then(() => { - Users.deleteViaApi(testData.user.userId); + after('Delete test data', () => { + cy.getAdminToken().then(() => { + Users.deleteViaApi(testData.user.userId); + }); }); - }); - it( - 'C374196 Delete Address (thunderjet) (TaaS)', - { tags: ['extendedPath', 'thunderjet', 'C374196'] }, - () => { - TenantPane.selectTenant(TENANTS.ADDRESSES); - Addresses.waitLoading(); - Addresses.clickDeleteButtonForAddressValue(testData.newAddress.name); - Addresses.verifyDeleteModalDisplayed(); - Addresses.clickCancelButtonInDeleteModal(); - Addresses.verifyDeleteModalIsNotDisplayed(); - Addresses.clickDeleteButtonForAddressValue(testData.newAddress.name); - Addresses.clickDeleteButtonInDeleteModal(); - Addresses.verifyCalloutForAddressDeletionAppears(); - Addresses.verifyDeleteModalIsNotDisplayed(); - Addresses.addressRowWithValueIsAbsent(testData.newAddress.address); - }, - ); + it( + 'C374196 Delete Address (thunderjet) (TaaS)', + { tags: ['extendedPath', 'thunderjet', 'C374196'] }, + () => { + TenantPane.selectTenant(TENANTS.ADDRESSES); + Addresses.waitLoading(); + Addresses.clickDeleteButtonForAddressValue(testData.newAddress.name); + Addresses.verifyDeleteModalDisplayed(); + Addresses.clickCancelButtonInDeleteModal(); + Addresses.verifyDeleteModalIsNotDisplayed(); + Addresses.clickDeleteButtonForAddressValue(testData.newAddress.name); + Addresses.clickDeleteButtonInDeleteModal(); + Addresses.verifyCalloutForAddressDeletionAppears(); + Addresses.verifyDeleteModalIsNotDisplayed(); + Addresses.addressRowWithValueIsAbsent(testData.newAddress.address); + }, + ); + }); }); diff --git a/cypress/support/api/consortium.js b/cypress/support/api/consortium.js index d01148f9c3..b0767c33bb 100644 --- a/cypress/support/api/consortium.js +++ b/cypress/support/api/consortium.js @@ -1,7 +1,4 @@ -import { - PUBLISH_COORDINATOR_SHARE_DETAILS_KEYS, - REQUEST_METHOD, -} from '../constants'; +import { PUBLISH_COORDINATOR_SHARE_DETAILS_KEYS, REQUEST_METHOD } from '../constants'; import { ConsortiumUtils } from '../utils'; Cypress.Commands.add('getConsortiaId', (options = {}) => { @@ -17,17 +14,19 @@ Cypress.Commands.add('getConsortiaId', (options = {}) => { return cy.wrap(cached); } - return cy.okapiRequest({ - method: 'GET', - path: 'consortia', - isDefaultSearchParamsRequired: false, - }).then(({ body }) => { - const consortiumId = body.consortia[0].id; + return cy + .okapiRequest({ + method: 'GET', + path: 'consortia', + isDefaultSearchParamsRequired: false, + }) + .then(({ body }) => { + const consortiumId = body.consortia[0].id; - Cypress.env('activeConsortiumId', consortiumId); + Cypress.env('activeConsortiumId', consortiumId); - return consortiumId; - }); + return consortiumId; + }); }); Cypress.Commands.add('assignAffiliationToUser', (affiliationTenantId, targetUserId) => { @@ -155,12 +154,7 @@ Cypress.Commands.add('getAllTenants', () => { https://s3.amazonaws.com/foliodocs/api/mod-consortia/s/publications.html#operation/publishRequests */ Cypress.Commands.add('initPublishCoordinatorRequest', (publication) => { - const { - method, - payload, - tenants, - url, - } = publication; + const { method, payload, tenants, url } = publication; cy.getConsortiaId().then((consortiaId) => { cy.okapiRequest({ @@ -188,11 +182,7 @@ Cypress.Commands.add('initPublishCoordinatorRequest', (publication) => { */ Cypress.Commands.add('initShareSettingPublication', (publication, options = {}) => { const { method = REQUEST_METHOD.POST } = options; - const { - url, - settingId, - payload, - } = publication; + const { url, settingId, payload } = publication; cy.getConsortiaId().then((consortiaId) => { const baseUrl = `consortia/${consortiaId}/sharing/settings`; @@ -208,11 +198,11 @@ Cypress.Commands.add('initShareSettingPublication', (publication, options = {}) }, isDefaultSearchParamsRequired: false, }).then(({ body }) => { - const id = ( + const id = method === REQUEST_METHOD.DELETE ? body[PUBLISH_COORDINATOR_SHARE_DETAILS_KEYS.DELETE] - : body[PUBLISH_COORDINATOR_SHARE_DETAILS_KEYS.CREATE] || body[PUBLISH_COORDINATOR_SHARE_DETAILS_KEYS.UPDATE] - ); + : body[PUBLISH_COORDINATOR_SHARE_DETAILS_KEYS.CREATE] || + body[PUBLISH_COORDINATOR_SHARE_DETAILS_KEYS.UPDATE]; return { id }; }); 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 bc64533716..5dd448d2b6 100644 --- a/cypress/support/fragments/bulk-edit/bulk-edit-search-pane.js +++ b/cypress/support/fragments/bulk-edit/bulk-edit-search-pane.js @@ -28,7 +28,7 @@ const matchedAccordion = Accordion(previewOfRecordsMatchedFormName); const changesAccordion = Accordion(previewOfRecordsChangedFormName); const errorsAccordion = Accordion('Errors & warnings'); const showWarningsCheckbox = Checkbox({ labelText: 'Show warnings' }); -const recordIdentifierDropdown = Select(including('Record identifier')); +const recordIdentifierDropdown = Select('Record identifier*'); const recordTypesAccordion = Accordion({ label: 'Record types' }); const actions = Button('Actions'); const fileButton = Button('or choose file'); diff --git a/cypress/support/fragments/consortium-manager/consortiaControlledVocabularyPaneset.js b/cypress/support/fragments/consortium-manager/consortiaControlledVocabularyPaneset.js index 48652a6402..88842d132b 100644 --- a/cypress/support/fragments/consortium-manager/consortiaControlledVocabularyPaneset.js +++ b/cypress/support/fragments/consortium-manager/consortiaControlledVocabularyPaneset.js @@ -21,8 +21,12 @@ const memberLibrariesShare = Checkbox({ labelText: 'Share' }); const cancelButton = Button('Cancel'); const saveButton = Button('Save'); const confirmDeleteModal = Modal({ id: 'delete-controlled-vocab-entry-confirmation' }); -const confirmDeleteButton = Button({ id: 'clickable-delete-controlled-vocab-entry-confirmation-confirm' }); -const cancelDeleteButton = Button({ id: 'clickable-delete-controlled-vocab-entry-confirmation-cancel' }); +const confirmDeleteButton = Button({ + id: 'clickable-delete-controlled-vocab-entry-confirmation-confirm', +}); +const cancelDeleteButton = Button({ + id: 'clickable-delete-controlled-vocab-entry-confirmation-cancel', +}); export default { waitLoading(panesetName) { @@ -226,10 +230,12 @@ export default { }, verifyDeleteConfirmationMessage(settingName, entityName) { - cy.expect(confirmDeleteModal.has({ - header: `Delete ${settingName}`, - message: `The ${settingName} ${entityName} will be deleted.`, - })); + cy.expect( + confirmDeleteModal.has({ + header: `Delete ${settingName}`, + message: `The ${settingName} ${entityName} will be deleted.`, + }), + ); cy.expect(cancelDeleteButton.is({ disabled: false })); cy.expect(confirmDeleteButton.is({ disabled: false })); }, diff --git a/cypress/support/fragments/consortium-manager/consortiumManagerApp.js b/cypress/support/fragments/consortium-manager/consortiumManagerApp.js index 4318168094..9a3c30eecd 100644 --- a/cypress/support/fragments/consortium-manager/consortiumManagerApp.js +++ b/cypress/support/fragments/consortium-manager/consortiumManagerApp.js @@ -26,11 +26,13 @@ export const SHARED_SETTING_LIBRARIES = 'All'; export const messages = { created: (name, members) => { - const libraryWord = (members.includes(',') || members === SHARED_SETTING_LIBRARIES) ? 'libraries' : 'library'; + const libraryWord = + members.includes(',') || members === SHARED_SETTING_LIBRARIES ? 'libraries' : 'library'; return `${name} was successfully created for ${members} ${libraryWord}.`; }, updated: (name, members) => { - const libraryWord = (members.includes(',') || members === SHARED_SETTING_LIBRARIES) ? 'libraries' : 'library'; + const libraryWord = + members.includes(',') || members === SHARED_SETTING_LIBRARIES ? 'libraries' : 'library'; return `${name} was successfully updated for ${members} ${libraryWord}.`; }, deleted: (settingName, entityName) => `The ${settingName} ${entityName} was successfully deleted`, diff --git a/cypress/support/fragments/consortium-manager/users/departmentsConsortiumManager.js b/cypress/support/fragments/consortium-manager/users/departmentsConsortiumManager.js index 929634eeaf..74cf647634 100644 --- a/cypress/support/fragments/consortium-manager/users/departmentsConsortiumManager.js +++ b/cypress/support/fragments/consortium-manager/users/departmentsConsortiumManager.js @@ -45,9 +45,12 @@ export default { }, }; - return cy.sendPublishCoordinatorShareSettingPublication(publication, { method: REQUEST_METHOD.POST }).then(({ publicationResults }) => { - return publicationResults.find((record) => record.tenantId === Affiliations.Consortia)?.response; - }); + return cy + .sendPublishCoordinatorShareSettingPublication(publication, { method: REQUEST_METHOD.POST }) + .then(({ publicationResults }) => { + return publicationResults.find((record) => record.tenantId === Affiliations.Consortia) + ?.response; + }); }, deleteViaApi: (department) => { diff --git a/cypress/support/fragments/invoices/invoices.js b/cypress/support/fragments/invoices/invoices.js index e60a4ecab2..c663c8207c 100644 --- a/cypress/support/fragments/invoices/invoices.js +++ b/cypress/support/fragments/invoices/invoices.js @@ -307,6 +307,7 @@ export default { }, createInvoiceLinePOLLookUWithSubTotal: (orderNumber, total) => { + cy.wait(2000); cy.do([ Accordion({ id: invoiceLinesAccordionId }).find(actionsButton).click(), newBlankLineButton.click(), diff --git a/cypress/support/fragments/invoices/settingsInvoices.js b/cypress/support/fragments/invoices/settingsInvoices.js index fdbd7e5da0..8730b52116 100644 --- a/cypress/support/fragments/invoices/settingsInvoices.js +++ b/cypress/support/fragments/invoices/settingsInvoices.js @@ -101,13 +101,14 @@ export default { }, canNotDeleteBatchGroup: (batchGroup) => { - cy.do([ + cy.do( MultiColumnListCell({ content: batchGroup.name }).perform((element) => { const rowNumber = element.parentElement.parentElement.getAttribute('data-row-index'); cy.do([getEditableListRow(rowNumber).find(trashIconButton).click(), deleteButton.click()]); }), - Modal('Cannot delete batch group').find(Button('Okay')).click(), - ]); + ); + cy.wait(1500); + cy.do(Modal('Cannot delete batch group').find(Button('Okay')).click()); }, checkNotDeletingGroup: (batchGroupName) => { diff --git a/cypress/support/fragments/lists/lists.js b/cypress/support/fragments/lists/lists.js index 2a136c8c63..43150cb612 100644 --- a/cypress/support/fragments/lists/lists.js +++ b/cypress/support/fragments/lists/lists.js @@ -827,7 +827,9 @@ const QueryBuilder = { cancelQueryBuilder() { cy.wait(500); - cy.xpath('.//*[contains(@class, "LayerRoot") and @aria-label="Build query"]//button[.="Cancel"]').click(); + cy.xpath( + './/*[contains(@class, "LayerRoot") and @aria-label="Build query"]//button[.="Cancel"]', + ).click(); cy.wait(500); }, @@ -838,11 +840,13 @@ const QueryBuilder = { cy.wait(1000); if (locator) { cy.xpath(`count(//div[@id="${locator}"]/preceding-sibling::div)`).should('exist'); - cy.xpath(`count(//div[@id="${locator}"]/preceding-sibling::div)`).then(($index) => { - columnNumber = $index; - }).then(() => { - cy.log(`Column number is: ${columnNumber}`); - }); + cy.xpath(`count(//div[@id="${locator}"]/preceding-sibling::div)`) + .then(($index) => { + columnNumber = $index; + }) + .then(() => { + cy.log(`Column number is: ${columnNumber}`); + }); } }) .then(() => { diff --git a/cypress/support/fragments/organizations/organizations.js b/cypress/support/fragments/organizations/organizations.js index 19637262ac..06bf1424e4 100644 --- a/cypress/support/fragments/organizations/organizations.js +++ b/cypress/support/fragments/organizations/organizations.js @@ -1,7 +1,8 @@ -import { HTML } from '@interactors/html'; +import { HTML, including, or } from '@interactors/html'; import { Accordion, Button, + Card, Checkbox, KeyValue, Link, @@ -10,30 +11,26 @@ import { MultiColumnListCell, MultiColumnListRow, MultiSelect, + MultiSelectMenu, MultiSelectOption, Pane, + PaneContent, PaneHeader, + RepeatableField, SearchField, Section, Select, Selection, - SelectionOption, Spinner, TextArea, TextField, - including, - MultiSelectMenu, - or, - PaneContent, - Card, - RepeatableField, } from '../../../../interactors'; import { AppList } from '../../../../interactors/applist'; +import DateTools from '../../utils/dateTools'; import InteractorsTools from '../../utils/interactorsTools'; import getRandomPostfix from '../../utils/stringTools'; import SearchHelper from '../finance/financeHelper'; import OrganizationDetails from './organizationDetails'; -import DateTools from '../../utils/dateTools'; const buttonNew = Button('New'); const saveAndClose = Button('Save & close'); @@ -46,7 +43,6 @@ const organizationsList = MultiColumnList({ id: 'organizations-list' }); const blueColor = 'rgba(0, 0, 0, 0)'; const tagButton = Button({ icon: 'tag' }); const summarySection = Accordion({ id: summaryAccordionId }); -const searchInput = SearchField({ id: 'input-record-search' }); const vendorEDICodeEdited = `${getRandomPostfix()}`; const libraryEDICodeEdited = `${getRandomPostfix()}`; const serverAddress = 'ftp://ftp.ci.folio.org'; @@ -82,8 +78,16 @@ const openInterfaceSectionButton = Button({ id: 'accordion-toggle-button-interfacesSection', }); const interfaceSection = Section({ id: 'interfacesSection' }); -const addInterfaceButton = Button('Add interface'); const addInterfacesModal = Modal('Add interfaces'); +const listIntegrationConfigs = MultiColumnList({ + id: 'list-integration-configs', +}); +const donorCheckbox = Checkbox('Donor'); +const privilegedDonorInformationSection = Section({ id: 'privilegedDonorInformation' }); +const paymentMethodSection = Select('Payment method'); +const accountStatus = Select('Account status*'); +const tagsPane = Pane('Tags'); +const addInterfaceButton = Button('Add interface'); const saveButton = Button('Save'); const confirmButton = Button('Confirm'); const searchButtonInModal = Button({ type: 'submit' }); @@ -92,78 +96,26 @@ const categoryButton = Button('Categories'); const openintegrationDetailsSectionButton = Button({ id: 'accordion-toggle-button-integrationDetailsSection', }); -const listIntegrationConfigs = MultiColumnList({ - id: 'list-integration-configs', -}); -const donorCheckbox = Checkbox('Donor'); -const toggleButtonIsDonor = Button({ id: 'accordion-toggle-button-isDonor' }); -const donorSection = Section({ id: 'isDonor' }); const bankingInformationButton = Button('Banking information'); const bankingInformationAddButton = Button({ id: 'bankingInformation-add-button' }); -const privilegedDonorInformationSection = Section({ id: 'privilegedDonorInformation' }); -const toggleOrganizationStatus = Button({ id: 'accordion-toggle-button-status' }); -const toggleOrganizationTypes = Button({ - id: 'accordion-toggle-button-org-filter-organizationTypes', -}); -const toggleOrganizationTags = Button({ id: 'accordion-toggle-button-tags' }); -const toggleButtonIsVendor = Button({ id: 'accordion-toggle-button-isVendor' }); -const toggleButtonCountry = Button({ id: 'accordion-toggle-button-plugin-country-filter' }); -const toggleButtonLanguage = Button({ id: 'accordion-toggle-button-plugin-language-filter' }); -const toggleButtonPaymentMethod = Button({ id: 'accordion-toggle-button-paymentMethod' }); -const toggleButtonAcquisitionMethod = Button({ - id: 'accordion-toggle-button-org-filter-acqUnitIds', -}); -const toggleButtonCreatedBy = Button({ id: 'accordion-toggle-button-metadata.createdByUserId' }); -const toggleButtonDateCreated = Button({ id: 'accordion-toggle-button-metadata.createdDate' }); -const toggleButtonUpdatedBy = Button({ id: 'accordion-toggle-button-metadata.updatedByUserId' }); -const toggleButtonDateUpdated = Button({ id: 'accordion-toggle-button-metadata.updatedDate' }); -const updatedDateAccordion = Section({ id: 'metadata.updatedDate' }); -const startDateField = TextField({ name: 'startDate' }); -const endDateField = TextField({ name: 'endDate' }); -const applyButton = Button('Apply'); -const vendorInformationAccordion = Button({ - id: 'accordion-toggle-button-vendorInformationSection', -}); -const paymentMethodSection = Select('Payment method'); -const vendorTermsAccordion = Button({ id: 'accordion-toggle-button-agreementsSection' }); -const accountAccordion = Button({ id: 'accordion-toggle-button-accountsSection' }); -const accountStatus = Select('Account status*'); - -const tagsPane = Pane('Tags'); - const nextButton = Button('Next', { disabled: or(true, false) }); const previousButton = Button('Previous', { disabled: or(true, false) }); const contactStatusButton = Button({ id: 'accordion-toggle-button-inactive' }); - -const noResultsMessageLabel = '//span[contains(@class,"noResultsMessageLabel")]'; - const contactInformationSection = Button({ id: 'accordion-toggle-button-contactInformationSection', }); +const vendorTermsAccordion = Button({ id: 'accordion-toggle-button-agreementsSection' }); +const accountAccordion = Button({ id: 'accordion-toggle-button-accountsSection' }); +const vendorInformationAccordion = Button({ + id: 'accordion-toggle-button-vendorInformationSection', +}); +const noResultsMessageLabel = '//span[contains(@class,"noResultsMessageLabel")]'; export default { waitLoading: () => { cy.expect(Pane({ id: 'organizations-results-pane' }).exists()); }, - verifySearchAndFilterPane() { - cy.expect([ - toggleOrganizationStatus.exists(), - toggleOrganizationTypes.exists(), - toggleOrganizationTags.exists(), - toggleButtonIsDonor.exists(), - toggleButtonIsVendor.exists(), - toggleButtonCountry.exists(), - toggleButtonLanguage.exists(), - toggleButtonPaymentMethod.exists(), - toggleButtonAcquisitionMethod.exists(), - toggleButtonCreatedBy.exists(), - toggleButtonDateCreated.exists(), - toggleButtonUpdatedBy.exists(), - toggleButtonDateUpdated.exists(), - ]); - }, - verifyPagination(numberOfRows) { cy.expect([ previousButton.has({ disabled: or(true, false) }), @@ -259,7 +211,7 @@ export default { cy.get('@print').should('have.been.called'); }, - createOrganizationViaUi: (organization) => { + createOrganization(organization) { cy.expect(buttonNew.exists()); cy.do(buttonNew.click()); cy.wait(4000); @@ -509,62 +461,6 @@ export default { ]); }, - selectActiveStatus: () => { - cy.do(Checkbox('Active').click()); - }, - - selectPendingStatus: () => { - cy.wait(3000); - cy.do(Checkbox('Pending').click()); - }, - - selectInactiveStatus: () => { - cy.wait(3000); - cy.do(Checkbox('Inactive').click()); - }, - - selectIsDonorFilter: (isDonor) => { - if (isDonor === 'Yes') { - cy.wait(3000); - cy.do([ - toggleButtonIsDonor.click(), - donorSection.find(Checkbox('Yes')).click(), - toggleButtonIsDonor.click(), - ]); - } else if (isDonor === 'No') { - cy.wait(3000); - cy.do([ - toggleButtonIsDonor.click(), - donorSection.find(Checkbox('No')).click(), - toggleButtonIsDonor.click(), - ]); - } - }, - - selectCreatedByFiler: (createdBy) => { - cy.do([ - toggleButtonCreatedBy.click(), - Button('Find User').click(), - TextField({ name: 'query' }).fillIn(createdBy), - searchButtonInModal.click(), - MultiColumnListRow({ index: 0 }).click(), - ]); - }, - - selectUpdatedByFiler: (createdBy) => { - cy.do([ - toggleButtonUpdatedBy.click(), - Button('Find User').click(), - TextField({ name: 'query' }).fillIn(createdBy), - searchButtonInModal.click(), - MultiColumnListRow({ index: 0 }).click(), - ]); - }, - - checkOrganizationFilter: () => { - cy.expect(organizationsList.exists()); - }, - addNewCategory: (value) => { cy.do(categoryButton.click()); cy.expect(newButton.exists()); @@ -941,15 +837,6 @@ export default { cy.expect(summarySection.find(KeyValue({ value: organization.code })).exists()); }, - searchByParameters: (parameter, value) => { - cy.wait(4000); - cy.do([ - searchInput.selectIndex(parameter), - searchInput.fillIn(value), - Button('Search').click(), - ]); - }, - resetFilters: () => { cy.wait(3000); cy.do(resetButton.click()); @@ -970,19 +857,9 @@ export default { }, checkSearchResults: (organization) => { - cy.wait(4000); cy.expect(organizationsList.find(Link(organization.name)).exists()); }, - selectYesInIsVendor: () => { - cy.do([toggleButtonIsVendor.click(), Checkbox('Yes').click()]); - }, - - selectNoInIsVendor: () => { - cy.wait(3000); - cy.do([toggleButtonIsVendor.click(), Checkbox('No').click()]); - }, - selectVendor: () => { cy.do([Checkbox('Vendor').click()]); }, @@ -1018,31 +895,10 @@ export default { closeDetailsPane: () => { cy.do(PaneHeader({ id: 'paneHeaderpane-organization-details' }).find(timesButton).click()); }, + closeIntegrationDetailsPane: () => { cy.do(PaneHeader({ id: 'paneHeaderintegration-view' }).find(timesButton).click()); }, - selectCountryFilter: (country) => { - cy.wait(3000); - cy.do([ - toggleButtonCountry.click(), - Button({ id: 'addresses-selection' }).click(), - SelectionOption(country).click(), - ]); - }, - - selectLanguageFilter: () => { - cy.wait(3000); - cy.do([ - toggleButtonLanguage.click(), - Button({ id: 'language-selection' }).click(), - SelectionOption('English').click(), - ]); - }, - - selectCashInPaymentMethod: () => { - cy.wait(3000); - cy.do([toggleButtonPaymentMethod.click(), Checkbox('Cash').click()]); - }, deleteOrganizationViaApi: (organizationId) => cy.okapiRequest({ method: 'DELETE', @@ -1145,7 +1001,23 @@ export default { }) .then((resp) => resp.body.id), - getTagByLabel(label) { + deleteTagByIdViaApi(id) { + return cy.okapiRequest({ + method: 'DELETE', + path: `tags/${id}`, + isDefaultSearchParamsRequired: false, + }); + }, + + deletePrivilegedContactsViaApi(id) { + return cy.okapiRequest({ + method: 'DELETE', + path: `organizations-storage/privileged-contacts/${id}`, + failOnStatusCode: false, + }); + }, + + getTagByLabelViaApi(label) { const q = `label=="${label}"`; return cy .okapiRequest({ @@ -1157,7 +1029,7 @@ export default { .then((r) => r.body.tags?.[0] ?? null); }, - getPrivilegedContacts({ cql, limit = 10, offset = 0, totalRecords = 'auto' } = {}) { + getPrivilegedContactsViaApi({ cql, limit = 10, offset = 0, totalRecords = 'auto' } = {}) { return cy .okapiRequest({ method: 'GET', @@ -1170,23 +1042,7 @@ export default { getPrivilegedContactByName(firstName, lastName) { const q = `firstName == "${firstName}" and lastName == "${lastName}"`; - return this.getPrivilegedContacts({ cql: q, limit: 1 }).then((arr) => arr[0] ?? null); - }, - - deleteTagById(id) { - return cy.okapiRequest({ - method: 'DELETE', - path: `tags/${id}`, - isDefaultSearchParamsRequired: false, - }); - }, - - deletePrivilegedContactsViaApi(id) { - return cy.okapiRequest({ - method: 'DELETE', - path: `organizations-storage/privileged-contacts/${id}`, - failOnStatusCode: false, - }); + return this.getPrivilegedContactsViaApi({ cql: q, limit: 1 }).then((arr) => arr[0] ?? null); }, editOrganization: () => { @@ -1923,7 +1779,7 @@ export default { cy.expect(deleteButton.absent()); }, - varifySaveOrganizationCalloutMessage: (organization) => { + verifySaveCalloutMessage: (organization) => { InteractorsTools.checkCalloutMessage( `The Organization - "${organization.name}" has been successfully saved`, ); @@ -2036,15 +1892,6 @@ export default { }); }, - filterByDateUpdated(startDate, endDate) { - cy.do([ - toggleButtonDateUpdated.click(), - updatedDateAccordion.find(startDateField).fillIn(startDate), - updatedDateAccordion.find(endDateField).fillIn(endDate), - updatedDateAccordion.find(applyButton).click(), - ]); - }, - checkInvalidDateRangeMessage: (expected = 'Start date is greater than end date') => { cy.get('div[role="alert"] [data-test-wrong-dates-order="true"]') .should('be.visible') diff --git a/cypress/support/fragments/organizations/organizationsSearchAndFilter.js b/cypress/support/fragments/organizations/organizationsSearchAndFilter.js new file mode 100644 index 0000000000..2874bd3c23 --- /dev/null +++ b/cypress/support/fragments/organizations/organizationsSearchAndFilter.js @@ -0,0 +1,216 @@ +import { + Button, + Checkbox, + MultiColumnList, + MultiColumnListRow, + Pane, + SearchField, + Section, + SelectionOption, + TextField, +} from '../../../../interactors'; + +const organizationsList = MultiColumnList({ id: 'organizations-list' }); +const searchInput = SearchField({ id: 'input-record-search' }); +const resetButton = Button('Reset all'); +const searchButtonInModal = Button({ type: 'submit' }); +const toggleButtonIsDonor = Button({ id: 'accordion-toggle-button-isDonor' }); +const donorSection = Section({ id: 'isDonor' }); +const toggleOrganizationStatus = Button({ id: 'accordion-toggle-button-status' }); +const toggleOrganizationTypes = Button({ + id: 'accordion-toggle-button-org-filter-organizationTypes', +}); +const toggleOrganizationTags = Button({ id: 'accordion-toggle-button-tags' }); +const toggleButtonIsVendor = Button({ id: 'accordion-toggle-button-isVendor' }); +const toggleButtonCountry = Button({ id: 'accordion-toggle-button-plugin-country-filter' }); +const toggleButtonLanguage = Button({ id: 'accordion-toggle-button-plugin-language-filter' }); +const toggleButtonPaymentMethod = Button({ id: 'accordion-toggle-button-paymentMethod' }); +const toggleButtonAcquisitionMethod = Button({ + id: 'accordion-toggle-button-org-filter-acqUnitIds', +}); +const toggleButtonCreatedBy = Button({ id: 'accordion-toggle-button-metadata.createdByUserId' }); +const toggleButtonDateCreated = Button({ id: 'accordion-toggle-button-metadata.createdDate' }); +const toggleButtonUpdatedBy = Button({ id: 'accordion-toggle-button-metadata.updatedByUserId' }); +const toggleButtonDateUpdated = Button({ id: 'accordion-toggle-button-metadata.updatedDate' }); +const updatedDateAccordion = Section({ id: 'metadata.updatedDate' }); +const startDateField = TextField({ name: 'startDate' }); +const endDateField = TextField({ name: 'endDate' }); +const applyButton = Button('Apply'); + +export default { + waitLoading: () => { + cy.expect(Pane({ id: 'organizations-results-pane' }).exists()); + }, + + checkSearchAndFilterPaneExists: () => { + cy.expect(organizationsList.exists()); + }, + + searchByParameters: (parameter, value) => { + cy.wait(4000); + cy.do([ + searchInput.selectIndex(parameter), + searchInput.fillIn(value), + Button('Search').click(), + ]); + }, + + filterByIsDonor(isDonor) { + if (isDonor === 'Yes') { + cy.wait(3000); + cy.do([ + toggleButtonIsDonor.click(), + donorSection.find(Checkbox('Yes')).click(), + toggleButtonIsDonor.click(), + ]); + } else if (isDonor === 'No') { + cy.wait(3000); + cy.do([ + toggleButtonIsDonor.click(), + donorSection.find(Checkbox('No')).click(), + toggleButtonIsDonor.click(), + ]); + } + }, + + filterByIsVendor(isVendor) { + cy.wait(3000); + if (isVendor === 'Yes') { + cy.do([toggleButtonIsVendor.click(), Checkbox('Yes').click()]); + } else if (isVendor === 'No') { + cy.do([toggleButtonIsVendor.click(), Checkbox('No').click()]); + } + }, + + filterByOrganizationStatus: (status) => { + cy.wait(2000); + if (status === 'Active') { + cy.do(Checkbox('Active').click()); + } else if (status === 'Pending') { + cy.do(Checkbox('Pending').click()); + } else if (status === 'Inactive') { + cy.do(Checkbox('Inactive').click()); + } + }, + + verifySearchAndFilterPane() { + cy.expect([ + toggleOrganizationStatus.exists(), + toggleOrganizationTypes.exists(), + toggleOrganizationTags.exists(), + toggleButtonIsDonor.exists(), + toggleButtonIsVendor.exists(), + toggleButtonCountry.exists(), + toggleButtonLanguage.exists(), + toggleButtonPaymentMethod.exists(), + toggleButtonAcquisitionMethod.exists(), + toggleButtonCreatedBy.exists(), + toggleButtonDateCreated.exists(), + toggleButtonUpdatedBy.exists(), + toggleButtonDateUpdated.exists(), + ]); + }, + + openCreatedByAccordion() { + cy.wait(2000); + cy.then(() => { + toggleButtonCreatedBy.has({ ariaExpanded: 'false' }).then((isClosed) => { + if (isClosed) { + cy.do(toggleButtonCreatedBy.click()); + cy.wait(1000); + } + }); + }); + }, + + openUpdatedByAccordion() { + cy.wait(2000); + cy.then(() => { + toggleButtonUpdatedBy.has({ ariaExpanded: 'false' }).then((isClosed) => { + if (isClosed) { + cy.do(toggleButtonUpdatedBy.click()); + cy.wait(1000); + } + }); + }); + }, + + openDateUpdatedAccordion() { + cy.wait(2000); + cy.then(() => { + toggleButtonDateUpdated.has({ ariaExpanded: 'false' }).then((isClosed) => { + if (isClosed) { + cy.do(toggleButtonDateUpdated.click()); + cy.wait(1000); + } + }); + }); + }, + + resetFiltersIfActive: () => { + cy.get('[data-testid="reset-button"]') + .invoke('is', ':enabled') + .then((state) => { + if (state) { + cy.do(resetButton.click()); + cy.wait(500); + cy.expect(resetButton.is({ disabled: true })); + } + }); + }, + + filterByCreator(userName) { + this.openCreatedByAccordion(); + cy.do([ + Button('Find User').click(), + TextField({ name: 'query' }).fillIn(userName), + searchButtonInModal.click(), + ]); + cy.wait(2000); + cy.do(MultiColumnListRow({ index: 0 }).click()); + }, + + filterByUpdater(userName) { + this.openUpdatedByAccordion(); + cy.do([ + Button('Find User').click(), + TextField({ name: 'query' }).fillIn(userName), + searchButtonInModal.click(), + ]); + cy.wait(2000); + cy.do(MultiColumnListRow({ index: 0 }).click()); + }, + + filterByDateUpdated(startDate, endDate) { + this.openDateUpdatedAccordion(); + cy.do([ + updatedDateAccordion.find(startDateField).fillIn(startDate), + updatedDateAccordion.find(endDateField).fillIn(endDate), + updatedDateAccordion.find(applyButton).click(), + ]); + cy.wait(2000); + }, + + filterByCountry(country) { + cy.wait(3000); + cy.do([ + toggleButtonCountry.click(), + Button({ id: 'addresses-selection' }).click(), + SelectionOption(country).click(), + ]); + }, + + filterByLanguage(language) { + cy.wait(3000); + cy.do([ + toggleButtonLanguage.click(), + Button({ id: 'language-selection' }).click(), + SelectionOption(language).click(), + ]); + }, + + filterByPaymentMethod(paymentMethod) { + cy.wait(3000); + cy.do([toggleButtonPaymentMethod.click(), Checkbox(paymentMethod).click()]); + }, +}; diff --git a/cypress/support/fragments/settings/acquisitionUnits/acquisitionUnits.js b/cypress/support/fragments/settings/acquisitionUnits/acquisitionUnits.js index 6d15520be3..1650b717d0 100644 --- a/cypress/support/fragments/settings/acquisitionUnits/acquisitionUnits.js +++ b/cypress/support/fragments/settings/acquisitionUnits/acquisitionUnits.js @@ -176,6 +176,7 @@ export default { method: 'POST', path: 'acquisitions-units/units', body: acqUnit, + isDefaultSearchParamsRequired: false, }) .then(({ body }) => body); }, diff --git a/cypress/support/fragments/settings/inventory/instances/subjectSources.js b/cypress/support/fragments/settings/inventory/instances/subjectSources.js index f3e32bdbb0..f900e33d05 100644 --- a/cypress/support/fragments/settings/inventory/instances/subjectSources.js +++ b/cypress/support/fragments/settings/inventory/instances/subjectSources.js @@ -1,11 +1,12 @@ +import { including } from '@interactors/html'; import { Button, EditableListRow, - including, Modal, MultiColumnListCell, MultiColumnListHeader, Pane, + TextField, } from '../../../../../../interactors'; import { REQUEST_METHOD } from '../../../../constants'; import DateTools from '../../../../utils/dateTools'; @@ -13,6 +14,10 @@ import DeleteCancelReason from '../../../consortium-manager/modal/delete-cancel- const rootPane = Pane('Subject sources'); const modalWithErrorMessage = Modal('Cannot delete Subject source'); +const newButton = Button('+ New'); +const saveButton = Button('Save'); +const cancelButton = Button('Cancel'); +// const nameField = TextField({ name: 'items[0].name' }); const COLUMN_INDEX = { NAME: 0, @@ -140,6 +145,36 @@ export default { ); }, + create(value, rowIndex = 0) { + cy.do([newButton.click(), TextField({ name: `items[${rowIndex}].name` }).fillIn(value)]); + }, + + editSubjectSourceName(oldValue, newValue) { + const actionsCell = MultiColumnListCell({ columnIndex: COLUMN_INDEX.ACTIONS }); + const rowSelector = MultiColumnListCell({ content: oldValue }); + cy.do( + rowSelector.perform((element) => { + const rowIndex = getRowIndex(element); + const row = EditableListRow({ index: rowIndex }); + + cy.do([ + row + .find(actionsCell) + .find(Button({ icon: ACTION_BUTTONS.EDIT })) + .click(), + TextField({ name: `items[${rowIndex}].name` }).fillIn(newValue), + ]); + }), + ); + }, + + validateButtonsState({ cancel = 'enabled', save = 'enabled' } = {}) { + const cancelButtonState = cancel === 'enabled' ? { disabled: false } : { disabled: true }; + const saveButtonState = save === 'enabled' ? { disabled: false } : { disabled: true }; + + cy.expect([saveButton.has(saveButtonState), cancelButton.has(cancelButtonState)]); + }, + confirmDeletionOfSubjectSource(name) { DeleteCancelReason.waitLoadingDeleteModal('Subject source', name); DeleteCancelReason.clickDelete(); @@ -156,4 +191,23 @@ export default { cy.do(Button('Okay').click()); cy.expect(modalWithErrorMessage.absent()); }, + + validateNameFieldWithError(message) { + cy.get('#controlled-vocab-pane') + .find('input[name*="items["][name*="].name"]') + .should('exist') + .then(($inputs) => { + const nameAttr = $inputs.first().attr('name'); + const indexMatch = nameAttr.match(/items\[(\d+)\]\.name/); + if (indexMatch) { + const rowIndex = parseInt(indexMatch[1], 10); + cy.expect([ + TextField({ name: `items[${rowIndex}].name` }).has({ error: message }), + cancelButton.has({ disabled: false }), + saveButton.has({ disabled: true }), + ]); + } + }); + cy.wait(1000); + }, }; diff --git a/cypress/support/fragments/settings/invoices/batchGroups.js b/cypress/support/fragments/settings/invoices/batchGroups.js index 20e4891011..179dc9fd97 100644 --- a/cypress/support/fragments/settings/invoices/batchGroups.js +++ b/cypress/support/fragments/settings/invoices/batchGroups.js @@ -33,6 +33,8 @@ export default { return cy.okapiRequest({ method: 'DELETE', path: `batch-groups/${batchGroupId}`, + isDefaultSearchParamsRequired: false, + failOnStatusCode: false, }); }, }; diff --git a/cypress/support/utils/dateTools.js b/cypress/support/utils/dateTools.js index 45582106f9..8e1b096233 100644 --- a/cypress/support/utils/dateTools.js +++ b/cypress/support/utils/dateTools.js @@ -392,7 +392,17 @@ export default { const today = new Date(); let hours = today.getUTCHours(); let minutes = today.getUTCMinutes() + 2; - const ampm = hours >= 12 ? 'P' : 'A'; + + // Handle minute overflow + if (minutes >= 60) { + hours += Math.floor(minutes / 60); + minutes %= 60; + } + + // Handle hour overflow - needed for correct AM/PM calculation + hours %= 24; + + const ampm = hours >= 12 ? 'PM' : 'AM'; hours %= 12; hours = hours || 12; minutes = minutes < 10 ? '0' + minutes : minutes; @@ -403,7 +413,17 @@ export default { const today = new Date(); let hours = today.getUTCHours(); let minutes = today.getUTCMinutes() + 3; - const ampm = hours >= 12 ? 'P' : 'A'; + + // Handle minute overflow + if (minutes >= 60) { + hours += Math.floor(minutes / 60); + minutes %= 60; + } + + // Handle hour overflow - needed for correct AM/PM calculation + hours %= 24; + + const ampm = hours >= 12 ? 'PM' : 'AM'; hours %= 12; hours = hours || 12; minutes = minutes < 10 ? '0' + minutes : minutes; diff --git a/package.json b/package.json index af21de6dc9..1f9b90bced 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "sharp": "0.32.6", "tsx": "3.14.0", "glob": "10.4.5", - "eslint-visitor-keys": "4.2.1" + "eslint-visitor-keys": "4.2.1" }, "dependencies": { "@babel/core": "^7.19.3", @@ -71,6 +71,7 @@ "eslint-plugin-cypress": "^2.11.2", "find-test-names": "^1.28.28", "fs-extra": "7.0.1", + "glob": "^13.0.5", "globby": "^11.1.0", "husky": "^8.0.3", "json-2-csv": "^5.0.1", diff --git a/scripts/get-automated-tests.js b/scripts/get-automated-tests.js index eedd94e7e7..4660164550 100644 --- a/scripts/get-automated-tests.js +++ b/scripts/get-automated-tests.js @@ -16,38 +16,47 @@ const testRailClient = createTestRailClient(testUsername, testPassword); const getTests = getTestRunResults.bind(null, testRailClient, runId); const getTestCases = getAllTestCases.bind(null, testRailClient, projectId); +// eslint-disable-next-line no-unused-vars function printAutomatedTestsByTeamsFromTestRun() { - getTests() - .then((tests) => { - console.log(`\nNumber of all tests in the #${runId} run: ${tests.length}\n`); - // custom_automation_type: 1 - Automated, 2 - Manual - const automatedTests = tests.filter((test) => test.custom_automation_type === 1); - console.log(`Number of automated tests in the #${runId} run: ${automatedTests.length}\n`); - // eslint-disable-next-line guard-for-in - for (const key in team) { - const count = automatedTests - .filter((test) => test.custom_dev_team === team[key]).length; - console.log(`${key}: ${count}`); - } - }); + getTests().then((tests) => { + console.log(`\nNumber of all tests in the #${runId} run: ${tests.length}\n`); + // custom_automation_type: 1 - Automated, 2 - Manual + const automatedTests = tests.filter((test) => test.custom_automation_type === 1); + console.log(`Number of automated tests in the #${runId} run: ${automatedTests.length}\n`); + // eslint-disable-next-line guard-for-in + for (const key in team) { + const count = automatedTests.filter((test) => test.custom_dev_team === team[key]).length; + console.log(`${key}: ${count}`); + } + }); } function printAutomatedTestsByTeams() { getTestCases().then((cases) => { console.log(`\nNumber of all tests in the project #${projectId} run: ${cases.length}`); // smoke - 1, critical - 2, extended - 3, Backend - 6, Edge Cases - 7 - const actualTestCases = cases.filter((caseItem) => (caseItem.custom_release !== null) && - (caseItem.custom_test_group === 1 - || caseItem.custom_test_group === 2 - || caseItem.custom_test_group === 3 - || caseItem.custom_test_group === 6 - || caseItem.custom_test_group === 7)); - console.log(`Number of actual tests cases (smoke, critical, extended, backend, edge cases) in the project #${projectId} run: ${actualTestCases.length}`); + const actualTestCases = cases.filter( + (caseItem) => caseItem.custom_release !== null && + (caseItem.custom_test_group === 1 || + caseItem.custom_test_group === 2 || + caseItem.custom_test_group === 3 || + caseItem.custom_test_group === 6 || + caseItem.custom_test_group === 7), + ); + console.log( + `Number of actual tests cases (smoke, critical, extended, backend, edge cases) in the project #${projectId} run: ${actualTestCases.length}`, + ); // custom_automation_type: 1 - Automated, 2 - Manual - const automatedTests = actualTestCases.filter((caseItem) => caseItem.custom_automation_type === 1); + const automatedTests = actualTestCases.filter( + (caseItem) => caseItem.custom_automation_type === 1, + ); const manualTests = actualTestCases.filter((caseItem) => caseItem.custom_automation_type === 2); - console.log(`Number of automated tests cases in the project #${projectId} run: ${automatedTests.length}`); - console.log(`Number of manual tests cases in the project #${projectId} run: ${manualTests.length}`); + console.log( + `Number of automated tests cases in the project #${projectId} run: ${automatedTests.length}`, + ); + console.log( + `Number of manual tests cases in the project #${projectId} run: ${manualTests.length}`, + ); const fileJson = {}; fileJson.date = new Date().toISOString(); @@ -57,22 +66,38 @@ function printAutomatedTestsByTeams() { let totalManual = 0; console.log('Team\t Automated Manual Coverage %'); for (const key in team) { - const automatedCount = automatedTests.filter((test) => test.custom_dev_team === team[key]).length; + const automatedCount = automatedTests.filter( + (test) => test.custom_dev_team === team[key], + ).length; totalAutomated += automatedCount; const manualCount = manualTests.filter((test) => test.custom_dev_team === team[key]).length; totalManual += manualCount; const coverage = ((automatedCount / (automatedCount + manualCount)) * 100).toFixed(2); - console.log(`${key.length <= 4 ? key + ' ' : key}: \t${automatedCount}\t\t${manualCount}\t${coverage}%`); - fileJson.teams.push({ team: key, 'automated': automatedCount, 'manual': manualCount, 'coverage': `${coverage}%` }); + console.log( + `${key.length <= 4 ? key + ' ' : key}: \t${automatedCount}\t\t${manualCount}\t${coverage}%`, + ); + fileJson.teams.push({ + team: key, + automated: automatedCount, + manual: manualCount, + coverage: `${coverage}%`, + }); } - console.log(`Total: \t\t${totalAutomated}\t\t${totalManual}\t${((totalAutomated / (totalAutomated + totalManual)) * 100).toFixed(2)}%`); - fs.writeFile(`${fileJson.date.replace(/:/g, '_').replace(/\./g, '_').replace(/-/g, '_')}_automated_tests.json`, JSON.stringify(fileJson), 'utf8', (err) => { - if (err) { - console.error('Error writing file', err); - } else { - console.log('File has been written'); - } - }); + console.log( + `Total: \t\t${totalAutomated}\t\t${totalManual}\t${((totalAutomated / (totalAutomated + totalManual)) * 100).toFixed(2)}%`, + ); + fs.writeFile( + `${fileJson.date.replace(/:/g, '_').replace(/\./g, '_').replace(/-/g, '_')}_automated_tests.json`, + JSON.stringify(fileJson), + 'utf8', + (err) => { + if (err) { + console.error('Error writing file', err); + } else { + console.log('File has been written'); + } + }, + ); }); } printAutomatedTestsByTeams(); diff --git a/scripts/helpers/test.rail.helper.js b/scripts/helpers/test.rail.helper.js index 6c0d0d2405..1f0f488f08 100644 --- a/scripts/helpers/test.rail.helper.js +++ b/scripts/helpers/test.rail.helper.js @@ -122,4 +122,13 @@ async function getTestCase(api, caseId) { } } -module.exports = { getAllTestCases, getTestHistory, getCaseHistory, getTestRunResults, updateTestResult, getTestCase, team, status }; +module.exports = { + getAllTestCases, + getTestHistory, + getCaseHistory, + getTestRunResults, + updateTestResult, + getTestCase, + team, + status, +};