| /** | 
|  * @file         ADSO-10108 | 
|  * @description  Non unique unit cost should not be allowed to create | 
|  * @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 { ListRow } from '../../../e2elib/lib/src/pageobjects/list/listrow.component'; | 
| import { ListUnitCost } from '../../../libmp/forms/form.unitcost'; | 
| import { startOfPlanningYear } from '../../../libmp/data/data.period'; | 
|   | 
| describe('ADSO-10108 - Non unique unit cost should not be allowed to create', () => { | 
|   const appMP = AppMP.getInstance(); | 
|   let listUnitCost: ListUnitCost; | 
|   const janSOPMinus1 = `1-Jan-${startOfPlanningYear - 1}`; | 
|   const janSOP = `1-Jan-${startOfPlanningYear}`; | 
|   | 
|   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.viewUnitCost.viewPath}. Verify DE Fermenter exist`, async () => { | 
|     // Open Unit Costs view | 
|     await appMP.viewUnitCost.switchTo(); | 
|     // Open navigation form | 
|     expect(await appMP.formNavigation.isVisible()).toBe(true, 'Navigation form should be visible'); | 
|     await appMP.formNavigation.btnEntity.click(); | 
|     const listEntity = appMP.formNavigation.listEntity; | 
|     await listEntity.waitUntilPresent(); | 
|     // Select DE Fermenter | 
|     const row = await listEntity.getEntityRowByName('DE Fermenter', ['Europe', 'Plants', 'Denmark Plant']); | 
|     await row.checkboxClick(); | 
|     // Verify 1 DE Fermenter Unit Cost exist in the list | 
|     listUnitCost = appMP.viewUnitCost.frmUnitCost.listUnitCost; | 
|     const unitCostRow: ListRow | undefined = await listUnitCost.getUnitCostRowByValues('DE Fermenter', 'General fixed costs', 'Fixed', janSOPMinus1); | 
|     expect(unitCostRow).toBeDefined('One DE Fermenter Unit Cost should exist in the list'); | 
|   }); | 
|   | 
|   it('Step 1 - Verify non unique unit cost is not allowed to create', async () => { | 
|     // Open create unit cost dialog | 
|     const dlgUnitCost = await listUnitCost.openEditDialog(); | 
|     // Update dialog | 
|     await dlgUnitCost.updateUnitCostValue('General fixed costs', 'Fixed', 'DE Fermenter', new Date(janSOPMinus1)); | 
|     // Verify OK button is disabled and feedback text is shown | 
|     expect(await dlgUnitCost.clickOK(1000)).toBe(false, 'Non unique unit cost should not be allowed to create'); | 
|     expect(await dlgUnitCost.getOKButtonTooltip()).toBe('Identical cost definition exists. Unit cost must be unique by Account, Cost driver and Start date.', 'Feedback text should match'); | 
|     // Update dialog | 
|     await dlgUnitCost.updateUnitCostValue('General fixed costs', 'Fixed', 'DE Fermenter', new Date(janSOP)); | 
|     // Verify OK button is enabled | 
|     expect(await dlgUnitCost.btnOk.isClickable(1000)).toBe(true, 'Unique unit cost should be allowed to create'); | 
|     // Cancel the dialog | 
|     await dlgUnitCost.clickCancel(); | 
|   }); | 
| }); |