Skip to content

Commit 54b63a1

Browse files
committed
fixed test and removed duplicate Workitems in Timeline
1 parent 41dc3e8 commit 54b63a1

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,19 +187,21 @@ public void editProject(final Project projectToBeUpdated, final Project newValue
187187
public void editWork(final Work workToBeEdited, final Work newValuedWork) {
188188
LOG.info("Changing work '{}' to '{}'.", workToBeEdited, newValuedWork);
189189

190+
model.getPastWorkItems().removeIf(w -> (w.getId() == workToBeEdited.getId()));
191+
190192
workToBeEdited.setCreationDate(newValuedWork.getCreationDate());
191193
workToBeEdited.setStartTime(newValuedWork.getStartTime());
192194
workToBeEdited.setEndTime(newValuedWork.getEndTime());
193195
workToBeEdited.setNotes(newValuedWork.getNotes());
194196
workToBeEdited.setProject(newValuedWork.getProject());
195197

198+
final Work editedWork = model.getWorkRepository().save(workToBeEdited);
199+
196200
final LocalDate dateNow = dateProvider.dateTimeNow().toLocalDate();
197-
if (dateNow.equals(workToBeEdited.getCreationDate())) {
198-
model.getPastWorkItems().add(workToBeEdited);
201+
if (dateNow.equals(editedWork.getCreationDate())) {
202+
model.getPastWorkItems().add(editedWork);
199203
}
200204

201-
model.getWorkRepository().save(workToBeEdited);
202-
203205
}
204206

205207
/**

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@
3535
import org.junit.Test;
3636
import org.mockito.ArgumentCaptor;
3737
import org.mockito.Mockito;
38+
import org.mockito.invocation.InvocationOnMock;
39+
import org.mockito.stubbing.Answer;
40+
import org.springframework.test.util.ReflectionTestUtils;
3841

3942
import de.doubleslash.keeptime.common.DateProvider;
4043
import de.doubleslash.keeptime.model.Model;
@@ -334,6 +337,14 @@ public void shouldCalculateSecondsCorrectlyWhenWorkItemsAreGiven() {
334337
@Test
335338
public void shouldUpdateWorkItemPersistentlyWhenWorkItemIsEdited() {
336339
Mockito.when(mockedDateProvider.dateTimeNow()).thenReturn(LocalDateTime.now());
340+
Mockito.when(mockedWorkRepository.save(Mockito.any(Work.class))).thenAnswer(new Answer<Work>() {
341+
342+
@Override
343+
public Work answer(final InvocationOnMock invocation) {
344+
final Object[] args = invocation.getArguments();
345+
return (Work) args[0];
346+
}
347+
});
337348

338349
final Project project1 = new Project("workProject1", "Some description", Color.RED, true, 0);
339350
model.getAllProjects().add(project1);
@@ -366,6 +377,13 @@ public void shouldUpdateWorkItemPersistentlyWhenWorkItemIsEdited() {
366377
@Test
367378
public void shouldNotUpdateOthersWhenWorkItemIsEdited() {
368379
Mockito.when(mockedDateProvider.dateTimeNow()).thenReturn(LocalDateTime.now());
380+
Mockito.when(mockedWorkRepository.save(Mockito.any(Work.class))).thenAnswer(new Answer<Work>() {
381+
@Override
382+
public Work answer(final InvocationOnMock invocation) {
383+
final Object[] args = invocation.getArguments();
384+
return (Work) args[0];
385+
}
386+
});
369387

370388
final Project project1 = new Project("workProject1", "Some description", Color.RED, true, 0);
371389
model.getAllProjects().add(project1);
@@ -375,14 +393,17 @@ public void shouldNotUpdateOthersWhenWorkItemIsEdited() {
375393

376394
final Work notToBeUpdatedWork = new Work(localDateNow, localDateTimeMorning.plusHours(0),
377395
localDateTimeMorning.plusHours(1), project1, "originalWork");
396+
ReflectionTestUtils.setField(notToBeUpdatedWork, "id", 1);
378397
model.getPastWorkItems().add(notToBeUpdatedWork);
379398

380399
final Work originalWork = new Work(localDateNow, localDateTimeMorning.plusHours(1),
381400
localDateTimeMorning.plusHours(2), project1, "originalWork");
401+
ReflectionTestUtils.setField(originalWork, "id", 2);
382402
model.getPastWorkItems().add(originalWork);
383403

384404
final Work newWork = new Work(localDateNow, localDateTimeMorning.plusHours(3), localDateTimeMorning.plusHours(4),
385405
project1, "updated");
406+
ReflectionTestUtils.setField(newWork, "id", 3);
386407

387408
testee.editWork(originalWork, newWork);
388409

0 commit comments

Comments
 (0)