diff --git a/server/src/test/java/cn/keking/PictureFilePreviewTests.java b/server/src/test/java/cn/keking/PictureFilePreviewTests.java new file mode 100644 index 00000000..9885b634 --- /dev/null +++ b/server/src/test/java/cn/keking/PictureFilePreviewTests.java @@ -0,0 +1,46 @@ +package cn.keking; + +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * kkFileView #787 回归测试:直接图片预览(picture.ftl)必须在 Viewer.js 标题里显示文件名。 + * + * 根因:v4.3.0 之后模板把图片元素从 <img> 改成 <div src>,而 HTMLDivElement 没有 DOM 的 + * src 属性,Viewer.js 用 image.src 取标题得到 undefined,导致标题为空。修复方式是在 Viewer 初始化时 + * 配置 title 函数,从 data-original-url 派生文件名(该属性在元素克隆时会被保留)。 + */ +public class PictureFilePreviewTests { + + @Test + void shouldDeriveViewerTitleFromOriginalUrl() throws IOException { + String pictureTemplate = readResource("/web/picture.ftl"); + + // 模板仍保留 data-original-url 供标题派生使用 + assertTrue(pictureTemplate.contains("data-original-url"), + () -> "picture.ftl must keep data-original-url for title derivation (see #787)"); + + // Viewer 初始化必须配置 title 函数,否则