| /** | 
|  * @file         ADSO-10186 | 
|  * @description  Edit stocking cost - multiple costs selection of same UoM(only update Cost) | 
|  * @testCategory Web - Financials - Stocking points | 
|  * @author       Jayden Chew (jayden.chew@3ds.com) | 
|  * @copyright    Dassault Systemes | 
|  */ | 
| import { qCustomMatcher } from '../../../e2elib/lib/src/main/qmatchers.const'; | 
| import { LogMessage } from '../../../libappbase/logmessage'; | 
| import { AppMP, Demo, Scenario } from '../../../libmp/appmp'; | 
| import { DialogStockingCost } from '../../../libmp/dialogs/dialog.stockingcost'; | 
| import { ListStockingCostColumn } from '../../../libmp/forms/form.stockingcost'; | 
| import { DataFoodBaseEntityName } from '../../../libmp/data/data.navigation'; | 
| import { DataFoodBaseAccountName, DataFoodBaseAccountCost } from '../../../libmp/data/data.account'; | 
|   | 
| describe('ADSO-10186 -  Edit stocking cost - multiple costs selection of same UoM', () => { | 
|   const appMP = AppMP.getInstance(); | 
|   let dlgStockingCost: DialogStockingCost; | 
|   | 
|   const listStockingCost = appMP.viewStockingCost.frmStockingCost.lstStockingCost; | 
|   const accountName = DataFoodBaseAccountName.GeneralFixedCosts; | 
|   const stockingPointarray = [DataFoodBaseEntityName.DCAustria, DataFoodBaseEntityName.DCBulgaria]; | 
|   const costDriverArr: string[] = []; | 
|   const uomArr: string[] = []; | 
|   const startArr: string[] = []; | 
|   const endArr: string[] = []; | 
|   const _999 = DataFoodBaseAccountCost._999.toString(); | 
|   | 
|   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.viewStockingCost.viewPath}.`, async () => { | 
|     await appMP.viewStockingCost.switchTo(); | 
|     expect(listStockingCost.isVisible()).toBe(true, 'The Stocking cost list is not visible.'); | 
|   }); | 
|   | 
|   it('Step 1 - Select both general fix costs for DC - Austria and DC - Bulgaria.', async () => { | 
|     for (const [index, sp] of stockingPointarray.entries()) { | 
|       const row = await listStockingCost.getRowByValue([ | 
|         { columnID: ListStockingCostColumn.StockingPoint, value: sp }, | 
|         { columnID: ListStockingCostColumn.Account, value: accountName }, | 
|       ]); | 
|       const { CostDriver, UoM, Start, End } = await listStockingCost.getCellValuesFromRow(row, ListStockingCostColumn); | 
|   | 
|       // store in array to be checked in step 5 | 
|       costDriverArr.push(CostDriver); | 
|       uomArr.push(UoM); | 
|       startArr.push(Start); | 
|       endArr.push(End); | 
|   | 
|       // select both DC - Austria and DC - Bulgaria | 
|       const modifiers = index !== 0 ? { control: true } : undefined; | 
|       await row.leftClick(modifiers); | 
|     } | 
|   }); | 
|   | 
|   it('Step 2 - Right click Edit.', async () => { | 
|     dlgStockingCost = await listStockingCost.openEditStockingCostDialog(); | 
|     // check is disabled for dropdown list | 
|     const feedbacks = await dlgStockingCost.verifyBatchEditFieldAccess(); | 
|     expect(feedbacks.length).toEqual(0, `${feedbacks.join('\n')}`); | 
|   }); | 
|   // Select Cost to batch edit. | 
|   it('Step 3 - Select Cost to batch edit. Verify Cost field enabled.', async () => { | 
|     await dlgStockingCost.cbIsBatchEditCost.toggle(true); | 
|     expect(await dlgStockingCost.cbIsBatchEditCost.isChecked()).toBe(true, LogMessage.checkbox_isDisabled(dlgStockingCost.cbIsBatchEditCost.componentName)); | 
|     expect(await dlgStockingCost.efCost.isDisabled()).toBe(false, LogMessage.edt_isDisabled(dlgStockingCost.efCost.componentName)); | 
|   }); | 
|   | 
|   it('Step 4 - Update Cost = 999. Click OK..', async () => { | 
|     await dlgStockingCost.efCost.sendInput(_999); | 
|   | 
|     const [isOkButtonClickable, btnDisabledTooltip] = await dlgStockingCost.btnOk.verifyIsButtonClickable(); | 
|     expect(isOkButtonClickable).toBe(true, LogMessage.btn_notClickable('Ok', btnDisabledTooltip)); | 
|     await dlgStockingCost.btnOk.click(); | 
|   }); | 
|   | 
|   it('Step 5 - Verify both costs updated to 999 but other fields remain unchanged.', async () => { | 
|     for (const [index, sp] of stockingPointarray.entries()) { | 
|       const row = await listStockingCost.getRowByValue([ | 
|         { columnID: ListStockingCostColumn.StockingPoint, value: sp }, | 
|         { columnID: ListStockingCostColumn.Account, value: accountName }, | 
|       ]); | 
|       const { CostDriver, UoM, Start, End, Cost } = await listStockingCost.getCellValuesFromRow(row, ListStockingCostColumn); | 
|       expect(CostDriver).toBe(costDriverArr[index], LogMessage.value_notMatched(costDriverArr[index], CostDriver)); | 
|       expect(UoM).toBe(uomArr[index], LogMessage.value_notMatched(uomArr[index], UoM)); | 
|       expect(Start).toBe(startArr[index], LogMessage.value_notMatched(startArr[index], Start)); | 
|       expect(End).toBe(endArr[index], LogMessage.value_notMatched(endArr[index], End)); | 
|       expect(Cost).toBe(_999, LogMessage.value_notMatched(_999, Cost)); | 
|     } | 
|   }); | 
| }); |