@Test
  public void sheduleARemoveOperationAndOpenConfirmationDialog() {

    controller.openRemoveSelectedDecreeConfirmationDialog(REMOVE_OUTCOME);

    verify(cache).scheduleRemoveOperation();
    verify(dialog).displayBeforeRemoveConfirmationDialog(REMOVE_OUTCOME);
  }
  @Test
  public void sheduleAnEditOperationAndOpenTheDialog() {

    controller.openEditSelectedDecreeDialog(EDIT_OUTCOME);

    InOrder inOrder = inOrder(cache, dialog);

    inOrder.verify(cache).scheduleEditOperation();
    inOrder.verify(dialog).displayInputForm(EDIT_OUTCOME);
  }
  @Test
  public void createAnEmptyDecreeAndSheduleACreateOperationAndOpenDialog() {

    controller.openCreateNewDecreeDialog(EDIT_OUTCOME);

    InOrder inOrder = inOrder(cache, dialog);

    inOrder.verify(cache).createNewDecree();
    inOrder.verify(cache).scheduleCreateOperation();
    inOrder.verify(dialog).displayInputForm(EDIT_OUTCOME);
  }
  @Test
  public void theDecreeTypeOfDecreeAndDecreeTypeOffederalLawShouldBeReturned() {

    DecreeType[] decreeTypes = controller.getDecreeTypes();
    assertThat(Arrays.asList(decreeTypes), hasItems(DecreeType.DECREE, DecreeType.FEDERAL_LAW));
  }