/**
|
* @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);
|
});
|
});
|