/**
|
* @file ADSO-10174
|
* @description Stocking costs list is filtered by accounts
|
* @testcategory Web - Financials - Stocking points
|
* @author Adrian Foo (adrian.foo@3ds.com)
|
* @copyright Dassault Systèmes
|
*/
|
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 { LogMessage } from '../../../libappbase/logmessage';
|
import { AppMP, Demo, Scenario } from '../../../libmp/appmp';
|
import { DataFoodBaseEntityName } from '../../../libmp/data/data.navigation';
|
import { DataFoodBaseAccountCostDriver, DataFoodBaseAccountName, DataFoodBaseAccountTimeUnit } from '../../../libmp/data/data.account';
|
import { ListAccountColumn } from '../../../libmp/forms/form.inventoryaccounts';
|
import { ListStockingCostColumn } from '../../../libmp/forms/form.stockingcost';
|
import { ActionTriggerType } from '../../../libappbase/utils';
|
import { ListAccountContextMenuItem } from '../../../libmp/forms/form.account';
|
|
describe('ADSO-10174 - Stocking costs list is filtered by accounts', () => {
|
// Componenet used
|
const appMP = AppMP.getInstance();
|
const viewStockingCost = appMP.viewStockingCost;
|
const formStockingAccount = viewStockingCost.frmStockingAccount;
|
const formStockingCost = viewStockingCost.frmStockingCost;
|
const listStockingAccount = formStockingAccount.lstStockingAccount;
|
const listStockingCost = formStockingCost.lstStockingCost;
|
const listAccount = appMP.viewAccount.frmAccount.listAccount;
|
const navigationPanel = appMP.formNavigation;
|
|
// Variable used across multiple steps
|
const accNameGFC = DataFoodBaseAccountName.GeneralFixedCosts;
|
const accNameSC = DataFoodBaseAccountName.StockingCosts;
|
const stockingPoint = DataFoodBaseEntityName.DCAustria;
|
const accDefaultCost = 12345;
|
const costDriver = DataFoodBaseAccountCostDriver.Fixed;
|
|
beforeAll(async () => {
|
jasmine.addMatchers(qCustomMatcher);
|
await appMP.login();
|
});
|
|
afterAll(async () => {
|
await appMP.viewAccount.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.viewAccount.viewPath}`, async () => {
|
await appMP.viewAccount.switchTo();
|
});
|
|
it(`Setup - In Accounts list, create account "${accNameSC}" with cost driver = "${costDriver}" and default cost = "${accDefaultCost}"`, async () => {
|
const [dlgAccount] = await listAccount.selectContextMenu(ListAccountContextMenuItem.Create);
|
await dlgAccount.updateDialogValues({ ParentAccountName: '', Name: accNameSC, CostDriver: costDriver, Cost: accDefaultCost.toString(), TimeUnit: DataFoodBaseAccountTimeUnit.Year, LengthOfTime: '1' });
|
|
await dlgAccount.clickOK();
|
await listAccount.verifyRowExists({ Name: accNameSC });
|
});
|
|
it(`Setup - Open view ${appMP.viewStockingCost.viewPath}`, async () => {
|
await appMP.viewStockingCost.switchTo();
|
});
|
|
it(`Setup - Ensure a stocking point cost is created for "${stockingPoint}" under account "${accNameSC}" with default value`, async () => {
|
const searchCriteria: ColumnIDValueMap[] = [
|
{ columnID: ListStockingCostColumn.Account, value: accNameSC },
|
{ columnID: ListStockingCostColumn.StockingPoint, value: stockingPoint },
|
{ columnID: ListStockingCostColumn.Cost, value: accDefaultCost.toLocaleString('en') },
|
];
|
|
const dlgStockingCost = await listStockingCost.openStockingCostDialog(ActionTriggerType.ContextMenu);
|
await dlgStockingCost.ddlAccount.selectItemSOP(accNameSC);
|
await dlgStockingCost.ddlStockingPoint.selectItemSOP(stockingPoint);
|
await dlgStockingCost.clickOK();
|
const stockingcostRow: ListRow | undefined = await listStockingCost.getRowByValue(searchCriteria);
|
expect(stockingcostRow).toBeDefined(LogMessage.row_notFound(`${accNameSC} with ${stockingPoint} stocking point`));
|
});
|
|
it('Step 1 - Click "Home" in navigation panel. Then, toggle on "Filter by Accounts" checkbox', async () => {
|
await navigationPanel.resetNaviToRoot();
|
await formStockingCost.cbFilterByAccount.toggle(true);
|
expect(await formStockingCost.cbFilterByAccount.isChecked()).toBe(true, LogMessage.checkbox_isChecked('Filter by Accounts'));
|
});
|
|
it(`Step 2 - In "Stocking Accounts" form, select "${accNameGFC}" account and verify "Stocking Costs" list showing 17 "${accNameGFC}".`, async () => {
|
await listStockingAccount.selectListRowsByValue([[{ columnID: ListAccountColumn.Account, value: accNameGFC }]]);
|
await listStockingCost.waitForScreenUpdate(2000);
|
|
// verification
|
const allRows = await listStockingCost.getAllRows();
|
expect(allRows.length).toBe(17, 'Expect 17 rows to be found in "Stocking Cost" list');
|
const areAllFixedCost = await listStockingCost.rowHasValidValue(allRows, ListStockingCostColumn.Account, accNameGFC);
|
expect(areAllFixedCost).toBe(true, `Expect "Acount" of all rows in "Stocking Cost" list to be ${accNameGFC}`);
|
});
|
|
it(`Step 3 - In "Stocking Accounts" form, select "${accNameSC}" account and verify "Stocking Costs" list showing 1 "${accNameSC}" of ${stockingPoint}.`, async () => {
|
await listStockingAccount.selectListRowsByValue([[{ columnID: ListAccountColumn.Account, value: accNameSC }]]);
|
await listStockingCost.waitForScreenUpdate(2000);
|
|
// Verification
|
const allRows = await listStockingCost.getAllRows();
|
expect(allRows.length).toBe(1, 'Expect 1 rows to be found in "Stocking Cost" list');
|
const areAllStockingCost = await listStockingCost.rowHasValidValue(allRows, ListStockingCostColumn.Account, accNameSC);
|
expect(areAllStockingCost).toBe(true, `Expect "Acount" of all rows in "Stocking Cost" list to be ${accNameSC}`);
|
});
|
|
it(`Step 4 - Toggle off "Filter by Accounts" checkbox in "Stocking Costs" form and verify that now there are 18 Stocking Costs instances (1 ${accNameSC} and 17 ${accNameGFC})`, async () => {
|
await formStockingCost.cbFilterByAccount.toggle(false);
|
|
// Verification
|
const allRows = await listStockingCost.getAllRows();
|
expect(allRows.length).toBe(18, 'Expect 18 rows to be found in "Stocking Cost" list');
|
const allRowsAccountType = await listStockingCost.getCellValueFromRow(ListStockingCostColumn.Account, allRows);
|
const nrOfStockingCost = allRowsAccountType.filter((account: string) => account === accNameSC).length;
|
const nrOfFixedCost = allRowsAccountType.filter((account: string) => account === accNameGFC).length;
|
expect(nrOfStockingCost).toBe(1, `Expect 1 "${accNameSC}" row to be found in "Stocking Costs" list`);
|
expect(nrOfFixedCost).toBe(17, `Expect 17 "${accNameGFC}" row to be found in "Stocking Costs" list`);
|
});
|
});
|