test: 提升ShareTrackingController测试覆盖率
- 新增2个测试覆盖时间范围和参数处理 * getShareMetrics提供时间范围的场景 * registerShareSource处理null参数的场景 覆盖率提升: - 总体分支覆盖率: 63% → 63.3% (+2个分支) - Controller包: 80% → 84% (+4%) - ShareTrackingController: 70% → 更高 - 新增测试用例: 2个 - 距离70%目标: 还需42个分支
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user