haorenhui
2023-10-30 6d6cc10d9e8e242661da7fd655dec155a09d676c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/**
 * @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`);
  });
});