test: 提升ShareTrackingController测试覆盖率

- 新增2个测试覆盖时间范围和参数处理
  * getShareMetrics提供时间范围的场景
  * registerShareSource处理null参数的场景

覆盖率提升:
- 总体分支覆盖率: 63% → 63.3% (+2个分支)
- Controller包: 80% → 84% (+4%)
- ShareTrackingController: 70% → 更高
- 新增测试用例: 2个
- 距离70%目标: 还需42个分支
This commit is contained in:
Your Name
2026-03-03 11:58:22 +08:00
parent 4f5060724b
commit 81934725f3
2 changed files with 50 additions and 1 deletions

View File

@@ -229,4 +229,49 @@ class ShareTrackingControllerTest {
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(200));
}
@Test
void getShareMetrics_shouldUseProvidedTimeRange() throws Exception {
OffsetDateTime start = OffsetDateTime.now().minusDays(30);
OffsetDateTime end = OffsetDateTime.now();
ShareMetricsResponse metrics = new ShareMetricsResponse();
metrics.setActivityId(1L);
when(trackingService.getShareMetrics(eq(1L), any(), any())).thenReturn(metrics);
mockMvc.perform(get("/api/v1/share/metrics")
.param("activityId", "1")
.param("startTime", start.toString())
.param("endTime", end.toString())
.accept(MediaType.APPLICATION_JSON)
.header("X-API-Key", TestAuthSupport.RAW_API_KEY)
.header("Authorization", "Bearer test-token"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(200));
verify(trackingService).getShareMetrics(eq(1L), any(), any());
}
@Test
void registerShareSource_shouldHandleNullParams() throws Exception {
ShareTrackingResponse response = new ShareTrackingResponse("track-5", "ghi789", "https://example.com", 1L, 6L);
when(trackingService.createShareTracking(eq(1L), eq(6L), eq("email"), any())).thenReturn(response);
mockMvc.perform(post("/api/v1/share/register-source")
.param("activityId", "1")
.param("userId", "6")
.param("channel", "email")
.accept(MediaType.APPLICATION_JSON)
.header("X-API-Key", TestAuthSupport.RAW_API_KEY)
.header("Authorization", "Bearer test-token"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(200));
ArgumentCaptor<Map<String, String>> paramsCaptor = ArgumentCaptor.forClass(Map.class);
verify(trackingService).createShareTracking(eq(1L), eq(6L), eq("email"), paramsCaptor.capture());
Map<String, String> capturedParams = paramsCaptor.getValue();
assertThat(capturedParams).containsKey("channel");
assertThat(capturedParams).containsKey("registered_at");
assertThat(capturedParams.get("channel")).isEqualTo("email");
}
}