diff --git a/src/main/java/de/zendric/app/xpensely_server/repo/ExpenseHistoryRepository.java b/src/main/java/de/zendric/app/xpensely_server/repo/ExpenseHistoryRepository.java index 0009cca..d6f283e 100644 --- a/src/main/java/de/zendric/app/xpensely_server/repo/ExpenseHistoryRepository.java +++ b/src/main/java/de/zendric/app/xpensely_server/repo/ExpenseHistoryRepository.java @@ -15,4 +15,6 @@ public interface ExpenseHistoryRepository extends JpaRepository findAllExpenseIds(); + + void deleteByExpenseListId(Long expenseListId); } diff --git a/src/main/java/de/zendric/app/xpensely_server/services/ExpenseListService.java b/src/main/java/de/zendric/app/xpensely_server/services/ExpenseListService.java index e090e4d..57756e7 100644 --- a/src/main/java/de/zendric/app/xpensely_server/services/ExpenseListService.java +++ b/src/main/java/de/zendric/app/xpensely_server/services/ExpenseListService.java @@ -39,6 +39,7 @@ public class ExpenseListService { } public void deleteById(Long id) { + historyService.deleteForList(id); repository.deleteById(id); } diff --git a/src/main/java/de/zendric/app/xpensely_server/services/HistoryService.java b/src/main/java/de/zendric/app/xpensely_server/services/HistoryService.java index b16063b..8cd65ec 100644 --- a/src/main/java/de/zendric/app/xpensely_server/services/HistoryService.java +++ b/src/main/java/de/zendric/app/xpensely_server/services/HistoryService.java @@ -57,6 +57,10 @@ public class HistoryService { historyRepository.save(baseEntry(list, expense, actor, HistoryEntryType.DELETED)); } + public void deleteForList(Long listId) { + historyRepository.deleteByExpenseListId(listId); + } + public List diff(Expense before, Expense after) { List changes = new ArrayList<>(); addIfChanged(changes, "title", before.getTitle(), after.getTitle()); diff --git a/src/test/java/de/zendric/app/xpensely_Server/services/ExpenseListServiceTest.java b/src/test/java/de/zendric/app/xpensely_Server/services/ExpenseListServiceTest.java index ad7a25f..7c30ef6 100644 --- a/src/test/java/de/zendric/app/xpensely_Server/services/ExpenseListServiceTest.java +++ b/src/test/java/de/zendric/app/xpensely_Server/services/ExpenseListServiceTest.java @@ -109,6 +109,15 @@ class ExpenseListServiceTest { assertThat(beforeCaptor.getValue().getAmount()).isEqualTo(12.0); } + @Test + void deleteById_deletesHistoryEntriesBeforeDeletingList() { + service.deleteById(10L); + + org.mockito.InOrder inOrder = org.mockito.Mockito.inOrder(historyService, repository); + inOrder.verify(historyService).deleteForList(10L); + inOrder.verify(repository).deleteById(10L); + } + @Test void deleteExpenseFromList_recordsDeleted() { AppUser actor = new AppUser(); actor.setId(1L);