Release 1.2.1 #19
@@ -3,6 +3,8 @@ package de.zendric.app.xpensely_server.model;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
import jakarta.validation.constraints.DecimalMin;
|
import jakarta.validation.constraints.DecimalMin;
|
||||||
|
import jakarta.validation.constraints.Max;
|
||||||
|
import jakarta.validation.constraints.Min;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
@@ -34,6 +36,9 @@ public class ExpenseChangeRequest {
|
|||||||
private Double otherPersonAmount;
|
private Double otherPersonAmount;
|
||||||
|
|
||||||
private SplitMode splitMode;
|
private SplitMode splitMode;
|
||||||
|
|
||||||
|
@Min(0)
|
||||||
|
@Max(100)
|
||||||
private Integer splitPercentage;
|
private Integer splitPercentage;
|
||||||
|
|
||||||
@NotNull(message = "Date is required")
|
@NotNull(message = "Date is required")
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package de.zendric.app.xpensely_server.model;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
import jakarta.validation.constraints.DecimalMin;
|
import jakarta.validation.constraints.DecimalMin;
|
||||||
|
import jakarta.validation.constraints.Max;
|
||||||
|
import jakarta.validation.constraints.Min;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
@@ -34,6 +36,9 @@ public class ExpenseInput {
|
|||||||
private Double otherPersonAmount;
|
private Double otherPersonAmount;
|
||||||
|
|
||||||
private SplitMode splitMode;
|
private SplitMode splitMode;
|
||||||
|
|
||||||
|
@Min(0)
|
||||||
|
@Max(100)
|
||||||
private Integer splitPercentage;
|
private Integer splitPercentage;
|
||||||
|
|
||||||
@NotNull(message = "Date is required")
|
@NotNull(message = "Date is required")
|
||||||
|
|||||||
+15
@@ -333,6 +333,21 @@ class ExpenseListControllerTest {
|
|||||||
org.mockito.Mockito.verify(expenseListService).updateDefaultSplit(5L, 60);
|
org.mockito.Mockito.verify(expenseListService).updateDefaultSplit(5L, 60);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void updateDefaultSplit_nonMember_returns403() throws Exception {
|
||||||
|
AppUser owner = new AppUser(); owner.setId(1L);
|
||||||
|
AppUser stranger = new AppUser(); stranger.setId(2L);
|
||||||
|
ExpenseList list = new ExpenseList(); list.setId(5L); list.setOwner(owner);
|
||||||
|
|
||||||
|
when(expenseListService.findById(5L)).thenReturn(Optional.of(list));
|
||||||
|
when(authenticatedUserResolver.resolveCurrentUser(any())).thenReturn(stranger);
|
||||||
|
|
||||||
|
mockMvc.perform(put("/api/expenselist/5/default-split")
|
||||||
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
|
.content("{\"percentage\":60}"))
|
||||||
|
.andExpect(status().isForbidden());
|
||||||
|
}
|
||||||
|
|
||||||
// --- Duplicate-username invite guard ---
|
// --- Duplicate-username invite guard ---
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user