Skip to content

Commit acf81e7

Browse files
committed
added delete functionality
1 parent 69a4679 commit acf81e7

File tree

3 files changed

+73
-0
lines changed

3 files changed

+73
-0
lines changed

src/main/java/de/doubleslash/keeptime/controller/Controller.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,14 @@ public void editWork(final Work workToBeEdited, final Work newValuedWork) {
205205

206206
}
207207

208+
public void deleteWork(final Work workToBeDeleted) {
209+
210+
model.getPastWorkItems().removeIf(w -> (w.getId() == workToBeDeleted.getId()));
211+
212+
model.getWorkRepository().delete(workToBeDeleted);
213+
214+
}
215+
208216
/**
209217
* Changes the indexes of the originalList parameter to have a consistent order.
210218
*

src/main/java/de/doubleslash/keeptime/view/ReportController.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
import javafx.geometry.Pos;
4747
import javafx.scene.Node;
4848
import javafx.scene.canvas.Canvas;
49+
import javafx.scene.control.Alert;
50+
import javafx.scene.control.Alert.AlertType;
4951
import javafx.scene.control.Button;
5052
import javafx.scene.control.ButtonType;
5153
import javafx.scene.control.ContextMenu;
@@ -216,6 +218,28 @@ private void updateReport(final LocalDate dateToShow) {
216218

217219
contextMenu.getItems().add(editMenuItem);
218220

221+
final MenuItem deleteMenuItem = new MenuItem("delete");
222+
223+
deleteMenuItem.setOnAction(e -> {
224+
final Alert alert = new Alert(AlertType.CONFIRMATION);
225+
alert.setTitle("Delete Work");
226+
alert.setHeaderText("You are abaout too delete the work:\n" + work.toString());
227+
alert.setContentText("Are you sure?");
228+
alert.initOwner(stage);
229+
230+
final Optional<ButtonType> result = alert.showAndWait();
231+
232+
result.ifPresent(buttonType -> {
233+
if (buttonType == ButtonType.OK) {
234+
controller.deleteWork(work);
235+
}
236+
237+
this.update();
238+
});
239+
});
240+
241+
contextMenu.getItems().add(deleteMenuItem);
242+
219243
clickDummy.setOnContextMenuRequested(
220244
event -> contextMenu.show(clickDummy, event.getScreenX(), event.getScreenY()));
221245

src/test/java/de/doubleslash/keeptime/controller/ControllerTest.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import static org.hamcrest.Matchers.not;
2323
import static org.junit.Assert.assertEquals;
2424
import static org.junit.Assert.assertThat;
25+
import static org.junit.Assert.assertTrue;
2526

2627
import java.time.LocalDate;
2728
import java.time.LocalDateTime;
@@ -405,4 +406,44 @@ public void shouldNotUpdateOthersWhenWorkItemIsEdited() {
405406

406407
}
407408

409+
@Test
410+
public void shouldDeleteWorkPersistentlyWhenWorkIsDeleted() {
411+
412+
final Project project1 = new Project("workProject1", "Some description", Color.RED, true, 0);
413+
model.getAllProjects().add(project1);
414+
415+
final LocalDate localDateNow = LocalDate.now();
416+
final LocalDateTime localDateTimeMorning = LocalDateTime.now().withHour(4);
417+
418+
final Work work = new Work(localDateNow, localDateTimeMorning.plusHours(0), localDateTimeMorning.plusHours(1),
419+
project1, "originalWork");
420+
model.getPastWorkItems().add(work);
421+
422+
testee.deleteWork(work);
423+
424+
final ArgumentCaptor<Work> argument = ArgumentCaptor.forClass(Work.class);
425+
Mockito.verify(mockedWorkRepository, Mockito.times(1)).delete(argument.capture());
426+
assertThat("Edited work was not deleted persistently", argument.getValue(), is(work));
427+
428+
}
429+
430+
@Test
431+
public void shouldRemoveWorkFromPastWorkItemsWhenWorkIsDeleted() {
432+
433+
final Project project1 = new Project("workProject1", "Some description", Color.RED, true, 0);
434+
model.getAllProjects().add(project1);
435+
436+
final LocalDate localDateNow = LocalDate.now();
437+
final LocalDateTime localDateTimeMorning = LocalDateTime.now().withHour(4);
438+
439+
final Work work = new Work(localDateNow, localDateTimeMorning.plusHours(0), localDateTimeMorning.plusHours(1),
440+
project1, "originalWork");
441+
model.getPastWorkItems().add(work);
442+
443+
testee.deleteWork(work);
444+
445+
assertTrue("work Items contain work when it should have been deleted", model.getPastWorkItems().isEmpty());
446+
447+
}
448+
408449
}

0 commit comments

Comments
 (0)