/** 
 | 
 * @file        ADSO-10199 - Select leaf level items in the navigation panel (stocking point) 
 | 
 * @description Select leaf level items in the navigation panel (stocking point) 
 | 
 * @testcategory Web - Navigation 
 | 
 * @author      Jayden Chew (jayden.chew@3ds.com) 
 | 
 * @copyright   Dassault Systemes 
 | 
 */ 
 | 
import { qCustomMatcher } from '../../../e2elib/lib/src/main/qmatchers.const'; 
 | 
import { AppMP, Demo, Scenario } from '../../../libmp/appmp'; 
 | 
import { DataFoodBaseEntityName } from '../../../libmp/data/data.navigation'; 
 | 
import { LogMessage } from '../../../libappbase/logmessage'; 
 | 
import { ListEntityColumnName } from '../../../libmp/forms/navigationpanel/form.navigationpanel'; 
 | 
  
 | 
describe('ADSO-10199 - Select leaf level items in the navigation panel (stocking point)', () => { 
 | 
  const appMP = AppMP.getInstance(); 
 | 
  
 | 
  beforeAll(async () => { 
 | 
    jasmine.addMatchers(qCustomMatcher); 
 | 
    await appMP.login(); 
 | 
  }); 
 | 
  
 | 
  afterAll(async () => { 
 | 
    await appMP.viewStockCapacity.reset(); 
 | 
    await appMP.cleanupAndLogout(); 
 | 
  }); 
 | 
  
 | 
  afterEach(async () => { 
 | 
    await appMP.checkToastMessage(); 
 | 
  }); 
 | 
  
 | 
  it(`Setup - ${AppMP.getDemoDataPath(Demo.Food, Scenario.Base)}`, async () => { 
 | 
    await appMP.createDemoDataset(Demo.Food, Scenario.Base, false); 
 | 
  }); 
 | 
  
 | 
  it('Step 1 - Open navigation panel', async () => { 
 | 
    // Navigation panel form should show up directly after login 
 | 
  
 | 
    // Open navigation panel 
 | 
    await appMP.formNavigation.openNavigationPanel(); 
 | 
    // Verify if navigation panel form is visible 'FormNavigationPanel' 
 | 
    expect(await appMP.formNavigation.isVisible()).toBe(true, LogMessage.form_notVisible('Navigation')); 
 | 
  }); 
 | 
  
 | 
  it('Step 2 - Open Stocking points and units list', async () => { 
 | 
    await appMP.formNavigation.toggleEntityList(true); 
 | 
    expect(await appMP.formNavigation.listEntity.isVisible()).toBe(true, LogMessage.list_notVisible('Entitiy')); 
 | 
  }); 
 | 
  
 | 
  it('Step 3 - Check HU Warehouse and DC - Austria', async () => { 
 | 
    const europeRow = await appMP.formNavigation.listEntity.getRowByCellValue(ListEntityColumnName.DisplayName, DataFoodBaseEntityName.Europe); 
 | 
    await europeRow.expandRow(); 
 | 
  
 | 
    // The hierarchy list from parent to child is not recursive, hence we need to pass in Parent to move the focus from depth 0 to depth 1 
 | 
    await appMP.formNavigation.listEntity.toggleEntityRowCheckbox(true, DataFoodBaseEntityName.DCAustria, [DataFoodBaseEntityName.Europe]); 
 | 
    // The focus is now at depth 1, HUWarehouse is same level as DCAustria. It's okay not to pass in parent to save the searching time from parent to child 
 | 
    await appMP.formNavigation.listEntity.toggleEntityRowCheckbox(true, DataFoodBaseEntityName.HUWarehouse); 
 | 
  
 | 
    const dcAustriaRow = await appMP.formNavigation.listEntity.getRowByCellValue(ListEntityColumnName.DisplayName, DataFoodBaseEntityName.DCAustria); 
 | 
    expect(await dcAustriaRow.isChecked()).toBe(true, LogMessage.list_checkboxNotChecked(DataFoodBaseEntityName.DCAustria)); 
 | 
    const huWarehouseRow = await appMP.formNavigation.listEntity.getRowByCellValue(ListEntityColumnName.DisplayName, DataFoodBaseEntityName.HUWarehouse); 
 | 
    expect(await huWarehouseRow.isChecked()).toBe(true, LogMessage.list_checkboxNotChecked(DataFoodBaseEntityName.HUWarehouse)); 
 | 
  }); 
 | 
  
 | 
  it('Step 4 - Verify parent unit Europe has a light blue triangle on the bottom right of the checkbox', async () => { 
 | 
    const europeRow = await appMP.formNavigation.listEntity.getRowByCellValue(ListEntityColumnName.DisplayName, DataFoodBaseEntityName.Europe); 
 | 
    const lightBlueTriagleExist = (await europeRow.isLightDecorated()) && (await europeRow.isDecorated()); 
 | 
    expect(lightBlueTriagleExist).toBe(true, 'light blue triangle on the bottom right of the checkbox is missing.'); 
 | 
  }); 
 | 
  
 | 
  it('Step 5 - Uncheck HU Warehouse and DC - Austria', async () => { 
 | 
    const europeRow = await appMP.formNavigation.listEntity.getRowByCellValue(ListEntityColumnName.DisplayName, DataFoodBaseEntityName.Europe); 
 | 
    await appMP.formNavigation.listEntity.toggleEntityRowCheckbox(false, DataFoodBaseEntityName.DCAustria); 
 | 
    await appMP.formNavigation.listEntity.toggleEntityRowCheckbox(false, DataFoodBaseEntityName.HUWarehouse); 
 | 
    const dcAustriaRow = await appMP.formNavigation.listEntity.getRowByCellValue(ListEntityColumnName.DisplayName, DataFoodBaseEntityName.DCAustria); 
 | 
    expect(await dcAustriaRow.isChecked()).toBe(false, LogMessage.list_checkboxChecked(DataFoodBaseEntityName.DCAustria)); 
 | 
    const huWarehouseRow = await appMP.formNavigation.listEntity.getRowByCellValue(ListEntityColumnName.DisplayName, DataFoodBaseEntityName.HUWarehouse); 
 | 
    expect(await huWarehouseRow.isChecked()).toBe(false, LogMessage.list_checkboxChecked(DataFoodBaseEntityName.HUWarehouse)); 
 | 
    // Verify the light blue triangle on the checkbox 
 | 
    const lightBlueTriagleExist = (await europeRow.isLightDecorated()) && (await europeRow.isDecorated()); 
 | 
    expect(lightBlueTriagleExist).toBe(false, 'light blue triangle on the bottom right of the checkbox exist.'); 
 | 
  }); 
 | 
  
 | 
  it(`Step 6 - Open view ${appMP.viewStockCapacity.viewPath} and verify selection in the navigation panel remains the same`, async () => { 
 | 
    await appMP.viewStockCapacity.switchTo(); 
 | 
    const formScenarioAnalysisStockingPointCapacity = appMP.viewStockCapacity.frmScenarioAnalysisStockingPointCapacity; 
 | 
    expect(await formScenarioAnalysisStockingPointCapacity.isVisible()).toBe(true, LogMessage.form_notVisible('ScenarioAnalysisStockingPointCapacity')); 
 | 
    const europeRow = await appMP.formNavigation.listEntity.getRowByCellValue(ListEntityColumnName.DisplayName, DataFoodBaseEntityName.Europe); 
 | 
    const dcAustriaRow = await appMP.formNavigation.listEntity.getRowByCellValue(ListEntityColumnName.DisplayName, DataFoodBaseEntityName.DCAustria); 
 | 
    const huWarehouseRow = await appMP.formNavigation.listEntity.getRowByCellValue(ListEntityColumnName.DisplayName, DataFoodBaseEntityName.HUWarehouse); 
 | 
    expect(await europeRow.isLightDecorated()).toBe(false, 'light blue triangle on the bottom right of the checkbox exist.'); 
 | 
    expect(await dcAustriaRow.isChecked()).toBe(false, LogMessage.list_checkboxChecked(DataFoodBaseEntityName.DCAustria)); 
 | 
    expect(await huWarehouseRow.isChecked()).toBe(false, LogMessage.list_checkboxChecked(DataFoodBaseEntityName.HUWarehouse)); 
 | 
    const lightBlueTriagleExist = (await europeRow.isLightDecorated()) && (await europeRow.isDecorated()); 
 | 
    expect(lightBlueTriagleExist).toBe(false, 'light blue triangle on the bottom right of the checkbox exist.'); 
 | 
  }); 
 | 
}); 
 |