@Test
  public void testUpdateAndRefreshJobPositions() {
    Project obj = dod.getNewTransientProject(4);
    assertNotNull("Data on demand for 'Project' failed to initialize correctly", obj);
    JobPosition jp1 = jobPositionDataOnDemand.getNewTransientJobPosition(8);
    assertNotNull("Data on demand for 'JobPosition' failed to initialize correctly", jp1);
    JobPosition jp2 = jobPositionDataOnDemand.getNewTransientJobPosition(9);
    JobPosition jp3 = jobPositionDataOnDemand.getNewTransientJobPosition(10);

    Date projDateFrom = DateTrimmer.addDays(DateTrimmer.today(), -20);
    Date projDateTo = DateTrimmer.addDays(DateTrimmer.today(), 20);

    obj.setDateFrom(projDateFrom);
    obj.setDateTo(projDateTo);
    obj.persist();

    jp1.setProject(obj);
    obj.getJobPositions().add(jp1);
    jp2.setProject(obj);
    obj.getJobPositions().add(jp2);
    jp3.setProject(obj);
    obj.getJobPositions().add(jp3);
    obj.persist();

    Date eheDateTo1 = DateTrimmer.addDays(projDateTo, -5);
    Date eheDateTo2 = DateTrimmer.addDays(projDateTo, -10);
    Date eheDateTo3 = DateTrimmer.addDays(projDateTo, 15);

    Employee emp1 = employeeDataOnDemand.getNewTransientEmployee(5);
    assertNotNull("Data on demand for 'Employee' failed to initialize correctly", emp1);
    emp1.persist();
    Employee emp2 = employeeDataOnDemand.getNewTransientEmployee(6);
    emp2.persist();
    Employee emp3 = employeeDataOnDemand.getNewTransientEmployee(7);
    emp3.persist();

    EmploymentHistoryEntry ehe1 =
        employmentHistoryEntryDataOnDemand.getNewTransientEmploymentHistoryEntry(5);
    assertNotNull(
        "Data on demand for 'EmploymentHistoryEntry' failed to initialize correctly", ehe1);
    EmploymentHistoryEntry ehe2 =
        employmentHistoryEntryDataOnDemand.getNewTransientEmploymentHistoryEntry(6);
    EmploymentHistoryEntry ehe3 =
        employmentHistoryEntryDataOnDemand.getNewTransientEmploymentHistoryEntry(7);

    prepareHistoryEntry(eheDateTo1, DateTrimmer.addDays(eheDateTo1, -50), emp1, ehe1);
    prepareHistoryEntry(eheDateTo2, DateTrimmer.addDays(eheDateTo2, -50), emp2, ehe2);
    prepareHistoryEntry(eheDateTo3, DateTrimmer.addDays(eheDateTo3, -50), emp3, ehe3);

    JobPositionHistoryEntry jphe1 =
        jobPositionHistoryEntryDataOnDemand.getNewTransientJobPositionHistoryEntry(5);
    assertNotNull(
        "Data on demand for 'JobPositionHistoryEntry' failed to initialize correctly", jphe1);
    jphe1.setJobPosition(jp1);
    jphe1.persist();
    JobPositionHistoryEntry jphe2 =
        jobPositionHistoryEntryDataOnDemand.getNewTransientJobPositionHistoryEntry(6);
    jphe2.setJobPosition(jp2);
    jphe2.persist();
    JobPositionHistoryEntry jphe3 =
        jobPositionHistoryEntryDataOnDemand.getNewTransientJobPositionHistoryEntry(7);
    jphe3.setJobPosition(jp3);
    jphe3.persist();

    prepareHistoryEntry(projDateTo, DateTrimmer.addDays(projDateTo, -50), emp1, jphe1);
    prepareHistoryEntry(projDateTo, DateTrimmer.addDays(projDateTo, -50), emp2, jphe2);
    prepareHistoryEntry(projDateTo, DateTrimmer.addDays(projDateTo, -50), emp3, jphe3);

    obj = Project.findProject(obj.getId());
    Date newProjEndDate = DateTrimmer.addDays(projDateTo, -7);
    obj.setDateTo(newProjEndDate);
    obj.setDescription("myDesc1");
    obj.setName("myName1");
    obj.setReferenceLink("http://www.mylink1.com/");
    obj.updateAndRefreshJobPositions();
    obj = Project.findProject(obj.getId());
    jphe1 = JobPositionHistoryEntry.findJobPositionHistoryEntry(jphe1.getId());
    assertEquals(
        "Wrong date to assigned to job position history", jphe1.getDateTo(), obj.getDateTo());
    jphe2 = JobPositionHistoryEntry.findJobPositionHistoryEntry(jphe2.getId());
    assertEquals(
        "Wrong date to assigned to job position history", jphe2.getDateTo(), ehe2.getDateTo());
    jphe3 = JobPositionHistoryEntry.findJobPositionHistoryEntry(jphe3.getId());
    assertEquals(
        "Wrong date to assigned to job position history", jphe3.getDateTo(), obj.getDateTo());

    assertEquals(obj.getName(), "myName1");
    assertEquals(obj.getDescription(), "myDesc1");
    assertEquals(obj.getReferenceLink(), "http://www.mylink1.com/");
  }