/**
|
* @file ADSO-9341
|
* @description Scenario analysis - bottleneck resources view, filtering on selection in the Navigation panel
|
* @author CHEAH Meng Yew (MengYew.CHEAH@3ds.com)
|
* @copyright Dassault Systemes
|
*/
|
import { qCustomMatcher } from '../../e2elib/lib/src/main/qmatchers.const';
|
import { StepChart } from '../../libappsop/chartsop';
|
import { DataHierarchy } from '../../libappsop/datahierarchy';
|
import { AppMP, Demo, Scenario } from '../../libmp/appmp';
|
import { startOfPlanningYear } from '../../libmp/data/data.period';
|
import { dataMetalsUnits, dataMetalsUnitsProvider } from '../../libmp/data/data.unit';
|
import { StepCapacityPlanning } from '../../libmp/forms/form.capacityplanning';
|
import { ChartScenarioAnalysisBottleneckResources } from '../../libmp/forms/form.scenarioanalysis.bottleneckresources';
|
import { StepNavigationPanel } from '../../libmp/forms/navigationpanel/form.navigationpanel';
|
import { StepNavigationPanelPeriod } from '../../libmp/forms/navigationpanel/panel.period';
|
|
describe('ADSO-9341 - Scenario analysis - bottleneck resources view, filtering on selection in the Navigation panel', () => {
|
const appMP = AppMP.getInstance();
|
const listEntity = appMP.formNavigation.listEntity;
|
const panelPeriod = appMP.formNavigation.pnlPeriod;
|
const viewSupplyPlanning = appMP.viewSupplyPlanning;
|
const viewScenarioAnalysisBottleneckResources = appMP.viewScenarioAnalysisBottleneckResources;
|
const chartBottleneck = viewScenarioAnalysisBottleneckResources.frmScenarioAnalysisBottleneckResources.chartScenarioAnalysisBottleneckResources;
|
const chartTitle = ChartScenarioAnalysisBottleneckResources.chartTitle;
|
const chartYAxisTitle = ChartScenarioAnalysisBottleneckResources.chartYAxisTitle;
|
const gcCapacityPlanning = viewSupplyPlanning.frmCapacityPlanning.ganttChartCapacityPlanning;
|
const startDateList = [`1-Jan-${startOfPlanningYear}`,
|
`1-Feb-${startOfPlanningYear}`,
|
`1-Mar-${startOfPlanningYear}`,
|
`1-Apr-${startOfPlanningYear}`,
|
`1-May-${startOfPlanningYear}`,
|
`1-Jun-${startOfPlanningYear}`,
|
`1-Jul-${startOfPlanningYear}`,
|
`1-Aug-${startOfPlanningYear}`,
|
`1-Sep-${startOfPlanningYear}`];
|
const endDateList = [`1-Feb-${startOfPlanningYear}`,
|
`1-Mar-${startOfPlanningYear}`,
|
`1-Apr-${startOfPlanningYear}`,
|
`1-May-${startOfPlanningYear}`,
|
`1-Jun-${startOfPlanningYear}`,
|
`1-Jul-${startOfPlanningYear}`,
|
`1-Aug-${startOfPlanningYear}`,
|
`1-Sep-${startOfPlanningYear}`,
|
`1-Oct-${startOfPlanningYear}`];
|
const fromDate = startDateList[0];
|
const toDate = endDateList[endDateList.length - 1];
|
let coldMill1Avg: string;
|
let coldMill2Avg: string;
|
let coldMill3Avg: string;
|
let recyclingFurnaceAvg: string;
|
let initialNbrOfBarChart: number;
|
|
beforeAll(async () => {
|
jasmine.addMatchers(qCustomMatcher);
|
await appMP.login();
|
});
|
|
afterAll(async () => {
|
await appMP.cleanupAndLogout();
|
});
|
|
afterEach(async () => {
|
await appMP.checkToastMessage();
|
});
|
|
it(`Setup - ${AppMP.getDemoDataPath(Demo.Metals, Scenario.Base)}`, async () => {
|
await appMP.createDemoDataset(Demo.Metals, Scenario.Base, true); // Need wait optimizer finish to have chart shows correct Utilization
|
});
|
|
it(`Step 1 - Open view ${viewScenarioAnalysisBottleneckResources.viewPath}`, async () => {
|
await viewScenarioAnalysisBottleneckResources.switchTo();
|
});
|
|
it(`Step 2- ${StepNavigationPanel.openNavigationPanel()}`, async () => {
|
await appMP.formNavigation.openNavigationPanel();
|
});
|
|
it(`Step 3 - ${StepNavigationPanel.showEntitiesList()}`, async () => {
|
await appMP.formNavigation.toggleEntityList(true);
|
});
|
|
it(`Step 4 - ${StepChart.getXAxisLabelCount(chartTitle)}`, async () => {
|
initialNbrOfBarChart = await chartBottleneck.getXAxisLabelsCount();
|
});
|
|
it(`Step 5 - ${StepNavigationPanel.checkUnits([dataMetalsUnits.AsiaUnit.Name])}`, async () => {
|
// Given a unit name, getHierarchy will return the ancestor units recursively
|
const [asia, asiaParents] = dataMetalsUnitsProvider.getHierarchy(dataMetalsUnits.AsiaUnit);
|
const parentsArr = asiaParents.map((x: DataHierarchy) => x.Name);
|
const asiaRow = await listEntity.getEntityRowByName(asia.Name, parentsArr);
|
|
await listEntity.toggleRowCheckbox(asiaRow, true);
|
});
|
|
it(`Step 6 - ${StepNavigationPanel.showPeriodPanel()}`, async () => {
|
await appMP.formNavigation.togglePeriod(true);
|
});
|
|
it(`Step 7 - ${StepNavigationPanelPeriod.setNumFuturePeriods(9)} ${StepNavigationPanelPeriod.setNumHistoricalPeriods(0)}`, async () => {
|
await panelPeriod.setNumFuturePeriods('9');
|
await panelPeriod.setNumHistoricalPeriods('0');
|
});
|
|
it(`Step 8 - Open view ${viewSupplyPlanning.viewPath}`, async () => {
|
await viewSupplyPlanning.switchTo();
|
});
|
|
it(`Step 9 - ${StepCapacityPlanning.calcAverageCapacityPercentage([dataMetalsUnits.Coldmill1QiYing.Name], fromDate, toDate)}`, async () => {
|
coldMill1Avg = await gcCapacityPlanning.getRowNodesAverageValue([dataMetalsUnits.Coldmill1QiYing.Name], startDateList, endDateList);
|
});
|
|
it(`Step 10 - ${StepCapacityPlanning.calcAverageCapacityPercentage([dataMetalsUnits.Coldmill2QiYing.Name], fromDate, toDate)}`, async () => {
|
coldMill2Avg = await gcCapacityPlanning.getRowNodesAverageValue([dataMetalsUnits.Coldmill2QiYing.Name], startDateList, endDateList);
|
});
|
|
it(`Step 11 - ${StepCapacityPlanning.calcAverageCapacityPercentage([dataMetalsUnits.Coldmill3QiYing.Name], fromDate, toDate)}`, async () => {
|
coldMill3Avg = await gcCapacityPlanning.getRowNodesAverageValue([dataMetalsUnits.Coldmill3QiYing.Name], startDateList, endDateList);
|
});
|
|
it(`Step 12 - ${StepCapacityPlanning.calcAverageCapacityPercentage([dataMetalsUnits.RecyclingFurnaceQiYing.Name], fromDate, toDate)}`, async () => {
|
recyclingFurnaceAvg = await gcCapacityPlanning.getRowNodesAverageValue([dataMetalsUnits.RecyclingFurnaceQiYing.Name], startDateList, endDateList);
|
});
|
|
it(`Step 13 - Open view ${viewScenarioAnalysisBottleneckResources.viewPath}`, async () => {
|
await viewScenarioAnalysisBottleneckResources.switchTo();
|
});
|
|
it(`Step 14 - ${StepChart.verifyHasDataPoint(chartTitle, chartYAxisTitle, dataMetalsUnits.Coldmill1QiYing.Name, 'the average utilization')}`, async () => {
|
await chartBottleneck.verifyHasDataPoint('', chartYAxisTitle, dataMetalsUnits.Coldmill1QiYing.Name, coldMill1Avg, 0.5);
|
});
|
|
it(`Step 15 - ${StepChart.verifyHasDataPoint(chartTitle, chartYAxisTitle, dataMetalsUnits.Coldmill2QiYing.Name, 'the average utilization')}`, async () => {
|
await chartBottleneck.verifyHasDataPoint('', chartYAxisTitle, dataMetalsUnits.Coldmill2QiYing.Name, coldMill2Avg, 0.5);
|
});
|
|
it(`Step 16 - ${StepChart.verifyHasDataPoint(chartTitle, chartYAxisTitle, dataMetalsUnits.Coldmill3QiYing.Name, 'the average utilization')}`, async () => {
|
await chartBottleneck.verifyHasDataPoint('', chartYAxisTitle, dataMetalsUnits.Coldmill3QiYing.Name, coldMill3Avg, 0.5);
|
});
|
|
it(`Step 17 - ${StepChart.verifyHasDataPoint(chartTitle, chartYAxisTitle, dataMetalsUnits.RecyclingFurnaceQiYing.Name, 'the average utilization')}`, async () => {
|
await chartBottleneck.verifyHasDataPoint('', chartYAxisTitle, dataMetalsUnits.RecyclingFurnaceQiYing.Name, recyclingFurnaceAvg, 0.5);
|
});
|
|
it(`Step 18 - ${StepNavigationPanel.clickHomeResetToRoot()}`, async () => {
|
await appMP.formNavigation.resetNaviToRoot();
|
});
|
|
it(`Step 19 - ${StepChart.verifyXAxisLabelCount('all bottleneck resources shown unfiltered')}`, async () => {
|
// Reset filter will show all bottleneck resources across the horizon
|
await chartBottleneck.verifyXAxisLabelCount(initialNbrOfBarChart);
|
});
|
});
|