/**
|
* @file ADSO-10111
|
* @description Edit single unit cost, not unique cost encountered
|
* @testcategory Web - Financials - Units
|
* @author Gay Er Xuan (erxuan.gay@3ds.com)
|
* @copyright Dassault Systemes
|
*/
|
import { qCustomMatcher } from '../../../e2elib/lib/src/main/qmatchers.const';
|
import { ListRow } from '../../../e2elib/lib/src/pageobjects/list/listrow.component';
|
import { asyncEvery } from '../../../libappbase/utils';
|
import { AppMP, Demo, Scenario } from '../../../libmp/appmp';
|
import { DataFoodBaseEntity, DataFoodBaseEntityName } from '../../../libmp/data/data.navigation';
|
import { startOfPlanningYear } from '../../../libmp/data/data.period';
|
import { DataFoodBaseUnitCost } from '../../../libmp/data/data.unitcost';
|
import { ListUnitCostColumn } from '../../../libmp/forms/form.unitcost';
|
|
describe('ADSO-10111 - Edit single unit cost, not unique cost encountered', () => {
|
const appMP = AppMP.getInstance();
|
const listUnitCost = appMP.viewUnitCost.frmUnitCost.listUnitCost;
|
let dlgUnitCost = listUnitCost.dlgUnitCost;
|
let sopYear: string;
|
let unitCostRow1: ListRow | undefined;
|
let unitCostRow2: ListRow | undefined;
|
const account = DataFoodBaseUnitCost.Account;
|
const costDriver = DataFoodBaseUnitCost.CostDriver;
|
const unit = DataFoodBaseEntityName.DEFermenter;
|
const unitCostStart1String = `1-Jan-${startOfPlanningYear - 1}`;
|
let unitCostStart2: Date;
|
let unitCostStart2String = '';
|
let editUnitCostStart = '';
|
|
beforeAll(async () => {
|
jasmine.addMatchers(qCustomMatcher);
|
await appMP.login();
|
});
|
|
afterAll(async () => {
|
// Clear demo data
|
await appMP.formNavigation.reset();
|
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.viewPeriod.viewPath}. Get sopYear and unit costs start date`, async () => {
|
// Open Periods view
|
await appMP.viewPeriod.switchTo();
|
const formPeriod = appMP.viewPeriod.frmPeriod;
|
({ sopYear } = await formPeriod.getStartAndEndOfPlanning());
|
unitCostStart2 = new Date(Number(sopYear), 1, 1);
|
unitCostStart2String = `${DataFoodBaseUnitCost.Start2}-${sopYear}`;
|
editUnitCostStart = `${DataFoodBaseUnitCost.EditStart}-${sopYear}`;
|
});
|
|
it(`Setup - Open view ${appMP.viewUnitCost.viewPath}. Verify 1 ${unit} exist with ${unitCostStart1String} as start date`, async () => {
|
// Open unit cost view
|
await appMP.viewUnitCost.switchTo();
|
// Filter by DE Fermenter
|
await appMP.formNavigation.filterByEntity(unit, DataFoodBaseEntity.deUnitsParents);
|
// 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`);
|
const unitCost = await listUnitCost.getRowByIndex(0);
|
const unitCostStart = await listUnitCost.getCellValueFromRow(ListUnitCostColumn.Start, unitCost);
|
expect(unitCostStart).toBe(unitCostStart1String, `Start of the ${unit} unit cost should be ${unitCostStart1String}`);
|
});
|
|
it(`Setup - Create a new ${unit} unit cost with start date ${DataFoodBaseUnitCost.Start2}-(SOP Year)`, async () => {
|
// Create new DE Fermenter unit cost
|
dlgUnitCost = await listUnitCost.openEditDialog();
|
await dlgUnitCost.updateUnitCostValue(account, costDriver, unit, unitCostStart2);
|
let btnDisabledTooltip = '';
|
const canClickOk = await dlgUnitCost.clickOK(1000);
|
if (!canClickOk) {
|
btnDisabledTooltip = await dlgUnitCost.getOKButtonTooltip();
|
}
|
expect(canClickOk).toBe(true, `OK button should be clickable. Ok button disabled with tooltip: ${btnDisabledTooltip}`);
|
unitCostRow2 = await listUnitCost.getUnitCostRowByValues(unit, account, costDriver, unitCostStart2String);
|
expect(unitCostRow2).toBeDefined(`New created ${unit} Unit Cost row with start date ${unitCostStart2String} should be found`);
|
});
|
|
it(`Step 1 - Edit UnitCostRow with ${unitCostStart1String} start value to ${DataFoodBaseUnitCost.Start2}-SOPYear and verify it is blocked with expected tooltip`, async () => {
|
// Open edit dialog and update it
|
unitCostRow1 = await listUnitCost.getUnitCostRowByValues(unit, account, costDriver, unitCostStart1String);
|
expect(unitCostRow1).toBeDefined(`${unit} UnitCost with start ${unitCostStart1String} should be found`);
|
dlgUnitCost = await listUnitCost.openEditDialog(unitCostRow1);
|
await dlgUnitCost.dtsStart.setDate(unitCostStart2);
|
let btnDisabledTooltip = '';
|
const canClickOk = await dlgUnitCost.clickOK(1000);
|
if (!canClickOk) {
|
btnDisabledTooltip = await dlgUnitCost.getOKButtonTooltip();
|
}
|
expect(canClickOk).toBe(false, 'Ok button should be disabled as start date of UnitCost should be unique');
|
expect(btnDisabledTooltip).toBe('Identical cost definition exists. Unit cost must be unique by Account, Cost driver and Start date.', `Feedback text should match. Current tooltip value: ${btnDisabledTooltip}`);
|
});
|
|
it(`Step 2 - Edit UnitCostRow with ${unitCostStart1String} start value to ${DataFoodBaseUnitCost.EditStart}-SOPYear and verify UnitCost can be edited`, async () => {
|
// Update dialog
|
await dlgUnitCost.dtsStart.setDate(new Date(editUnitCostStart));
|
let btnDisabledTooltip = '';
|
const canClickOk = await dlgUnitCost.clickOK(1000);
|
if (!canClickOk) {
|
btnDisabledTooltip = await dlgUnitCost.getOKButtonTooltip();
|
}
|
expect(canClickOk).toBe(true, `OK button should be clickable. Ok button disabled with tooltip: ${btnDisabledTooltip}`);
|
});
|
|
it(`Step 3 - Verify ${unit} UnitCost(s) start date value is either ${DataFoodBaseUnitCost.EditStart}-SOPYear and ${DataFoodBaseUnitCost.Start2}-SOPYear`, async () => {
|
const dateArray = [editUnitCostStart, unitCostStart2String];
|
const allUnitCostRows = await listUnitCost.getAllRows();
|
const isStartDateValueCorrect = await asyncEvery(allUnitCostRows, async (row: ListRow) => {
|
const value = await listUnitCost.getCellValueFromRow(ListUnitCostColumn.Start, row);
|
return dateArray.indexOf(value) > -1;
|
});
|
expect(isStartDateValueCorrect).toBe(true, `Start date of ${unit} UnitCost should be either ${editUnitCostStart} or ${unitCostStart2String}`);
|
});
|
});
|