| /** | 
|  * @file        ADSO-9577 | 
|  * @description Edit product | 
|  * @author      Chan Clarence (ccn7@3ds.com) | 
|  * @copyright   Dassault Systèmes | 
|  */ | 
| import { qCustomMatcher } from '../../e2elib/lib/src/main/qmatchers.const'; | 
| import { AppMP, Demo, Scenario } from '../../libmp/appmp'; | 
| import { DataFoodBaseProductName, DataLowFatStrawberry12 } from '../../libmp/data/data.navigation'; | 
| import { DataFoodBaseUoM } from '../../libmp/data/data.unitofmeasure'; | 
| import { DialogProduct } from '../../libmp/dialogs/dialog.product'; | 
| import { ListProductContextMenuItem } from '../../libmp/forms/form.product'; | 
|   | 
| describe('ADSO-9577 - Edit product', () => { | 
|   const appMP = AppMP.getInstance(); | 
|   let dlgProduct: DialogProduct; | 
|   const listProduct = appMP.viewProduct.frmProduct.listProduct; | 
|   | 
|   beforeAll(async () => { | 
|     jasmine.addMatchers(qCustomMatcher); | 
|     await appMP.login(); | 
|   }); | 
|   | 
|   afterAll(async () => { | 
|     await appMP.viewProduct.reset(); | 
|     await appMP.cleanupAndLogout(); | 
|   }); | 
|   | 
|   afterEach(async () => { | 
|     await appMP.checkToastMessage(); | 
|   }); | 
|   | 
|   it(`Step 1 - ${AppMP.getDemoDataPath(Demo.Food, Scenario.Base)}`, async () => { | 
|     await appMP.createDemoDataset(Demo.Food, Scenario.Base, false); | 
|   }); | 
|   | 
|   it(`Step 2 - Open view ${appMP.viewProduct.viewPath}.`, async () => { | 
|     await appMP.viewProduct.switchTo(); | 
|   }); | 
|   | 
|   it(`Step 3 - In Products list, edit ${DataFoodBaseProductName.LowFatStrawberry12pk}. | 
|       Verify parent = ${DataFoodBaseProductName.Lowfat}, Name & ID = ${DataFoodBaseProductName.LowFatStrawberry12pk} and Unit of Measurement = ${DataFoodBaseUoM.Pallet}.`, async () => { | 
|     const row = await listProduct.getRow({Name: DataFoodBaseProductName.LowFatStrawberry12pk}, DataLowFatStrawberry12.parents); | 
|     [dlgProduct] = await listProduct.selectContextMenu(ListProductContextMenuItem.Edit, row); | 
|     await dlgProduct.verifyDialogValues({ParentProduct: DataFoodBaseProductName.Lowfat, Name: DataFoodBaseProductName.LowFatStrawberry12pk, ID: DataFoodBaseProductName.LowFatStrawberry12pk, UoM: DataFoodBaseUoM.Pallet}); | 
|   }); | 
|   | 
|   it(`Step 4 - Edit parent = ${DataFoodBaseProductName.Greek}, Name = L12, ID = L12_ID and Unit of Measurement = ${DataFoodBaseUoM.Case}.`, async () => { | 
|     // Update parent to be one level up from Lowfat -> Greek | 
|     await dlgProduct.updateDialogValues({ParentProduct: DataFoodBaseProductName.Greek, Name: 'L12', UoM: DataFoodBaseUoM.Case}); | 
|   | 
|     // Separate the update as changing Name will auto update ID (by MP model). Allow time for this to finish before we override the ID. | 
|     await dlgProduct.updateDialogValues({ID: 'L12_ID'}); | 
|   }); | 
|   | 
|   it('Step 5 - Click on Advanced tab. Check checkbox for Shelf life and set 10. Check checkbox for Maturation and set 5. Click OK to save.', async () => { | 
|     await dlgProduct.pnlAdvanced.clickTab(); | 
|     await dlgProduct.updateDialogValues({ShelfLifeEnabled: 'true', ShelfLife: '10', MaturationEnabled: 'true', Maturation: '5'}); | 
|     await dlgProduct.clickOK(); | 
|   }); | 
|   | 
|   it('Step 6 - Edit the same product to verify values are saved from previous. Click Cancel to dismiss dialog.', async () => { | 
|     // Get edited product which now under new parent product (Greek) | 
|     const row = await listProduct.getRow({Name: 'L12'}, [{Name: DataFoodBaseProductName.AllProducts}, {Name: DataFoodBaseProductName.FinishedGoods}, {Name: DataFoodBaseProductName.Greek}]); | 
|     [dlgProduct] = await listProduct.selectContextMenu(ListProductContextMenuItem.Edit, row); | 
|   | 
|     await dlgProduct.verifyDialogValues({ParentProduct: DataFoodBaseProductName.Greek, Name: 'L12', ID: 'L12_ID', UoM: DataFoodBaseUoM.Case}); | 
|     await dlgProduct.pnlAdvanced.clickTab(); | 
|     await dlgProduct.verifyDialogValues({ShelfLifeEnabled: 'true', ShelfLife: '10', MaturationEnabled: 'true', Maturation: '5'}); | 
|   | 
|     await dlgProduct.clickCancel(); | 
|   }); | 
| }); |