/** 
 | 
 * @file        ADSO-11450 
 | 
 * @description Copy scenario optimizer puzzle 
 | 
 * @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 { StepDialog } from '../../libappsop/dialogsop'; 
 | 
import { StepList } from '../../libappsop/listsop'; 
 | 
import { StepActionBarScenarioSelection } from '../../libmp/actionbarpages/abp.scenarioselection'; 
 | 
import { DialogOptimizerPuzzles, DialogOptimizerPuzzlesField } from '../../libmp/dialogs/optimizerpuzzles'; 
 | 
import { ListOptimizerPuzzles, ListOptimizerPuzzlesColumn, ListOptimizerPuzzlesContextMenuItem } from '../../libmp/forms/form.optimizerpuzzles'; 
 | 
import { ListScenarioContextMenuItem, StepScenario } from '../../libmp/forms/form.scenario'; 
 | 
  
 | 
describe('ADSO-11450 - Copy scenario optimizer puzzle', () => { 
 | 
  const appMP = AppMP.getInstance(); 
 | 
  const abpScenarioSelection = appMP.abpScenarioSelection; 
 | 
  const formOptimizerPuzzles = abpScenarioSelection.formOptimizerPuzzles; 
 | 
  const listOptimizerPuzzles = formOptimizerPuzzles.listOptimizerPuzzles; 
 | 
  let dlgOptimizerPuzzles: DialogOptimizerPuzzles; 
 | 
  const listScenarioManager = appMP.viewScenario.formScenario.lstScenario; 
 | 
  const dlgScenario = listScenarioManager.dlgCreateEdit; 
 | 
  
 | 
  const dlgInputPuzzle: DialogOptimizerPuzzlesField = { Name: 'My Puzzle', Description: 'My Description' }; 
 | 
  
 | 
  const listInputPuzzle: ListOptimizerPuzzlesColumn = { Name: 'My Puzzle', Description: 'My Description' }; 
 | 
  
 | 
  beforeAll(async () => { 
 | 
    jasmine.addMatchers(qCustomMatcher); 
 | 
    await appMP.login(); 
 | 
  }); 
 | 
  
 | 
  afterAll(async () => { 
 | 
    await appMP.resetActiveView(appMP.viewScenario); 
 | 
    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); 
 | 
  }); 
 | 
  
 | 
  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, dlgInputPuzzle)}`, async () => { 
 | 
    await dlgOptimizerPuzzles.updateDialogValues(dlgInputPuzzle); 
 | 
  }); 
 | 
  
 | 
  it(`Step 5 - ${StepDialog.clickOK()}`, async () => { 
 | 
    await dlgOptimizerPuzzles.clickOK(); 
 | 
  }); 
 | 
  
 | 
  it(`Step 6 - Open view ${appMP.viewScenario.viewPath}`, async () => { 
 | 
    await appMP.viewScenario.switchTo(); 
 | 
  }); 
 | 
  
 | 
  it(`Step 7 - ${StepScenario.expandFolderAndSelectMenu('Base', ListScenarioContextMenuItem.CopyScenario)}`, async () => { 
 | 
    await listScenarioManager.expandFolderAndSelectMenu('Base', ListScenarioContextMenuItem.CopyScenario); 
 | 
  }); 
 | 
  
 | 
  it(`Step 8 - ${StepDialog.clickOK()}`, async () => { 
 | 
    await dlgScenario.clickOK(); 
 | 
  }); 
 | 
  
 | 
  it(`Step 9 - ${StepScenario.expandFolderAndSelectMenu('Base1', ListScenarioContextMenuItem.Select)}`, async () => { 
 | 
    // Copied scenario created under source scenario 
 | 
    await listScenarioManager.expandFolderAndSelectMenu('Base1', ListScenarioContextMenuItem.Select, [{ Name: 'Base' }]); 
 | 
  }); 
 | 
  
 | 
  it(`Step 10 - ${StepActionBarScenarioSelection.toggleOptimizerPuzzles(true)}`, async () => { 
 | 
    await abpScenarioSelection.toggleOptimizerPuzzles(true); 
 | 
  }); 
 | 
  
 | 
  it(`Step 11 - ${StepList.verifyRowExists(ListOptimizerPuzzles.title, listInputPuzzle)}`, async () => { 
 | 
    await listOptimizerPuzzles.verifyRowExists(listInputPuzzle); 
 | 
  }); 
 | 
}); 
 |