/** 
 | 
 * @file        ADSO-9925 
 | 
 * @description Manually create and edit trip feedback 
 | 
 * @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 { ListTripFeedback, ListTripFeedbackColumn, ListTripFeedbackContextMenuItem } from '../../libmp/forms/form.tripfeedback'; 
 | 
import { DialogTripFeedback, DialogTripFeedbackFields } from '../../libmp/dialogs/dialog.tripfeedback'; 
 | 
import { StepList } from '../../libappsop/listsop'; 
 | 
import { StepDialog } from '../../libappsop/dialogsop'; 
 | 
import { startOfPlanningYear } from '../../libmp/data/data.period'; 
 | 
import { StepButton } from '../../libappsop/buttonsop'; 
 | 
import { dataFoodUnits, dataFoodUnitsProvider } from '../../libmp/data/data.unit'; 
 | 
import { dataFoodProducts } from '../../libmp/data/data.product'; 
 | 
import { DataFoodBaseLaneLeg } from '../../libmp/data/data.lane'; 
 | 
import { StepNavigationPanel } from '../../libmp/forms/navigationpanel/form.navigationpanel'; 
 | 
import { StepDropDownList } from '../../libappsop/dropdownlistsop'; 
 | 
  
 | 
describe('ADSO-9925 - Manually create and edit trip feedback', () => { 
 | 
  const appMP = AppMP.getInstance(); 
 | 
  const listTripFeedback = appMP.viewFeedback.formTripFeedback.listTripFeedback; 
 | 
  const abpPlan = appMP.abpPlan; 
 | 
  const listEntity = appMP.formNavigation.listEntity; 
 | 
  const deTruckFleet = dataFoodUnits.DETruckFleet.Name; 
 | 
  let dlgTripFeedback: DialogTripFeedback; 
 | 
  
 | 
  const laneLegDropDownListOptions = [DataFoodBaseLaneLeg.DEWarehouseToDCAustria, DataFoodBaseLaneLeg.DEWarehouseToDCGermany]; 
 | 
  
 | 
  const inputTripFeedback1: DialogTripFeedbackFields = { 
 | 
    LaneLeg: DataFoodBaseLaneLeg.DEWarehouseToDCAustria, 
 | 
    ArrivalDateTime: `1-Apr-${startOfPlanningYear}`, 
 | 
    Product: dataFoodProducts.GreekBlueberry12pk.Name, 
 | 
    Quantity: '500', 
 | 
    Description: 'Description 1', 
 | 
  }; 
 | 
  
 | 
  const rowTripFeedback1: ListTripFeedbackColumn = { 
 | 
    Unit: deTruckFleet, 
 | 
    'Lane Leg': DataFoodBaseLaneLeg.DEWarehouseToDCAustria, 
 | 
    Arrival: `1-Apr-${startOfPlanningYear}`, 
 | 
    Product: dataFoodProducts.GreekBlueberry12pk.Name, 
 | 
    Quantity: '500', 
 | 
    Description: 'Description 1', 
 | 
  }; 
 | 
  
 | 
  const inputTripFeedback2: DialogTripFeedbackFields = { 
 | 
    LaneLeg: DataFoodBaseLaneLeg.DEWarehouseToDCGermany, 
 | 
    ArrivalDateTime: `5-Apr-${startOfPlanningYear}`, 
 | 
    Product: dataFoodProducts.GreekBlueberry6pk.Name, 
 | 
    Quantity: '600', 
 | 
    Description: 'Description 2', 
 | 
  }; 
 | 
  
 | 
  const rowTripFeedback2: ListTripFeedbackColumn = { 
 | 
    Unit: deTruckFleet, 
 | 
    'Lane Leg': DataFoodBaseLaneLeg.DEWarehouseToDCGermany, 
 | 
    Arrival: `5-Apr-${startOfPlanningYear}`, 
 | 
    Product: dataFoodProducts.GreekBlueberry6pk.Name, 
 | 
    Quantity: '600', 
 | 
    Description: 'Description 2', 
 | 
  }; 
 | 
  
 | 
  const inputTripFeedback3: DialogTripFeedbackFields = { 
 | 
    Quantity: '800', 
 | 
    Description: 'Description 3', 
 | 
  }; 
 | 
  
 | 
  const rowTripFeedback3: ListTripFeedbackColumn = { 
 | 
    ...rowTripFeedback1, 
 | 
    Quantity: '800', 
 | 
    Description: 'Description 3', 
 | 
  }; 
 | 
  
 | 
  beforeAll(async () => { 
 | 
    jasmine.addMatchers(qCustomMatcher); 
 | 
    await appMP.login(); 
 | 
  }); 
 | 
  
 | 
  afterAll(async () => { 
 | 
    await appMP.resetActiveView(appMP.viewFeedback); 
 | 
    await appMP.cleanupAndLogout(); 
 | 
  }); 
 | 
  
 | 
  afterEach(async () => { 
 | 
    await appMP.checkToastMessage(); 
 | 
  }); 
 | 
  
 | 
  describe('Create trip feedback', () => { 
 | 
    it(`Step 1 - ${AppMP.getDemoDataPath(Demo.Food, Scenario.Base)}`, async () => { 
 | 
      await appMP.createDemoDataset(Demo.Food, Scenario.Base, false); 
 | 
    }); 
 | 
  
 | 
    it(`Step 2 - Open view ${appMP.viewFeedback.viewPath}.`, async () => { 
 | 
      await appMP.viewFeedback.switchTo(); 
 | 
    }); 
 | 
  
 | 
    it(`Step 3 - ${StepNavigationPanel.showEntitiesList()}`, async () => { 
 | 
      await appMP.formNavigation.toggleEntityList(true); 
 | 
    }); 
 | 
  
 | 
    it(`Step 4 - ${StepNavigationPanel.checkUnits([deTruckFleet])}`, async () => { 
 | 
      const row = await listEntity.getRow([dataFoodUnitsProvider, dataFoodUnits.DETruckFleet]); 
 | 
      await listEntity.toggleRowCheckbox(row, true); 
 | 
    }); 
 | 
  
 | 
    it(`Step 5 - ${StepList.rightClickSelectMenu(ListTripFeedback.title, ListTripFeedbackContextMenuItem.Create.Label)}`, async () => { 
 | 
      [dlgTripFeedback] = await listTripFeedback.selectContextMenu(ListTripFeedbackContextMenuItem.Create); 
 | 
    }); 
 | 
  
 | 
    it(`Step 6 - ${StepDialog.verifyDialogValues(DialogTripFeedback.title, { Unit: deTruckFleet })}`, async () => { 
 | 
      await dlgTripFeedback.verifyDialogValues({ Unit: deTruckFleet }); 
 | 
    }); 
 | 
  
 | 
    it(`Step 7 - ${StepDropDownList.verifyAvailableValues('Lane Leg', laneLegDropDownListOptions)}`, async () => { 
 | 
      // Verify only these 2 lane legs visible in dropdownlist 
 | 
      await dlgTripFeedback.ddlLaneLeg.verifyAvailableValues(laneLegDropDownListOptions); 
 | 
    }); 
 | 
  
 | 
    it(`Step 8 - ${StepDropDownList.verifyNumAvailableValues('Product', 8)}`, async () => { 
 | 
      // Verify that Product dropdown list contains 8 finished goods 
 | 
      await dlgTripFeedback.ddlProduct.verifyNumAvailableValues(8); 
 | 
    }); 
 | 
  
 | 
    it(`Step 9 - ${StepDialog.updateDialogValues(DialogTripFeedback.title, inputTripFeedback1)}`, async () => { 
 | 
      await dlgTripFeedback.updateDialogValues(inputTripFeedback1); 
 | 
    }); 
 | 
  
 | 
    it(`Step 10 - ${StepDialog.clickOK()}`, async () => { 
 | 
      await dlgTripFeedback.clickOK(); 
 | 
    }); 
 | 
  
 | 
    it(`Step 11 - ${StepList.verifyRowExists(ListTripFeedback.title, rowTripFeedback1)}`, async () => { 
 | 
      await listTripFeedback.verifyRowExists(rowTripFeedback1); 
 | 
    }); 
 | 
  
 | 
    it(`Step 12 - ${StepButton.click('Create')}`, async () => { 
 | 
      await abpPlan.btnCreate.click(); 
 | 
    }); 
 | 
  
 | 
    it(`Step 13 - ${StepDialog.updateDialogValues(DialogTripFeedback.title, inputTripFeedback2)}`, async () => { 
 | 
      await dlgTripFeedback.updateDialogValues(inputTripFeedback2); 
 | 
    }); 
 | 
  
 | 
    it(`Step 14 - ${StepDialog.clickOK()}`, async () => { 
 | 
      await dlgTripFeedback.clickOK(); 
 | 
    }); 
 | 
  
 | 
    it(`Step 15 - ${StepList.verifyRowExists(ListTripFeedback.title, rowTripFeedback2)}`, async () => { 
 | 
      await listTripFeedback.verifyRowExists(rowTripFeedback2); 
 | 
    }); 
 | 
  }); 
 | 
  
 | 
  describe('Edit trip feedback', () => { 
 | 
    it(`Step 1 - ${StepList.selectRowAndClickMenu(ListTripFeedback.title, rowTripFeedback1, ListTripFeedbackContextMenuItem.Edit.Label)}`, async () => { 
 | 
      const row = await listTripFeedback.getRow(rowTripFeedback1); 
 | 
      await listTripFeedback.selectContextMenu(ListTripFeedbackContextMenuItem.Edit, row); 
 | 
    }); 
 | 
  
 | 
    it(`Step 2 - ${StepDialog.verifyDialogValues(DialogTripFeedback.title, inputTripFeedback1)}`, async () => { 
 | 
      await dlgTripFeedback.verifyDialogValues(inputTripFeedback1); 
 | 
    }); 
 | 
  
 | 
    it(`Step 3 - ${StepDialog.updateDialogValues(DialogTripFeedback.title, inputTripFeedback3)} ${StepDialog.clickOK()}`, async () => { 
 | 
      await dlgTripFeedback.updateDialogValues(inputTripFeedback3); 
 | 
      await dlgTripFeedback.clickOK(); 
 | 
    }); 
 | 
  
 | 
    it(`Step 4 - ${StepList.verifyRowExists(ListTripFeedback.title, rowTripFeedback3)}`, async () => { 
 | 
      await listTripFeedback.verifyRowExists(rowTripFeedback3); 
 | 
    }); 
 | 
  }); 
 | 
}); 
 |