feat: 新增对 未知key 的处理逻辑
All checks were successful
缓存序列化结构检查 / cache-schema-check (push) Has been skipped
All checks were successful
缓存序列化结构检查 / cache-schema-check (push) Has been skipped
This commit is contained in:
@@ -47,6 +47,8 @@ class ReportBuilderTest {
|
||||
|
||||
KeyStructureChange key = new KeyStructureChange();
|
||||
key.setKeyPattern("saas:period-config:migration:current");
|
||||
key.setWriteLocation("SaasPeriodConfigMigrationRedisSupport#putCurrent:41");
|
||||
key.setValueType("MigrationCurrentVo");
|
||||
key.setOldSkeletonJson(oldJson);
|
||||
key.setNewSkeletonJson(newJson);
|
||||
key.setSeverity(Severity.P1);
|
||||
@@ -56,9 +58,10 @@ class ReportBuilderTest {
|
||||
|
||||
String md = new ReportBuilder("[缓存结构变更]").toMarkdown(report);
|
||||
|
||||
// Key:颜色 + 行内代码(与 ReportBuilder.appendKeyLine 一致)
|
||||
assertTrue(md.contains(
|
||||
"- <font color=\"warning\">`Key --> saas:period-config:migration:current`</font>"));
|
||||
assertTrue(md.contains("- Key --> `saas:period-config:migration:current`"));
|
||||
assertFalse(md.contains("(key 未解析)"));
|
||||
assertTrue(md.contains("> **位置**: `SaasPeriodConfigMigrationRedisSupport#putCurrent:41`"));
|
||||
assertTrue(md.contains("> **类型**: `MigrationCurrentVo`"));
|
||||
|
||||
int oldSection = md.indexOf("> **value值由:**");
|
||||
int newSection = md.indexOf("> **变更为:**");
|
||||
@@ -131,11 +134,36 @@ class ReportBuilderTest {
|
||||
assertTrue(console.contains("======== 字段明细 ========"));
|
||||
assertTrue(console.contains("**删除字段**: x"));
|
||||
assertTrue(console.contains("<font color=\"warning\">\"x\":\"\"</font>"));
|
||||
assertTrue(console.contains("> **位置**: `"));
|
||||
assertTrue(console.contains("> **类型**: `"));
|
||||
assertTrue(console.contains("> **value值由:**"));
|
||||
assertTrue(console.contains("> **变更为:**"));
|
||||
assertFalse(console.contains("`{\"x\":\"\"}`"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void unresolvedKeyShowsExpressionAndCommentHint() {
|
||||
CheckReport report = baseReport();
|
||||
KeyStructureChange key = new KeyStructureChange();
|
||||
key.setKeyPattern("unknown-key");
|
||||
key.setKeyExpression("req.getKey()");
|
||||
key.setKeyUnresolved(true);
|
||||
key.setWriteLocation("ClockInXxxService#export:128");
|
||||
key.setValueType("List<ClockInExportVo>");
|
||||
key.setOldSkeletonJson("{\"a\":\"\"}");
|
||||
key.setNewSkeletonJson("{\"a\":\"\",\"b\":\"\"}");
|
||||
SchemaChange added = new SchemaChange(ChangeType.FIELD_ADDED);
|
||||
added.setFieldPath("b");
|
||||
key.getFieldDetails().add(added);
|
||||
report.getKeyChanges().add(key);
|
||||
|
||||
String md = new ReportBuilder("[缓存结构变更]").toMarkdown(report);
|
||||
assertTrue(md.contains("- Key --> `req.getKey()` <font color=\"comment\">(key 未解析)</font>"));
|
||||
assertTrue(md.contains("> **位置**: `ClockInXxxService#export:128`"));
|
||||
assertTrue(md.contains("> **类型**: `List<ClockInExportVo>`"));
|
||||
assertFalse(md.contains("unknown-key"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void pathAwareNestedHighlight() {
|
||||
String json = "{\"vo\":{\"dbName\":\"\",\"id\":\"\"},\"expiresAtMs\":0}";
|
||||
@@ -198,6 +226,8 @@ class ReportBuilderTest {
|
||||
String addedField) {
|
||||
KeyStructureChange key = new KeyStructureChange();
|
||||
key.setKeyPattern(pattern);
|
||||
key.setWriteLocation("DemoService#write:1");
|
||||
key.setValueType("DemoVo");
|
||||
key.setOldSkeletonJson(oldJson);
|
||||
key.setNewSkeletonJson(newJson);
|
||||
if (addedField != null) {
|
||||
|
||||
Reference in New Issue
Block a user