haorenhui
2023-10-30 6d6cc10d9e8e242661da7fd655dec155a09d676c
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
/**
 * @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();
  });
});