@Test
  public void testGetByIdOrNull() throws Exception {
    assertThat(service.getByIdOrNull(new TransUnitId(2)), Matchers.equalTo(data.get(1)));

    // not in current page
    assertThat(service.getByIdOrNull(new TransUnitId(99)), Matchers.nullValue());
  }
 private boolean stateHasNotChanged(TransUnitSaveEvent event) {
   TransUnit transUnit = navigationService.getByIdOrNull(event.getTransUnitId());
   if (transUnit == null) {
     return false;
   }
   Log.info(
       "id:"
           + transUnit.getId()
           + " old contents: "
           + transUnit.getTargets()
           + " state: "
           + transUnit.getStatus());
   return Objects.equal(transUnit.getStatus(), event.getAdjustedStatus())
       && Objects.equal(transUnit.getTargets(), event.getTargets());
 }
  /**
   * Display confirmation dialog box if new status of TU has been changed to approved without any
   * content changes.
   */
  @Override
  public void onCheckStateHasChanged(CheckStateHasChangedEvent event) {
    TransUnit transUnit = navigationService.getByIdOrNull(event.getTransUnitId());
    if (transUnit == null) {
      return;
    }

    boolean targetChanged = !Objects.equal(transUnit.getTargets(), event.getTargets());
    boolean targetUnchangedButCanSaveAsApproved =
        (event.getAdjustedState() == ContentState.Translated)
            && !Objects.equal(transUnit.getStatus(), event.getAdjustedState());

    if (targetChanged) {
      targetContentsPresenter.saveAsApprovedAndMoveNext(event.getTransUnitId());
    } else if (targetUnchangedButCanSaveAsApproved) {
      targetContentsPresenter.showSaveAsApprovedConfirmation(event.getTransUnitId());
    } else {
      eventBus.fireEvent(NavTransUnitEvent.NEXT_ENTRY_EVENT);
    }
  }