/** 
 | 
 * @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}`); 
 | 
  }); 
 | 
}); 
 |