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
/**
 * @file          ADSO-10305 - Create a campaign - Follow campaign type min/max qty
 * @description   Modify campaign type then create a campaign.
 * @testCategory  Web app - Campaigns
 * @author        Zan Sen (zansen.tai@3ds.com)
 * @copyright     Dassault Systèmes
 */
 
import { qCustomMatcher } from '../../e2elib/lib/src/main/qmatchers.const';
import { AppMP, Demo, Scenario } from '../../libmp/appmp';
import { DialogCampaign } from '../../libmp/dialogs/dialog.campaign';
import { DataMetalBaseEntityName } from '../../libmp/data/data.unit';
import { DialogCampaignType } from '../../libmp/dialogs/dialog.campaigntype';
import { ListCampaignContextMenuItem } from '../../libmp/forms/form.campaign';
import { ListCampaignTypeContextMenuItem } from '../../libmp/forms/form.campaigntypes';
import { DataCampaignTypeName, DataRadioGroupButtonSelection } from '../../libmp/data/data.campaign';
import { startOfPlanningYear } from '../../libmp/data/data.period';
 
describe('ADSO-10305 Create a campaign - Follow campaign type min or max qty ', () => {
  const appMP = AppMP.getInstance();
  const isVisible = 'true';
  const notVisible = 'false';
 
  // Campaign types
  const viewCampaignsAndTransitions = appMP.viewCampaignsAndTransitions;
  const listCampaignType = viewCampaignsAndTransitions.formCampaignTypes.listCampaignType;
 
  // Campaign planning
  const viewCampaign = appMP.viewCampaign;
  const campaignPlanningListCampaign = viewCampaign.formCampaign.listCampaign;
 
  const quantity = DataRadioGroupButtonSelection.Quantity;
  const meltingfurnaceQuilmes = DataMetalBaseEntityName.MeltingFurnaceQuilmes;
  const campaignfor3XXXsmelt = DataCampaignTypeName.Campaignfor3XXXsmelt;
 
  let dlgCampaign = new DialogCampaign();
  let dlgCampaignType = new DialogCampaignType();
 
  beforeAll(async () => {
    // Deprecated: to be replaced with QJasmine.initGlobal(true)
    jasmine.addMatchers(qCustomMatcher);
    await appMP.login();
  });
 
  afterAll(async () => {
    await appMP.resetActiveView(viewCampaign);
    await appMP.cleanupAndLogout();
  });
 
  afterEach(async () => {
    await appMP.checkToastMessage();
  });
 
  it(`Step 1 - ${AppMP.getDemoDataPath(Demo.Metals, Scenario.Base)}`, async () => {
    await appMP.createDemoDataset(Demo.Metals, Scenario.Base, false);
  });
 
  it(`Step 2 - Open view "${viewCampaignsAndTransitions.viewPath}"`, async () => {
    await viewCampaignsAndTransitions.switchTo();
  });
 
  it(`Step 3 - On "${listCampaignType.name}" list, right click on "${campaignfor3XXXsmelt}" and select "${ListCampaignTypeContextMenuItem.Edit.Label}".`, async () => {
    const selectedCampaignType = await listCampaignType.getRow({ Name: campaignfor3XXXsmelt });
    [dlgCampaignType] = await listCampaignType.selectContextMenu(ListCampaignTypeContextMenuItem.Edit, selectedCampaignType);
  });
 
  it(`Step 4 - In dialog "${dlgCampaignType.name}", modify Campaign type Radio Button selection to ${quantity}`, async () => {
    await dlgCampaignType.updateDialogValues({ QuantityOrDuration: quantity });
  });
 
  it(`Step 5 - Set Min = 1560. Max = 15600. Verify Campaign type "${DataCampaignTypeName.Campaignfor3XXXsmelt}" is updated.`, async () => {
    await dlgCampaignType.updateDialogValues({ MinQuantity: '1560', MaxQuantity: '15600' });
    await dlgCampaignType.verifyOKEnabled();
    await dlgCampaignType.clickOK();
 
    // Verify updated
    const selectedCampaignType = await listCampaignType.getRow({ Name: DataCampaignTypeName.Campaignfor3XXXsmelt });
    await listCampaignType.verifyRowValues(selectedCampaignType, { 'Default Min': '1560 Ton', 'Default Max': '15600 Ton' });
 
    // Reset view
    await appMP.resetActiveView(viewCampaignsAndTransitions);
  });
 
  it(`Step 6 - Open view "${appMP.viewCampaign.viewPath}"`, async () => {
    await appMP.viewCampaign.switchTo();
  });
 
  it(`Step 7 - In "${campaignPlanningListCampaign.name}" list, right click and select "${ListCampaignContextMenuItem.Create.Label}".`, async () => {
    [dlgCampaign] = await campaignPlanningListCampaign.selectContextMenu(ListCampaignContextMenuItem.Create);
  });
 
  // Datetime & Duration const for verification
  const sop = startOfPlanningYear;
  const jan1Sop = `1-Jan-${sop}`;
  const jun16Sop = `16-Jun-${sop} 6:09`;
  const jun26Sop = `26-Jun-${sop} 6:09`;
  const durDay1 = '1 day(s) 0:00';
  const durDay10 = '10 day(s) 0:00';
 
  it(`Step 8 - In dialog "${dlgCampaign.name}", verify default values are prefilled with "${DataCampaignTypeName.Campaignfor3XXXsmelt}" default values<br>
  Campaign type = "${DataCampaignTypeName.Campaignfor3XXXsmelt}"<br>
  Earliest start = "${jan1Sop}"<br>
  Input Type = "${quantity}"<br>
  Min = "1560" ${durDay1}<br>
  Max = "15600" ${durDay10}<br>
  Comment = "".`, async () => {
    await dlgCampaign.verifyDialogUIVisible({ 'Minimum quantity': isVisible, 'Maximum quantity': isVisible, 'Minimum duration': notVisible, 'Maximum duration': notVisible });
    await dlgCampaign.verifyDialogValues({
      'Campaign type': DataCampaignTypeName.Campaignfor3XXXsmelt,
      'Earliest start': jan1Sop,
      'Input type': quantity,
      'Minimum quantity': '1560',
      'Maximum quantity': '15600',
      'Indicated Duration BasedOn MinQty': durDay1,
      'Indicated Duration BasedOn MaxQty': durDay10,
      Comment: '',
    });
  });
 
  it('Step 9 - Click OK without modification.', async () => {
    await dlgCampaign.verifyOKEnabled();
    await dlgCampaign.clickOK();
  });
 
  it(`Step 10 - Verify "${DataCampaignTypeName.Campaignfor3XXXsmelt}" is created on Start = "${jun16Sop}", End = "${jun26Sop}" with constraint violation.`, async () => {
    const row = await campaignPlanningListCampaign.getRow({ Unit: meltingfurnaceQuilmes, 'Campaign type': DataCampaignTypeName.Campaignfor3XXXsmelt, Start: jun16Sop });
    await campaignPlanningListCampaign.verifyRowValues(row, { Start: jun16Sop, End: jun26Sop, Minimum: '1560 Ton', Maximum: '15600 Ton' });
    await campaignPlanningListCampaign.verifyRowHasConstraintViolation(row);
  });
});