/**
|
* @file ADSO-10105
|
* @description Create unit cost by drag & drop single unit onto account
|
* @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 { ColumnIDValueMap } from '../../../libappbase/listbase';
|
import { AppMP, Demo, Scenario } from '../../../libmp/appmp';
|
import { DataFoodBaseEntity, DataFoodBaseEntityName } from '../../../libmp/data/data.navigation';
|
import { DataFoodBaseAccountName, DataFoodBaseAccountCostDriver, DataFoodBaseAccountUoM, CostLabel } from '../../../libmp/data/data.account';
|
import { ListUnitCostColumn } from '../../../libmp/forms/form.unitcost';
|
|
describe('ADSO-10105 - Create unit cost by drag & drop single unit onto account', () => {
|
const appMP = AppMP.getInstance();
|
let listUnitCost = appMP.viewUnitCost.frmUnitCost.listUnitCost;
|
let dlgUnitCost = listUnitCost.dlgUnitCost;
|
let stockingPointRow: ListRow;
|
let accountRow: ListRow;
|
let newDEFermenterStartDate: Date;
|
let newDEFermenterStartString: string;
|
let endOfPlanningString: string;
|
let sopYear: string;
|
|
const accDefaultCost = 100;
|
const newCost = 200;
|
const entity = DataFoodBaseEntityName.DEFermenter;
|
const accName = DataFoodBaseAccountName.ChangeoverCost;
|
const accParentName = DataFoodBaseAccountName.CostOfSales;
|
const costDriver = DataFoodBaseAccountCostDriver.Changeover;
|
|
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.viewPeriod.viewPath} and get the start and end of planning period`, async () => {
|
await appMP.viewPeriod.switchTo();
|
const formPeriod = appMP.viewPeriod.frmPeriod;
|
({ sopYear, eopString: endOfPlanningString } = await formPeriod.getStartAndEndOfPlanning());
|
newDEFermenterStartDate = new Date(Number(sopYear), 1, 1);
|
newDEFermenterStartString = `1-Feb-${sopYear}`;
|
});
|
|
it(`Setup - Open view ${appMP.viewAccount.viewPath}`, async () => {
|
await appMP.viewAccount.switchTo();
|
});
|
|
it(`Setup - Configure the ${accName} account with default cost "${accDefaultCost}"`, async () => {
|
const listAccount = appMP.viewAccount.frmAccount.listAccount;
|
|
const parentRow = await listAccount.getRow({ Name: accParentName });
|
await parentRow.expandRow();
|
|
const accRow = await listAccount.getRow({ Name: accName });
|
const dlgAccount = await listAccount.openAcountDialogViaEditContextMenu(accRow);
|
|
await dlgAccount.efCost.sendInput(accDefaultCost.toString());
|
expect(await dlgAccount.clickOK()).toBe(true, `Should be able to edit cost of ${accName} to ${accDefaultCost.toString()}`);
|
});
|
|
it(`Setup - Open view ${appMP.viewUnitCost.viewPath}`, async () => {
|
await appMP.viewUnitCost.switchTo();
|
});
|
|
it(`Setup - Verify no ${accName} created for ${entity} in "Unit Costs" list`, async () => {
|
listUnitCost = appMP.viewUnitCost.frmUnitCost.listUnitCost;
|
// Filter by DE Fermenter
|
await appMP.formNavigation.filterByEntity(entity, DataFoodBaseEntity.deUnitsParents);
|
stockingPointRow = await appMP.formNavigation.listEntity.getEntityRowByName(entity);
|
// Verify no changeover cost created
|
const row = await listUnitCost.getRowByValue([{ columnID: ListUnitCostColumn.Account, value: accName }]).catch(() => {
|
// do nothing as error is thrown due to no row is found
|
});
|
expect(row).toBeUndefined(`No ${accName} should be created for ${entity}`);
|
});
|
|
it(`Step 1 - Drag unit "${entity}" from navigation panel and drop onto "${accName}" account and verify default values in the pop up dialog`, async () => {
|
const listAccount = appMP.viewUnitCost.frmUnitAccount.listAccount;
|
|
accountRow = await listAccount.getRow({ Account: accName }); // Get account row
|
dlgUnitCost = await listUnitCost.dragEntityToCreateUnitCost(stockingPointRow, accountRow);
|
expect(await dlgUnitCost.isVisible()).toBe(true, 'Unit cost dialog should be visible');
|
|
// Verify dialog default value
|
const feedback = await listUnitCost.dlgUnitCost.verifyDialogValue(accName, costDriver, entity, new Date(Number(sopYear), 0, 1), undefined, undefined, 100);
|
expect(feedback.length).toBe(0, feedback.join('. '));
|
});
|
|
it(`Step 2 - Set start value to "1-Feb-(year of SOP)" and cost value to "${newCost}" in the dialog. Then click Ok button`, async () => {
|
// Update dialog value and confirm the dialog
|
await dlgUnitCost.updateUnitCostValue(accName, costDriver, entity, newDEFermenterStartDate, undefined, undefined, newCost);
|
expect(await listUnitCost.dlgUnitCost.efCost.getComponentLabel()).toBe(CostLabel.euro(costDriver), `Label of cost should be "${CostLabel.euro(costDriver)}"`);
|
expect(await dlgUnitCost.clickOK()).toBe(true, 'Should be able to create unit cost');
|
});
|
|
it('Step 3 - In the "Unit Cost" list, verify unit cost row created with correct values', async () => {
|
let newDeDefermenterRow: ListRow | undefined;
|
const columnValueMap = [
|
{ columnID: ListUnitCostColumn.Unit, value: entity },
|
{ columnID: ListUnitCostColumn.Account, value: accName },
|
{ columnID: ListUnitCostColumn.CostDriver, value: costDriver },
|
{ columnID: ListUnitCostColumn.Start, value: newDEFermenterStartString },
|
{ columnID: ListUnitCostColumn.End, value: endOfPlanningString },
|
{ columnID: ListUnitCostColumn.UoM, value: `${DataFoodBaseAccountUoM.EuroPer}${costDriver}` },
|
];
|
|
try {
|
await listUnitCost.getRowByValue(columnValueMap);
|
} catch {
|
const values = columnValueMap.map((el: ColumnIDValueMap) => el.value);
|
expect(newDeDefermenterRow).toBeDefined(`New row with values "${values.join(', ')}" should be found in "UnitCost" list`);
|
}
|
});
|
});
|