/**
|
* @file ADSO-10170
|
* @description Copy operation cost via action bar (single cost selection Operating cost)
|
* @testcategory Web - Financials - Operations
|
* @author Gay Er Xuan (erxuan.gay@3ds.com)
|
* @copyright Dassault Systemes
|
*/
|
import { qCustomMatcher } from '../../../e2elib/lib/src/main/qmatchers.const';
|
import { AppMP, Demo, Scenario } from '../../../libmp/appmp';
|
import { DataFoodBaseEntity, DataFoodBaseEntityName } from '../../../libmp/data/data.navigation';
|
import { DataOperationAccount, DataOperationCostCost, DataOperationCostCostDriver, DataOperationCostUoM } from '../../../libmp/data/data.operationcost';
|
import { startOfPlanningYear } from '../../../libmp/data/data.period';
|
import { ListColumnOperationCost } from '../../../libmp/forms/form.operationcost';
|
|
describe('ADSO-10170 - Copy operation cost via action bar (single cost selection Operating cost)', () => {
|
const appMP = AppMP.getInstance();
|
const listOperationCost = appMP.viewOperationCost.frmOperationCost.listOperationCost;
|
const dlgOperationCost = listOperationCost.dlgOperationCost;
|
let eopString: string;
|
let sopYear: string;
|
const unit = DataFoodBaseEntityName.DEFermenter;
|
const unitParents = DataFoodBaseEntity.deUnitsParents;
|
const firstCostStartString = `1-Jan-${startOfPlanningYear - 1}`;
|
let newCostStartString = '1-Feb-'; // Year to be assigned after getting sopYear
|
const account = DataOperationAccount.OperatingCostAccountName;
|
const costDriver = DataOperationCostCostDriver.Volume;
|
let operation: string;
|
const cost = DataOperationCostCost.Cost700;
|
const uom = DataOperationCostUoM.EuroPerMT;
|
|
beforeAll(async () => {
|
jasmine.addMatchers(qCustomMatcher);
|
await appMP.login();
|
});
|
|
afterAll(async () => {
|
// Reset views and navigation
|
await appMP.formNavigation.reset();
|
await appMP.viewOperationCost.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 start and end of planning`, async () => {
|
// Open Periods view
|
await appMP.viewPeriod.switchTo();
|
const formPeriod = appMP.viewPeriod.frmPeriod;
|
({ eopString, sopYear } = await formPeriod.getStartAndEndOfPlanning());
|
newCostStartString = newCostStartString + sopYear;
|
});
|
|
it(`Setup - Open view ${appMP.viewOperationCost.viewPath}. Verify operating cost exists for ${unit} for ${firstCostStartString} and Cost = ${cost}`, async () => {
|
// Open operation cost view
|
await appMP.viewOperationCost.switchTo();
|
// Toggle ON Filter by Accounts
|
const cbFilterByAcc = appMP.viewOperationCost.frmOperationCost.cbFilterByAccounts;
|
await appMP.viewOperationCost.frmOperationCost.toggleFilterByAccount(true);
|
expect(await cbFilterByAcc.isChecked()).toBe(true, 'Filter by Accounts should be toggled to ON');
|
// Click on operation account
|
const accRow = await appMP.viewOperationCost.frmOperationsAccount.listOperationAccount.getOperationAccountByName(account);
|
await accRow.leftClick();
|
// Filter by unit
|
await appMP.formNavigation.filterByEntity(unit, unitParents);
|
// Verify 1 operation cost exist in the list
|
await listOperationCost.waitForScreenUpdate();
|
expect(await listOperationCost.getRowCount()).toBe(1, `There should be exactly one operating cost exists for ${unit}`);
|
// Verify account, start, and cost of the operation cost
|
const operationCost = await listOperationCost.getRowByIndex(0);
|
expect(await listOperationCost.getCellValueFromRow(ListColumnOperationCost.Account, operationCost)).toBe(account, `Account of the ${unit} operation cost should be ${account}`);
|
expect(await listOperationCost.getCellValueFromRow(ListColumnOperationCost.Start, operationCost)).toBe(firstCostStartString, `Start of the ${unit} operation cost should be ${firstCostStartString}`);
|
expect(await listOperationCost.getCellValueFromRow(ListColumnOperationCost.Cost, operationCost)).toBe(cost.toString(), `Cost of the ${unit} operation cost should be ${cost}`);
|
});
|
|
it('Step 1 - Open copy single operation cost dialog via action bar, verify the default value in dialog and OK button disabled with precondition', async () => {
|
// Open copy dialog
|
const operationCostRow = await listOperationCost.getRowByIndex(0);
|
operation = await listOperationCost.getCellValueFromRow(ListColumnOperationCost.Operation, operationCostRow);
|
await operationCostRow.leftClick();
|
await appMP.abpData.btnCopy.click();
|
await dlgOperationCost.waitUntilPresent();
|
// Verify field value in dialog
|
const verifyBeforeDialogFeedbacks: string[] = await dlgOperationCost.verifyDialogValue(account, costDriver, operation, new Date(firstCostStartString), cost);
|
expect(verifyBeforeDialogFeedbacks.length).toBe(0, `${verifyBeforeDialogFeedbacks.join(', \n')}`);
|
// Verify OK button is disabled with precondition
|
expect(await dlgOperationCost.clickOK()).toBe(false, 'OK button should be disabled');
|
expect(await dlgOperationCost.getDialogFeedback()).toBe('Identical cost definition exists. Operation cost must be unique by Account, Cost driver and Start date.', 'Feedback text should match');
|
});
|
|
it('Step 2 - Update start date and verify operation cost created successfully', async () => {
|
// Update start value
|
await dlgOperationCost.dtsStart.setDate(new Date(newCostStartString));
|
expect(await dlgOperationCost.clickOK()).toBe(true, 'OK button should be enabled');
|
// Verify row created with correct values in dialog
|
const previousOperationCostRow = await listOperationCost.getRowByCellValue(ListColumnOperationCost.Start, firstCostStartString);
|
const newOperationCost = await listOperationCost.getRowByCellValue(ListColumnOperationCost.Start, newCostStartString);
|
await listOperationCost.openCreateEditUnitCostDialog(newOperationCost);
|
const verifyFeedbacks = await dlgOperationCost.verifyDialogValue(account, costDriver, operation, new Date(newCostStartString), cost);
|
expect(verifyFeedbacks.length).toBe(0, `${verifyFeedbacks.join(', \n')}`);
|
await dlgOperationCost.clickCancel();
|
// Verify UoM, Start, and End column value of the new row
|
expect(await listOperationCost.getCellValueFromRow(ListColumnOperationCost.UoM, newOperationCost)).toBe(uom, `UoM should be ${uom}`);
|
expect(await listOperationCost.getCellValueFromRow(ListColumnOperationCost.Start, newOperationCost)).toBe(newCostStartString, `Start should be ${newCostStartString}`);
|
expect(await listOperationCost.getCellValueFromRow(ListColumnOperationCost.End, newOperationCost)).toBe(eopString, `End should be ${eopString}`);
|
// Verify Start and End column value of the previous operation cost
|
expect(await listOperationCost.getCellValueFromRow(ListColumnOperationCost.Start, previousOperationCostRow)).toBe(firstCostStartString, `Start should be ${firstCostStartString}`);
|
expect(await listOperationCost.getCellValueFromRow(ListColumnOperationCost.End, previousOperationCostRow)).toBe(newCostStartString, `End should be ${newCostStartString}`);
|
});
|
});
|