/**
|
* @file ADSO-10114
|
* @description Edit unit cost - multiple costs selection of same cost driver (only update Time unit & length of time)
|
* @testCategory Web - Financials - Units
|
* @author Umar Adkhamov (umar.adkhamov@3ds.com)
|
* @copyright Dassault Systemes
|
*/
|
import { qCustomMatcher } from '../../../e2elib/lib/src/main/qmatchers.const';
|
import { AppMP, Demo, Scenario } from '../../../libmp/appmp';
|
import { DataFoodBaseEntityName } from '../../../libmp/data/data.navigation';
|
import { DataFoodBaseAccountName } from '../../../libmp/data/data.account';
|
import { DialogUnitCost } from '../../../libmp/dialogs/dialog.unitcost';
|
import { ListUnitCostColumn, ListUnitCost } from '../../../libmp/forms/form.unitcost';
|
import { startOfPlanningYear } from '../../../libmp/data/data.period';
|
|
describe('ADSO-10114 - Edit unit cost - multiple costs selection of same cost driver', () => {
|
const appMP = AppMP.getInstance();
|
const unit = DataFoodBaseEntityName.DEFermenter;
|
const account = DataFoodBaseAccountName.GeneralFixedCosts;
|
let costDriver: string;
|
let startDate: Date; // Existing unit's cost
|
let cost: string; // Existing unit's cost
|
const janSOPMinus1 = `1-Jan-${startOfPlanningYear - 1}`;
|
const janSOP = `1-Jan-${startOfPlanningYear}`;
|
const newStartDate = new Date(janSOP);
|
const newCost = 100;
|
const newTimeUnit = 'Quarter';
|
const newLengthTime = 2;
|
let listUnitCost: ListUnitCost;
|
let dlgUnitCost: DialogUnitCost;
|
|
beforeAll(async () => {
|
jasmine.addMatchers(qCustomMatcher);
|
await appMP.login();
|
});
|
|
afterAll(async () => {
|
await appMP.cleanupAndLogout();
|
});
|
|
afterEach(async () => {
|
await appMP.checkToastMessage();
|
});
|
|
it(`Setup - ${AppMP.getDemoDataPath(Demo.Food, Scenario.Base)}`, async () => {
|
await appMP.createDemoDataset(Demo.Food, Scenario.Base, false);
|
});
|
|
it(`Setup - Open view ${appMP.viewUnitCost.viewPath}. Verify ${unit} exist`, async () => {
|
// Open unit cost view
|
await appMP.viewUnitCost.switchTo();
|
listUnitCost = appMP.viewUnitCost.frmUnitCost.listUnitCost;
|
// Filter by DE Fermenter
|
await appMP.formNavigation.filterByEntity(unit, [DataFoodBaseEntityName.Europe, DataFoodBaseEntityName.Plants, DataFoodBaseEntityName.DenmarkPlant]);
|
// Verify 1 DE Fermenter Unit Cost exist in the list
|
await listUnitCost.waitForScreenUpdate();
|
expect(await listUnitCost.getRowCount()).toBe(1, `Exactly one ${unit} Unit Cost should exist in the list`);
|
});
|
|
it(`Step 1 - Create second ${unit} Unit Cost by copying the existing`, async () => {
|
// Get the Unit Cost list
|
listUnitCost = appMP.viewUnitCost.frmUnitCost.listUnitCost;
|
|
// Get the Unit Cost row based on Unit and Account name
|
const unitCostRow = await listUnitCost.getRowByIndex(0);
|
|
// Open UnitCost dialog for copying
|
await listUnitCost.openEditDialog(unitCostRow, true);
|
dlgUnitCost = listUnitCost.dlgUnitCost;
|
await dlgUnitCost.waitUntilPresent();
|
// Store current values for Cost Driver, Start Date and Cost to verify that they will remain unchanged after batch edit below
|
({ costDriver, startDate, cost } = await dlgUnitCost.getDialogValues());
|
|
await dlgUnitCost.updateUnitCostValue(undefined, undefined, undefined, newStartDate, undefined, undefined, newCost);
|
await dlgUnitCost.clickOK();
|
});
|
|
it('Step 2 - Open Batch Edit dialog and verify the fields are disabled and batch edit checkboxes are present', async () => {
|
await listUnitCost.selectListRowsByIndex([0], true);
|
await listUnitCost.openEditDialog((await listUnitCost.getInboundSelectedRows())[0], false);
|
const verifyDialogFields = await dlgUnitCost.verifyBatchEditFieldAccess();
|
expect(verifyDialogFields.length).toBe(0, `${verifyDialogFields.join('\n')}`);
|
});
|
|
it('Step 3 - Batch edit Unit Costs', async () => {
|
// Click checkbox to enable Time Unit field and verify it is enabled
|
await dlgUnitCost.cbBatchEditTimeUnit.click();
|
expect(await dlgUnitCost.ddlTimeUnit.isDisabled()).toBe(false, '"Time Unit" field should be enabled after its checkbox is checked');
|
// Click checkbox to enable Length of Time field and verify it is enabled
|
await dlgUnitCost.cbBatchEditLengthOfTime.click();
|
expect(await dlgUnitCost.ddlTimeUnit.isDisabled()).toBe(false, '"Length of Time" field should be enabled after its checkbox is checked');
|
// Update the values
|
await dlgUnitCost.updateUnitCostValue(undefined, undefined, undefined, undefined, newTimeUnit, newLengthTime);
|
await dlgUnitCost.clickOK();
|
});
|
|
it('Step 4 - Verify that "Time Unit" and "Length of Time" values are updated and other values remain the same', async () => {
|
// get previous and new Unit Cost based on start date
|
const previousUnit = await listUnitCost.getRowByValue([{ columnID: ListUnitCostColumn.Start, value: janSOPMinus1 }]);
|
const newUnit = await listUnitCost.getRowByValue([{ columnID: ListUnitCostColumn.Start, value: janSOP }]);
|
|
// Verify values of the previous Unit Cost
|
await previousUnit.leftClick();
|
await listUnitCost.openEditDialog(previousUnit);
|
await dlgUnitCost.waitUntilPresent();
|
let verifyDialogValuesFeedback = await dlgUnitCost.verifyDialogValue(account, costDriver, unit, startDate, newTimeUnit, newLengthTime, Number(cost));
|
expect(verifyDialogValuesFeedback.length).toBe(0, verifyDialogValuesFeedback.join('. '));
|
await dlgUnitCost.clickCancel();
|
|
// Verify values of the new Unit Cost
|
await listUnitCost.openEditDialog(newUnit);
|
await dlgUnitCost.waitUntilPresent();
|
verifyDialogValuesFeedback = await dlgUnitCost.verifyDialogValue(account, costDriver, unit, newStartDate, newTimeUnit, newLengthTime, newCost);
|
expect(verifyDialogValuesFeedback.length).toBe(0, verifyDialogValuesFeedback.join('. '));
|
await dlgUnitCost.clickCancel();
|
});
|
});
|