| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package com.ruoyi.app.pay;
- import com.ruoyi.app.pay.dto.RiderIncomePage;
- import com.ruoyi.common.annotation.Anonymous;
- import com.ruoyi.common.utils.MessageUtils;
- import com.ruoyi.system.domain.vo.RiderIncomeItem;
- import com.ruoyi.system.domain.vo.RiderIncomeSummary;
- import com.ruoyi.system.utils.Auth;
- import com.ruoyi.system.utils.AuthContext;
- import org.junit.jupiter.api.AfterEach;
- import org.junit.jupiter.api.BeforeEach;
- import org.junit.jupiter.api.Test;
- import org.mockito.MockedStatic;
- import org.springframework.test.web.servlet.MockMvc;
- import org.springframework.test.web.servlet.setup.MockMvcBuilders;
- import java.math.BigDecimal;
- import java.util.List;
- import static org.junit.jupiter.api.Assertions.*;
- import static org.mockito.ArgumentMatchers.*;
- import static org.mockito.Mockito.*;
- import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
- import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
- class RiderIncomeControllerTest {
- private final RiderIncomeService service = mock(RiderIncomeService.class);
- private MockMvc mvc;
- private MockedStatic<MessageUtils> messages;
- @BeforeEach void setUp() {
- messages = mockStatic(MessageUtils.class);
- messages.when(() -> MessageUtils.message(anyString())).thenReturn("ok");
- mvc = MockMvcBuilders.standaloneSetup(new RiderIncomeController(service)).build();
- }
- @AfterEach void tearDown() { messages.close(); }
- @Test
- void listDefaultsAndAuthenticatedIdentityAreExplicit() throws Exception {
- var summary = new RiderIncomeSummary(); summary.setTotalIncome(BigDecimal.ZERO);
- when(service.list(7L, null, null, "ALL", 1, 20)).thenReturn(
- new RiderIncomePage(null, null, summary, 0, 1, 20, List.of()));
- mvc.perform(get("/Billing/billing/riderIncome").header("token", "valid")
- .requestAttr(AuthContext.USER_ID_ATTRIBUTE, 7L).param("riderId", "999"))
- .andExpect(status().isOk()).andExpect(jsonPath("$.code").value(200))
- .andExpect(jsonPath("$.data.summary.totalIncome").value(0))
- .andExpect(jsonPath("$.data.periodOptions").doesNotExist())
- .andExpect(jsonPath("$.data.list").isEmpty());
- verify(service).list(7L, null, null, "ALL", 1, 20);
- }
- @Test
- void listBindsExplicitFiltersAndDetailUsesBillId() throws Exception {
- mvc.perform(get("/Billing/billing/riderIncome").header("token", "valid")
- .requestAttr(AuthContext.USER_ID_ATTRIBUTE, 7L)
- .param("startTime", "2026-11-01 00:00:00").param("endTime", "2026-11-30 23:59:59")
- .param("orderSource", "FLASH").param("pageNum", "2").param("pageSize", "10"))
- .andExpect(status().isOk());
- verify(service).list(7L, "2026-11-01 00:00:00", "2026-11-30 23:59:59", "FLASH", 2, 10);
- var item = new RiderIncomeItem(); item.setBillId(90L); item.setIncomeAmount(new BigDecimal("120.00"));
- item.setOrderNo("FD202611050001"); item.setOrderSource("FLASH");
- when(service.detail(7L, 90L)).thenReturn(item);
- mvc.perform(get("/Billing/billing/riderIncome/90").header("token", "valid")
- .requestAttr(AuthContext.USER_ID_ATTRIBUTE, 7L))
- .andExpect(status().isOk()).andExpect(jsonPath("$.data.billId").value(90))
- .andExpect(jsonPath("$.data.incomeAmount").value(120))
- .andExpect(jsonPath("$.data.orderNo").value("FD202611050001"))
- .andExpect(jsonPath("$.data.orderSource").value("FLASH"))
- .andExpect(jsonPath("$.data.orderId").doesNotExist())
- .andExpect(jsonPath("$.data.tipAmount").doesNotExist())
- .andExpect(jsonPath("$.data.walletBalance").doesNotExist());
- }
- @Test
- void tokenIsRequiredAndBothEndpointsUseAuthAspect() throws Exception {
- mvc.perform(get("/Billing/billing/riderIncome")).andExpect(status().isBadRequest());
- mvc.perform(get("/Billing/billing/riderIncome/1")).andExpect(status().isBadRequest());
- verifyNoInteractions(service);
- assertTrue(RiderIncomeController.class.isAnnotationPresent(Anonymous.class));
- assertTrue(RiderIncomeController.class.getMethod("list", String.class, String.class, String.class,
- String.class, Integer.class, Integer.class).isAnnotationPresent(Auth.class));
- assertTrue(RiderIncomeController.class.getMethod("detail", String.class, Long.class).isAnnotationPresent(Auth.class));
- }
- }
|