优化
This commit is contained in:
@@ -64,6 +64,44 @@ class FinanceSettlementBehaviorTest {
|
||||
user(Set.of("platform:finance:settlement-ar:view")), 88L)).isInstanceOf(AccessDeniedException.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void controllerListsFormalSettlementsByDirection() {
|
||||
FinanceSettlementController controller = new FinanceSettlementController(controllerService);
|
||||
SettlementSummary receivable = detail("RECEIVABLE", "ISSUED", BigDecimal.ZERO,
|
||||
new BigDecimal("100.00"), 0).summary();
|
||||
when(controllerService.listSettlements("RECEIVABLE", 10L)).thenReturn(List.of(receivable));
|
||||
|
||||
var response = controller.receivableSettlements(10L);
|
||||
|
||||
assertThat(response.code()).isEqualTo("200");
|
||||
assertThat(response.data()).containsExactly(receivable);
|
||||
verify(controllerService).listSettlements("RECEIVABLE", 10L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void formalSettlementListUsesFinSettlementAndOptionalCustomerFilter() {
|
||||
JdbcTemplate jdbc = org.mockito.Mockito.mock(JdbcTemplate.class);
|
||||
Map<String, Object> row = settlementRow("PAYABLE", "ISSUED", BigDecimal.ZERO,
|
||||
new BigDecimal("100.00"), 0);
|
||||
when(jdbc.queryForList(anyString(), eq("PAYABLE"))).thenReturn(List.of(row));
|
||||
when(jdbc.queryForList(anyString(), eq("PAYABLE"), eq(10L))).thenReturn(List.of(row));
|
||||
FinanceSettlementService service = service(jdbc, org.mockito.Mockito.mock(FinanceFileClient.class));
|
||||
|
||||
var all = service.listSettlements("PAYABLE", null);
|
||||
var scoped = service.listSettlements("PAYABLE", 10L);
|
||||
|
||||
assertThat(all).singleElement().extracting(SettlementSummary::settlementId).isEqualTo(88L);
|
||||
assertThat(scoped).singleElement().extracting(SettlementSummary::customerId).isEqualTo(10L);
|
||||
ArgumentCaptor<String> allSql = ArgumentCaptor.forClass(String.class);
|
||||
ArgumentCaptor<String> scopedSql = ArgumentCaptor.forClass(String.class);
|
||||
verify(jdbc).queryForList(allSql.capture(), eq("PAYABLE"));
|
||||
verify(jdbc).queryForList(scopedSql.capture(), eq("PAYABLE"), eq(10L));
|
||||
assertThat(allSql.getValue()).contains("FROM fin_settlement WHERE direction=?")
|
||||
.doesNotContain("FROM fin_bill", "FROM fin_cost", "tenant_id=?");
|
||||
assertThat(scopedSql.getValue()).contains("FROM fin_settlement WHERE direction=?", "tenant_id=?")
|
||||
.doesNotContain("FROM fin_bill", "FROM fin_cost");
|
||||
}
|
||||
|
||||
@Test
|
||||
void arCreationRejectsNonCnyBeforeDatabaseAccess() {
|
||||
JdbcTemplate jdbc = org.mockito.Mockito.mock(JdbcTemplate.class);
|
||||
|
||||
Reference in New Issue
Block a user