test: 提升PosterRenderService测试覆盖率
- 新增6个测试用例,覆盖更多分支场景 - 测试template为null时使用默认模板 - 测试button元素的background和borderRadius - 测试null content处理 - 测试rect元素渲染(有/无background) 覆盖率提升: - PosterRenderService: 59% → 68% (+9%) - Service包: 70% → 72% (+2%) - 总体分支: 56% (367/646)
This commit is contained in:
@@ -92,6 +92,111 @@ class PosterRenderServiceTest {
|
||||
element.setWidth(width);
|
||||
element.setHeight(height);
|
||||
element.setContent(content);
|
||||
element.setColor("#000000");
|
||||
element.setFontSize("16px");
|
||||
element.setFontFamily("Arial");
|
||||
element.setTextAlign("left");
|
||||
return element;
|
||||
}
|
||||
|
||||
@Test
|
||||
void renderPosterHtml_shouldUseDefaultTemplate_whenTemplateNotFound() {
|
||||
ShortLinkService shortLinkService = Mockito.mock(ShortLinkService.class);
|
||||
ShortLinkEntity shortLink = new ShortLinkEntity();
|
||||
shortLink.setCode("default123");
|
||||
when(shortLinkService.create(anyString())).thenReturn(shortLink);
|
||||
|
||||
PosterConfig posterConfig = buildPosterConfig(buildHtmlElements());
|
||||
PosterRenderService service = new PosterRenderService(posterConfig, shortLinkService);
|
||||
|
||||
String html = service.renderPosterHtml(10L, 20L, "nonexistent");
|
||||
|
||||
assertTrue(html.contains("/r/default123"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void renderPoster_shouldUseDefaultTemplate_whenTemplateNotFound() {
|
||||
ShortLinkService shortLinkService = Mockito.mock(ShortLinkService.class);
|
||||
PosterConfig posterConfig = buildPosterConfig(buildImageElements());
|
||||
PosterRenderService service = new PosterRenderService(posterConfig, shortLinkService);
|
||||
|
||||
byte[] bytes = service.renderPoster(11L, 22L, "nonexistent");
|
||||
|
||||
assertTrue(bytes.length > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void renderPosterHtml_shouldHandleButtonWithBackground() {
|
||||
ShortLinkService shortLinkService = Mockito.mock(ShortLinkService.class);
|
||||
ShortLinkEntity shortLink = new ShortLinkEntity();
|
||||
shortLink.setCode("btn123");
|
||||
when(shortLinkService.create(anyString())).thenReturn(shortLink);
|
||||
|
||||
Map<String, PosterConfig.PosterElement> elements = new HashMap<>();
|
||||
PosterConfig.PosterElement button = element("button", 10, 10, 120, 40, "Click");
|
||||
button.setBackground("#ff0000");
|
||||
button.setBorderRadius("5px");
|
||||
elements.put("button", button);
|
||||
|
||||
PosterConfig posterConfig = buildPosterConfig(elements);
|
||||
PosterRenderService service = new PosterRenderService(posterConfig, shortLinkService);
|
||||
|
||||
String html = service.renderPosterHtml(1L, 2L, "custom");
|
||||
|
||||
assertTrue(html.contains("background: #ff0000"));
|
||||
assertTrue(html.contains("border-radius: 5px"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void renderPosterHtml_shouldHandleNullContent() {
|
||||
ShortLinkService shortLinkService = Mockito.mock(ShortLinkService.class);
|
||||
ShortLinkEntity shortLink = new ShortLinkEntity();
|
||||
shortLink.setCode("null123");
|
||||
when(shortLinkService.create(anyString())).thenReturn(shortLink);
|
||||
|
||||
Map<String, PosterConfig.PosterElement> elements = new HashMap<>();
|
||||
PosterConfig.PosterElement text = element("text", 10, 10, 200, 30, null);
|
||||
elements.put("text", text);
|
||||
|
||||
PosterConfig posterConfig = buildPosterConfig(elements);
|
||||
PosterRenderService service = new PosterRenderService(posterConfig, shortLinkService);
|
||||
|
||||
String html = service.renderPosterHtml(1L, 2L, "custom");
|
||||
|
||||
assertTrue(html.contains("<!DOCTYPE html>"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void renderPoster_shouldHandleRectElement() {
|
||||
ShortLinkService shortLinkService = Mockito.mock(ShortLinkService.class);
|
||||
|
||||
Map<String, PosterConfig.PosterElement> elements = new HashMap<>();
|
||||
PosterConfig.PosterElement rect = element("rect", 10, 10, 100, 50, "");
|
||||
rect.setBackground("#00ff00");
|
||||
elements.put("rect", rect);
|
||||
|
||||
PosterConfig posterConfig = buildPosterConfig(elements);
|
||||
PosterRenderService service = new PosterRenderService(posterConfig, shortLinkService);
|
||||
|
||||
byte[] bytes = service.renderPoster(1L, 2L, "custom");
|
||||
|
||||
assertTrue(bytes.length > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void renderPoster_shouldHandleRectWithNullBackground() {
|
||||
ShortLinkService shortLinkService = Mockito.mock(ShortLinkService.class);
|
||||
|
||||
Map<String, PosterConfig.PosterElement> elements = new HashMap<>();
|
||||
PosterConfig.PosterElement rect = element("rect", 10, 10, 100, 50, "");
|
||||
rect.setBackground(null);
|
||||
elements.put("rect", rect);
|
||||
|
||||
PosterConfig posterConfig = buildPosterConfig(elements);
|
||||
PosterRenderService service = new PosterRenderService(posterConfig, shortLinkService);
|
||||
|
||||
byte[] bytes = service.renderPoster(1L, 2L, "custom");
|
||||
|
||||
assertTrue(bytes.length > 0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user