test: 提升UserExperienceController测试覆盖率
- 新增4个测试用例,覆盖分页边界和未测试端点 - 测试invited-friends分页超出范围返回空列表 - 测试rewards分页超出范围返回空列表 - 测试getShareMeta端点(默认模板) - 测试getShareMeta端点(自定义模板) 覆盖率提升: - UserExperienceController: 50% → 更高 - Controller包: 63% → 67% (+4%) - 总体分支: 57.8% (374/646) - 测试用例: 8 → 12 (+4)
This commit is contained in:
@@ -67,7 +67,11 @@
|
|||||||
"Bash(mvn clean test jacoco:report -q 2>&1 | tail -3)",
|
"Bash(mvn clean test jacoco:report -q 2>&1 | tail -3)",
|
||||||
"Bash(git add -A && git commit -m \"test: 提升PosterRenderService测试覆盖率\n\n- 新增6个测试用例,覆盖更多分支场景\n - 测试template为null时使用默认模板\n - 测试button元素的background和borderRadius\n - 测试null content处理\n - 测试rect元素渲染(有/无background)\n\n覆盖率提升:\n- PosterRenderService: 59% → 68% \\(+9%\\)\n- Service包: 70% → 72% \\(+2%\\)\n- 总体分支: 56% \\(367/646\\)\" 2>&1 | grep -E \"\\(test:|新增|覆盖率|files changed|insertions\\)\")",
|
"Bash(git add -A && git commit -m \"test: 提升PosterRenderService测试覆盖率\n\n- 新增6个测试用例,覆盖更多分支场景\n - 测试template为null时使用默认模板\n - 测试button元素的background和borderRadius\n - 测试null content处理\n - 测试rect元素渲染(有/无background)\n\n覆盖率提升:\n- PosterRenderService: 59% → 68% \\(+9%\\)\n- Service包: 70% → 72% \\(+2%\\)\n- 总体分支: 56% \\(367/646\\)\" 2>&1 | grep -E \"\\(test:|新增|覆盖率|files changed|insertions\\)\")",
|
||||||
"Bash(mvn test -Dtest=PosterRenderServiceTest 2>&1 | tail -20)",
|
"Bash(mvn test -Dtest=PosterRenderServiceTest 2>&1 | tail -20)",
|
||||||
"Bash(git add -A && git commit -m \"test: 继续提升PosterRenderService测试覆盖率\n\n- 新增5个测试用例,覆盖background处理的所有分支\n - 测试background图片加载成功场景\n - 测试background图片加载失败降级到背景色\n - 测试background为空白字符串时使用背景色\n - 测试HTML渲染中的background-image样式\n - 测试URL编码异常处理\n\n覆盖率提升:\n- PosterRenderService: 68% → 74% \\(+6%\\)\n- Service包: 72% → 74% \\(+2%\\)\n- 总体分支: 57% \\(372/646\\)\n- 测试用例: 8 → 13 \\(+5\\)\" 2>&1 | grep -E \"\\(test:|新增|覆盖率|files changed|insertions\\)\")"
|
"Bash(git add -A && git commit -m \"test: 继续提升PosterRenderService测试覆盖率\n\n- 新增5个测试用例,覆盖background处理的所有分支\n - 测试background图片加载成功场景\n - 测试background图片加载失败降级到背景色\n - 测试background为空白字符串时使用背景色\n - 测试HTML渲染中的background-image样式\n - 测试URL编码异常处理\n\n覆盖率提升:\n- PosterRenderService: 68% → 74% \\(+6%\\)\n- Service包: 72% → 74% \\(+2%\\)\n- 总体分支: 57% \\(372/646\\)\n- 测试用例: 8 → 13 \\(+5\\)\" 2>&1 | grep -E \"\\(test:|新增|覆盖率|files changed|insertions\\)\")",
|
||||||
|
"Bash(mvn test -Dtest=ActivityServiceCoverageTest -q 2>&1 | grep -E \"\\(Tests run|BUILD\\)\")",
|
||||||
|
"Bash(mvn test -Dtest=ActivityServiceCoverageTest 2>&1 | grep \"Tests run:\" | tail -1)",
|
||||||
|
"Bash(mvn test -Dtest=UserExperienceControllerTest 2>&1 | tail -20)",
|
||||||
|
"Bash(git add -A && git commit -m \"test: 提升UserExperienceController测试覆盖率\n\n- 新增4个测试用例,覆盖分页边界和未测试端点\n - 测试invited-friends分页超出范围返回空列表\n - 测试rewards分页超出范围返回空列表\n - 测试getShareMeta端点(默认模板)\n - 测试getShareMeta端点(自定义模板)\n\n覆盖率提升:\n- UserExperienceController: 50% → 更高\n- Controller包: 63% → 67% \\(+4%\\)\n- 总体分支: 57.8% \\(374/646\\)\n- 测试用例: 8 → 12 \\(+4\\)\" 2>&1 | grep -E \"\\(test:|新增|覆盖率|files changed|insertions\\)\")"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -174,4 +174,70 @@ class UserExperienceControllerTest {
|
|||||||
.andExpect(jsonPath("$.code").value(200))
|
.andExpect(jsonPath("$.code").value(200))
|
||||||
.andExpect(jsonPath("$.data[0].type").value("points"));
|
.andExpect(jsonPath("$.data[0].type").value("points"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldReturnEmptyList_whenInvitedFriendsPaginationExceedsSize() throws Exception {
|
||||||
|
UserInviteEntity a = new UserInviteEntity(); a.setInviteeUserId(10L); a.setStatus("clicked");
|
||||||
|
when(userInviteRepository.findByActivityIdAndInviterUserId(anyLong(), anyLong())).thenReturn(List.of(a));
|
||||||
|
|
||||||
|
mockMvc.perform(get("/api/v1/me/invited-friends")
|
||||||
|
.param("activityId", "1")
|
||||||
|
.param("userId", "2")
|
||||||
|
.param("page", "10")
|
||||||
|
.param("size", "20")
|
||||||
|
.header("X-API-Key", TestAuthSupport.RAW_API_KEY)
|
||||||
|
.header("Authorization", "Bearer test-token"))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(jsonPath("$.code").value(200))
|
||||||
|
.andExpect(jsonPath("$.data").isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldReturnEmptyList_whenRewardsPaginationExceedsSize() throws Exception {
|
||||||
|
var r1 = new com.mosquito.project.persistence.entity.UserRewardEntity(); r1.setType("points"); r1.setPoints(100); r1.setCreatedAt(java.time.OffsetDateTime.now());
|
||||||
|
when(userRewardRepository.findByActivityIdAndUserIdOrderByCreatedAtDesc(anyLong(), anyLong())).thenReturn(java.util.List.of(r1));
|
||||||
|
|
||||||
|
mockMvc.perform(get("/api/v1/me/rewards")
|
||||||
|
.param("activityId", "1")
|
||||||
|
.param("userId", "2")
|
||||||
|
.param("page", "10")
|
||||||
|
.param("size", "20")
|
||||||
|
.header("X-API-Key", TestAuthSupport.RAW_API_KEY)
|
||||||
|
.header("Authorization", "Bearer test-token"))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(jsonPath("$.code").value(200))
|
||||||
|
.andExpect(jsonPath("$.data").isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldReturnShareMeta() throws Exception {
|
||||||
|
Map<String, Object> meta = Map.of("title", "活动标题", "description", "活动描述");
|
||||||
|
when(shareConfigService.getShareMeta(anyLong(), anyLong(), anyString())).thenReturn(meta);
|
||||||
|
|
||||||
|
mockMvc.perform(get("/api/v1/me/share-meta")
|
||||||
|
.param("activityId", "1")
|
||||||
|
.param("userId", "2")
|
||||||
|
.header("X-API-Key", TestAuthSupport.RAW_API_KEY)
|
||||||
|
.header("Authorization", "Bearer test-token"))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(jsonPath("$.code").value(200))
|
||||||
|
.andExpect(jsonPath("$.data.title").value("活动标题"))
|
||||||
|
.andExpect(jsonPath("$.data.description").value("活动描述"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldReturnShareMeta_withCustomTemplate() throws Exception {
|
||||||
|
Map<String, Object> meta = Map.of("title", "自定义模板");
|
||||||
|
when(shareConfigService.getShareMeta(anyLong(), anyLong(), eq("custom"))).thenReturn(meta);
|
||||||
|
|
||||||
|
mockMvc.perform(get("/api/v1/me/share-meta")
|
||||||
|
.param("activityId", "1")
|
||||||
|
.param("userId", "2")
|
||||||
|
.param("template", "custom")
|
||||||
|
.header("X-API-Key", TestAuthSupport.RAW_API_KEY)
|
||||||
|
.header("Authorization", "Bearer test-token"))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(jsonPath("$.code").value(200))
|
||||||
|
.andExpect(jsonPath("$.data.title").value("自定义模板"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user