| /** | 
|  * @file        ADSO-11482 | 
|  * @description Copy product assignments at optimizer puzzle copy | 
|  * @author      Pethaperumal Natarajan (Pethaperumal.NATARAJAN.intern@3ds.com) | 
|  * @copyright   Dassault Systèmes | 
|  */ | 
|   | 
| import { AppMP, Demo, Scenario } from '../../libmp/appmp'; | 
| import { qCustomMatcher } from '../../e2elib/lib/src/main/qmatchers.const'; | 
| import { StepActionBarScenarioSelection } from '../../libmp/actionbarpages/abp.scenarioselection'; | 
| import { DialogOptimizerPuzzles, DialogOptimizerPuzzlesField, ListManageContents, ListManageContentsColumn, ListManageContentsProduct, ListManageContentsProductContextMenuItems, PanelManageContents } from '../../libmp/dialogs/optimizerpuzzles'; | 
| import { StepList } from '../../libappsop/listsop'; | 
| import { StepDialog } from '../../libappsop/dialogsop'; | 
| import { ListOptimizerPuzzles, ListOptimizerPuzzlesColumn, ListOptimizerPuzzlesContextMenuItem, ListOptimizerPuzzlesOnDrawImage } from '../../libmp/forms/form.optimizerpuzzles'; | 
| import { dataFoodProducts, dataFoodProductsProvider } from '../../libmp/data/data.product'; | 
| import { DataOptimizerPuzzleManageContent } from '../../libmp/data/data.optimizerpuzzle'; | 
|   | 
| describe('ADSO-11482 - Copy product assignments at optimizer puzzle copy', () => { | 
|   const appMP = AppMP.getInstance(); | 
|   const abpScenarioSelection = appMP.abpScenarioSelection; | 
|   const listOptimizerPuzzles = appMP.abpScenarioSelection.formOptimizerPuzzles.listOptimizerPuzzles; | 
|   let dlgOptimizerPuzzles: DialogOptimizerPuzzles; | 
|   let listManageContents: ListManageContents; | 
|   let listManageContentsProducts: ListManageContentsProduct; | 
|   | 
|   const inputPuzzle: DialogOptimizerPuzzlesField = { Name: 'My Puzzle', Description: 'My Description' }; | 
|   const rowListManageContentsProduct: ListManageContentsColumn = { Name: DataOptimizerPuzzleManageContent.Products }; | 
|   | 
|   const rowMyPuzzle: ListOptimizerPuzzlesColumn = { Name: 'My Puzzle', Description: 'My Description' }; | 
|   const imageRedCross = ListOptimizerPuzzlesOnDrawImage.FullyExcluded; | 
|   const imageGrayCheck = ListOptimizerPuzzlesOnDrawImage.PartiallyIncluded; | 
|   const imageGreenCheck = ListOptimizerPuzzlesOnDrawImage.FullyIncluded; | 
|   const imageDots = ListOptimizerPuzzlesOnDrawImage.MixIncludedExcluded; | 
|   | 
|   beforeAll(async () => { | 
|     jasmine.addMatchers(qCustomMatcher); | 
|     await appMP.login(); | 
|   }); | 
|   | 
|   afterAll(async () => { | 
|     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, true); // Need wait optimizer finish to enable the Optimizer button else we cannot click to show opt puzzle form | 
|   }); | 
|   | 
|   it(`Step 2 - ${StepActionBarScenarioSelection.toggleOptimizerPuzzles(true)}`, async () => { | 
|     await abpScenarioSelection.toggleOptimizerPuzzles(true); | 
|   }); | 
|   | 
|   it(`Step 3 - ${StepList.rightClickSelectMenu(ListOptimizerPuzzles.title, ListOptimizerPuzzlesContextMenuItem.Create.Label)}`, async () => { | 
|     [dlgOptimizerPuzzles] = await listOptimizerPuzzles.selectContextMenu(ListOptimizerPuzzlesContextMenuItem.Create); | 
|   }); | 
|   | 
|   it(`Step 4 - ${StepDialog.updateDialogValues(DialogOptimizerPuzzles.title, inputPuzzle)}`, async () => { | 
|     await dlgOptimizerPuzzles.updateDialogValues(inputPuzzle); | 
|   }); | 
|   | 
|   it(`Step 5 - ${StepDialog.clickTab(PanelManageContents.title)} ${StepList.selectRow(ListManageContents.title, rowListManageContentsProduct)}`, async () => { | 
|     await dlgOptimizerPuzzles.panelManageContents.switchTo(); | 
|     listManageContents = dlgOptimizerPuzzles.panelManageContents.listManageContents; | 
|     await listManageContents.selectRow(rowListManageContentsProduct); | 
|   }); | 
|   | 
|   it(`Step 6 - ${StepList.selectRowAndClickMenu(ListManageContentsProduct.title, { Name: dataFoodProducts.Greek.Name }, ListManageContentsProductContextMenuItems.Exclude.Label)} ${StepList.verifyRowHasOnDrawImage(ListManageContentsProduct.title, { Name: dataFoodProducts.Greek.Name }, imageRedCross)}`, async () => { | 
|     listManageContentsProducts = dlgOptimizerPuzzles.panelManageContents.listManageContentsProduct; | 
|     const row = await listManageContentsProducts.getRow([dataFoodProductsProvider, dataFoodProducts.Greek]); | 
|     await listManageContentsProducts.selectContextMenu(ListManageContentsProductContextMenuItems.Exclude, row); | 
|     await listManageContentsProducts.verifyRowHasOnDrawImage(row, imageRedCross); | 
|   }); | 
|   | 
|   it(`Step 7 - ${StepList.verifyRowHasOnDrawImage(ListManageContentsProduct.title, { Name: dataFoodProducts.AllProducts.Name }, imageGrayCheck)}`, async () => { | 
|     const row = await listManageContentsProducts.getRow([dataFoodProductsProvider, dataFoodProducts.AllProducts]); | 
|     await listManageContentsProducts.verifyRowHasOnDrawImage(row, imageGrayCheck); | 
|   }); | 
|   | 
|   it(`Step 8 - ${StepList.verifyRowHasOnDrawImage(ListManageContentsProduct.title, { Name: dataFoodProducts.FinishedGoods.Name }, imageGrayCheck)}`, async () => { | 
|     const row = await listManageContentsProducts.getRow([dataFoodProductsProvider, dataFoodProducts.FinishedGoods]); | 
|     await listManageContentsProducts.verifyRowHasOnDrawImage(row, imageGrayCheck); | 
|     await row.collapseRow(); // Collapse to have bigger screen space to prevent error moving up/down in list | 
|   }); | 
|   | 
|   it(`Step 9 - ${StepList.selectRowAndClickMenu(ListManageContentsProduct.title, { Name: dataFoodProducts.Strawberry.Name }, ListManageContentsProductContextMenuItems.Exclude.Label)} ${StepList.verifyRowHasOnDrawImage(ListManageContentsProduct.title, { Name: dataFoodProducts.Strawberry.Name }, imageRedCross)}`, async () => { | 
|     const row = await listManageContentsProducts.getRow([dataFoodProductsProvider, dataFoodProducts.Strawberry]); | 
|     await listManageContentsProducts.selectContextMenu(ListManageContentsProductContextMenuItems.Exclude, row); | 
|     await listManageContentsProducts.verifyRowHasOnDrawImage(row, imageRedCross); | 
|   }); | 
|   | 
|   it(`Step 10 - ${StepList.verifyRowHasOnDrawImage(ListManageContentsProduct.title, { Name: dataFoodProducts.RawMaterials.Name }, imageGrayCheck)}`, async () => { | 
|     const row = await listManageContentsProducts.getRow([dataFoodProductsProvider, dataFoodProducts.RawMaterials]); | 
|     await listManageContentsProducts.verifyRowHasOnDrawImage(row, imageGrayCheck); | 
|   }); | 
|   | 
|   it(`Step 11 - ${StepList.verifyRowHasOnDrawImage(ListManageContentsProduct.title, { Name: dataFoodProducts.Flavoring.Name }, imageGrayCheck)}`, async () => { | 
|     const row = await listManageContentsProducts.getRow([dataFoodProductsProvider, dataFoodProducts.Flavoring]); | 
|     await listManageContentsProducts.verifyRowHasOnDrawImage(row, imageGrayCheck); | 
|   }); | 
|   | 
|   it(`Step 12 - ${StepList.verifyRowHasOnDrawImage(ListManageContentsProduct.title, { Name: dataFoodProducts.Vanilla.Name }, imageGreenCheck)}`, async () => { | 
|     const row = await listManageContentsProducts.getRow([dataFoodProductsProvider, dataFoodProducts.Vanilla]); | 
|     await listManageContentsProducts.verifyRowHasOnDrawImage(row, imageGreenCheck); | 
|   }); | 
|   | 
|   it(`Step 13 - ${StepList.verifyRowHasOnDrawImage(ListManageContents.title, rowListManageContentsProduct, imageDots)}`, async () => { | 
|     const row = await listManageContents.getRow(rowListManageContentsProduct); | 
|     await listManageContents.verifyRowHasOnDrawImage(row, imageDots); | 
|   }); | 
|   | 
|   it(`Step 14 - ${StepDialog.clickOK()}`, async () => { | 
|     await dlgOptimizerPuzzles.clickOK(); | 
|   }); | 
|   | 
|   it(`Step 15 - ${StepList.selectRowAndClickMenu(ListOptimizerPuzzles.title, rowMyPuzzle, ListOptimizerPuzzlesContextMenuItem.Copy.Label)}`, async () => { | 
|     const row = await listOptimizerPuzzles.getRow(rowMyPuzzle); | 
|     await listOptimizerPuzzles.selectContextMenu(ListOptimizerPuzzlesContextMenuItem.Copy, row); | 
|   }); | 
|   | 
|   it(`Step 16 - ${StepDialog.clickTab(PanelManageContents.title)} ${StepList.selectRow(ListManageContents.title, rowListManageContentsProduct)}`, async () => { | 
|     await dlgOptimizerPuzzles.panelManageContents.switchTo(); | 
|     await listManageContents.selectRow(rowListManageContentsProduct); | 
|   }); | 
|   | 
|   it(`Step 17 - ${StepList.verifyRowHasOnDrawImage(ListManageContentsProduct.title, { Name: dataFoodProducts.Greek.Name }, imageRedCross)}`, async () => { | 
|     const row = await listManageContentsProducts.getRow([dataFoodProductsProvider, dataFoodProducts.Greek]); | 
|     await listManageContentsProducts.verifyRowHasOnDrawImage(row, imageRedCross); | 
|   }); | 
|   | 
|   it(`Step 18 - ${StepList.verifyRowHasOnDrawImage(ListManageContentsProduct.title, { Name: dataFoodProducts.Strawberry.Name }, imageRedCross)}`, async () => { | 
|     const row = await listManageContentsProducts.getRow([dataFoodProductsProvider, dataFoodProducts.Strawberry]); | 
|     await listManageContentsProducts.verifyRowHasOnDrawImage(row, imageRedCross); | 
|   }); | 
|   | 
|   it(`Step 19 - ${StepDialog.clickCancel()}`, async () => { | 
|     await dlgOptimizerPuzzles.clickCancel(); | 
|   }); | 
| }); |