feat(theme)!: 下线粉/紫两包,改以学院蓝为基座交付 academic-navy/campus-azure 两套高校官网风皮肤
build / build-push (push) Successful in 51s
build / build-push (push) Successful in 51s
线上 10027 首页配了 home_layout 后走 themes/common 通用骨架,派生皮肤只换了页头页脚, 正文仍是骨架内置蓝灰卡(外加 cherry-bloom 的粉紫配色),用户判定"完全不能用"。 - 新增 academic-navy(学府藏蓝,an-)/campus-azure(青蓝校园,cz-):以 scholar-blue 为基座, 各自自带 fragments/home-blocks.html 与 home.html 分发,news_grid/media_focus/compact/ image_wall/card/ticker/gallery/links 八种区块形态全部由皮肤渲染,未知类型才回落通用骨架 - 两套皮肤 :root 把私有变量别名到 --primary/--text/--card-bg/--border/--radius 契约变量; 中文行锁 nowrap+min-width:0+ellipsis,grid 轨道用 minmax(0,1fr) 防窄视口压塌 - 新闻背景带 .an-sec-bg/.cz-sec-bg 压 z-index:0、卡片抬到 1:绝对定位层默认画在普通流之上, 不抬起会整张卡片泛成底图色(无头截图实测) - common 骨架空态守卫改包 th:block(th:replace 优先级 100 先于 th:if 300) - 删除 cherry-bloom/violet-iris;sql/upgrade_theme_academic_skins.sql 幂等改指存量站点 (站点缓存 CacheNames.SITE TTL 30 分钟,改库后需重启或在管理端重存站点) - 测试:AcademicSkinContractTest(区块自带/分发/CJK 行/变量别名/主色必须学术蓝/背景带层级/ 预览图不得沿用基座)、HomeBlocksCssContractTest、PortalHomeLayoutIT 端到端断言零 plb- 输出; 全量 383 项通过
This commit is contained in:
@@ -105,11 +105,12 @@ class ThemeRegistryTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("新增包: cherry-bloom/violet-iris 注册成功,primary 与 default 及彼此互异(拷贝忘改哨兵)")
|
||||
void cherryBloomAndVioletIrisRegisteredWithDistinctPrimary() {
|
||||
@DisplayName("高校官网风新包: academic-navy/campus-azure 注册成功,主色与 default/scholar-blue 及彼此互异")
|
||||
void academicSkinsRegisteredWithDistinctPrimary() {
|
||||
String defaultPrimary = registry.get(ThemeRegistry.DEFAULT_THEME).param("primary").getDefaultValue();
|
||||
String scholarPrimary = registry.get("scholar-blue").param("primary").getDefaultValue();
|
||||
java.util.Map<String, String> seen = new java.util.LinkedHashMap<>();
|
||||
for (String name : new String[] {"cherry-bloom", "violet-iris"}) {
|
||||
for (String name : new String[] {"academic-navy", "campus-azure"}) {
|
||||
ThemeInfo info = registry.get(name);
|
||||
assertThat(info).as("%s 皮肤包必须注册(清单+必备模板+截图齐全)", name).isNotNull();
|
||||
assertThat(info.getTitle()).isNotBlank();
|
||||
@@ -117,9 +118,21 @@ class ThemeRegistryTest {
|
||||
assertThat(primary).as("%s 应声明 primary 参数", name).isNotNull();
|
||||
assertThat(primary.getDefaultValue())
|
||||
.as("%s 的 primary 不得与 default 相同", name).isNotEqualTo(defaultPrimary);
|
||||
assertThat(primary.getDefaultValue())
|
||||
.as("%s 的 primary 不得与基座 scholar-blue 相同(拷贝忘改哨兵)", name)
|
||||
.isNotEqualTo(scholarPrimary);
|
||||
seen.put(name, primary.getDefaultValue());
|
||||
}
|
||||
assertThat(seen.get("cherry-bloom")).isNotEqualTo(seen.get("violet-iris"));
|
||||
assertThat(seen.get("academic-navy")).isNotEqualTo(seen.get("campus-azure"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("下线包: cherry-bloom/violet-iris 不再注册(粉/紫两包不符高校官网风,用户否决)")
|
||||
void rejectedPinkSkinsAreGone() {
|
||||
for (String name : new String[] {"cherry-bloom", "violet-iris"}) {
|
||||
assertThat(registry.contains(name)).as("%s 必须已从皮肤库移除", name).isFalse();
|
||||
assertThat(registry.get(name)).isNull();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user