yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/**
 * @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();
  });
});