Lai,Risheng
2023-11-02 30c02e0c981b16be0918483543f4b812956c45d4
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
/**
 * @file         ADSO-10109
 * @description  Edit start and cost of single unit cost and verify the result
 * @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 { AppMP, Demo, Scenario } from '../../../libmp/appmp';
import { ListUnitCost, ListUnitCostColumn } from '../../../libmp/forms/form.unitcost';
import { DataFoodBaseAccountUoM } from '../../../libmp/data/data.account';
import { startOfPlanningYear } from '../../../libmp/data/data.period';
 
describe('ADSO-10109 - Edit start and cost of single unit cost and verify the result', () => {
  const appMP = AppMP.getInstance();
  let listUnitCost: ListUnitCost;
  let startOfPlanningDate: Date;
  let eopString: string;
  let sopYear: string;
  const janSOPMinus1 = `1-Jan-${startOfPlanningYear - 1}`;
 
  const uom = DataFoodBaseAccountUoM.EuroPerMonth;
 
  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}. Get start and end of planning`, async () => {
    // Open Periods view
    await appMP.viewPeriod.switchTo();
    const formPeriod = appMP.viewPeriod.frmPeriod;
    ({ startOfPlanningDate, sopYear, eopString } = await formPeriod.getStartAndEndOfPlanning());
  });
 
  it(`Setup - Open view ${appMP.viewAccount.viewPath}. Verify General fixed costs exists with cost driver Fixed & UoM as € / Month`, async () => {
    await appMP.viewAccount.switchTo();
 
    // Verify General fixed costs exists with cost driver Fixed
    const listAccount = appMP.viewAccount.frmAccount.listAccount;
    const accRow = await listAccount.getRow({ Name: 'General fixed costs' }, [{ Name: 'Cost of sales' }]);
    await listAccount.verifyRowValues(accRow, { 'Default cost driver': 'Fixed' });
  });
 
  it(`Setup - Open view ${appMP.viewUnitCost.viewPath}. Verify General fixed costs exists with cost driver Fixed & UoM as € / Month`, async () => {
    // Open Unit Costs view
    await appMP.viewUnitCost.switchTo();
    const listUnitAccount = appMP.viewUnitCost.frmUnitAccount.listAccount;
    listUnitCost = appMP.viewUnitCost.frmUnitCost.listUnitCost;
    // Verify General fixed costs exists with UoM as € / Month.
    const account = await listUnitAccount.getRow({ Account: 'General fixed costs' });
    await listUnitAccount.verifyRowValues(account, { 'Default UoM': uom });
  });
 
  it('Setup - Verify DE Fermenter exist', async () => {
    // Filter by DE Fermenter
    await appMP.formNavigation.filterByEntity('DE Fermenter', ['Europe', 'Plants', 'Denmark Plant']);
    // Verify 1 DE Fermenter Unit Cost exist in the list
    await listUnitCost.waitForScreenUpdate();
    expect(await listUnitCost.getRowCount()).toBe(1, 'Exactly one DE Fermenter Unit Cost should exist in the list');
    const unitCost = await listUnitCost.getRowByIndex(0);
    expect(await (await unitCost.getCell(ListUnitCostColumn.Start)).getValue()).toBe(janSOPMinus1, `Start of the DE Fermenter unit cost should be ${janSOPMinus1}`);
  });
 
  it('Step 1 - Edit start and cost of single unit cost and verify the result', async () => {
    // Open create edit unit cost dialog
    const unitCost = await listUnitCost.getRowByIndex(0);
    const dlgUnitCost = await listUnitCost.openEditDialog(unitCost);
    // Verify all field in the dialog
    const verifyAfterDialogFeedback = await dlgUnitCost.verifyDialogValue('General fixed costs', 'Fixed', 'DE Fermenter', new Date(janSOPMinus1), 'Month', 1, 1000);
    expect(verifyAfterDialogFeedback.length).toBe(0, verifyAfterDialogFeedback.join('. '));
    // Update start and cost
    await dlgUnitCost.updateUnitCostValue(undefined, undefined, undefined, new Date(startOfPlanningDate.getFullYear(), 1, 1), undefined, undefined, 2000);
    await dlgUnitCost.clickOK();
    // Verify start and cost is updated
    expect(await listUnitCost.getCellValueFromRow(ListUnitCostColumn.Cost, unitCost)).toBe('2,000', 'Cost of DE Fermenter should be updated to 2,000');
    expect(await listUnitCost.getCellValueFromRow(ListUnitCostColumn.Start, unitCost)).toBe(`1-Feb-${sopYear}`, `Start of DE Fermenter should be updated to 1-Feb-${sopYear}`);
    expect(await listUnitCost.getCellValueFromRow(ListUnitCostColumn.End, unitCost)).toBe(eopString, `End of DE Fermenter should be ${eopString}`);
  });
});