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 6ea8ebf..a9b5df3 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 @@ -69,6 +69,10 @@ public class HistoryService { addIfChanged(changes, "personalUseAmount", before.getPersonalUseAmount(), after.getPersonalUseAmount()); addIfChanged(changes, "otherPersonAmount", before.getOtherPersonAmount(), after.getOtherPersonAmount()); addIfChanged(changes, "category", before.getCategory(), after.getCategory()); + addIfChanged(changes, "splitMode", + before.getSplitMode() == null ? null : before.getSplitMode().name(), + after.getSplitMode() == null ? null : after.getSplitMode().name()); + addIfChanged(changes, "splitPercentage", before.getSplitPercentage(), after.getSplitPercentage()); addIfChanged(changes, "date", before.getDate(), after.getDate()); addIfChanged(changes, "owner", before.getOwner() == null ? null : before.getOwner().getUsername(), diff --git a/src/test/java/de/zendric/app/xpensely_Server/services/HistoryServiceTest.java b/src/test/java/de/zendric/app/xpensely_Server/services/HistoryServiceTest.java index 7301a35..4528dd1 100644 --- a/src/test/java/de/zendric/app/xpensely_Server/services/HistoryServiceTest.java +++ b/src/test/java/de/zendric/app/xpensely_Server/services/HistoryServiceTest.java @@ -24,6 +24,7 @@ import de.zendric.app.xpensely_server.model.ExpenseHistoryEntry; import de.zendric.app.xpensely_server.model.ExpenseList; import de.zendric.app.xpensely_server.model.FieldChange; import de.zendric.app.xpensely_server.model.HistoryEntryType; +import de.zendric.app.xpensely_server.model.SplitMode; import de.zendric.app.xpensely_server.repo.ExpenseHistoryRepository; import de.zendric.app.xpensely_server.services.HistoryService; @@ -86,6 +87,22 @@ class HistoryServiceTest { assertThat(changes).containsExactly(new FieldChange("owner", "alice", "ben")); } + @Test + void diff_reportsSplitModeAndPercentageChanges() { + Expense before = new Expense(); + before.setSplitMode(SplitMode.DETAILED); + before.setSplitPercentage(null); + + Expense after = new Expense(); + after.setSplitMode(SplitMode.PERCENTAGE); + after.setSplitPercentage(70); + + List changes = service.diff(before, after); + + assertThat(changes).contains(new FieldChange("splitMode", "DETAILED", "PERCENTAGE")); + assertThat(changes).contains(new FieldChange("splitPercentage", null, "70")); + } + @Test void diff_nullToValue_isReported() { Expense before = expense("Taxi", 9.0, null, LocalDate.of(2026, 7, 1), user(1L, "alice"));