feat: 修改字段类型修改不生效的问题
All checks were successful
序列化结构检查 / serialization-schema-check (push) Has been skipped
All checks were successful
序列化结构检查 / serialization-schema-check (push) Has been skipped
This commit is contained in:
@@ -51,6 +51,57 @@ class SchemaDifferTest {
|
||||
assertEquals(1, changes.size());
|
||||
assertEquals(ChangeType.TYPE_CHANGED, changes.get(0).getChangeType());
|
||||
assertEquals(Severity.P0, changes.get(0).getSeverity());
|
||||
assertTrue(changes.get(0).getMessage().contains("String"));
|
||||
assertTrue(changes.get(0).getMessage().contains("Integer"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void detectsBigDecimalToStringEvenWhenBothWereStringBucketHistorically() {
|
||||
// 即便 JsonType 同为 STRING,javaType 变化也必须检出(用户真实漏报场景)
|
||||
TypeSchema oldS = new TypeSchema("A");
|
||||
oldS.add(new FieldSchema("amount", JsonType.STRING, "BigDecimal"));
|
||||
TypeSchema newS = new TypeSchema("A");
|
||||
newS.add(new FieldSchema("amount", JsonType.STRING, "String"));
|
||||
|
||||
List<SchemaChange> changes = new SchemaDiffer().diff(oldS, newS);
|
||||
assertEquals(1, changes.size());
|
||||
assertEquals(ChangeType.TYPE_CHANGED, changes.get(0).getChangeType());
|
||||
assertEquals("amount", changes.get(0).getFieldPath());
|
||||
assertTrue(changes.get(0).getOldValue().contains("BigDecimal"));
|
||||
assertTrue(changes.get(0).getNewValue().contains("String"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void detectsBigDecimalToStringViaJsonTypeAndJavaType() {
|
||||
TypeSchema oldS = new TypeSchema("A");
|
||||
oldS.add(new FieldSchema("amount", JsonType.NUMBER, "BigDecimal"));
|
||||
TypeSchema newS = new TypeSchema("A");
|
||||
newS.add(new FieldSchema("amount", JsonType.STRING, "String"));
|
||||
|
||||
List<SchemaChange> changes = new SchemaDiffer().diff(oldS, newS);
|
||||
assertEquals(1, changes.size());
|
||||
assertEquals(ChangeType.TYPE_CHANGED, changes.get(0).getChangeType());
|
||||
}
|
||||
|
||||
@Test
|
||||
void detectsIntegerToLongWithinNumberBucket() {
|
||||
TypeSchema oldS = new TypeSchema("A");
|
||||
oldS.add(new FieldSchema("id", JsonType.NUMBER, "Integer"));
|
||||
TypeSchema newS = new TypeSchema("A");
|
||||
newS.add(new FieldSchema("id", JsonType.NUMBER, "Long"));
|
||||
|
||||
List<SchemaChange> changes = new SchemaDiffer().diff(oldS, newS);
|
||||
assertEquals(1, changes.size());
|
||||
assertEquals(ChangeType.TYPE_CHANGED, changes.get(0).getChangeType());
|
||||
}
|
||||
|
||||
@Test
|
||||
void noChangeWhenPrimitiveAndWrapperEquivalent() {
|
||||
TypeSchema a = new TypeSchema("A");
|
||||
a.add(new FieldSchema("n", JsonType.NUMBER, "int"));
|
||||
TypeSchema b = new TypeSchema("A");
|
||||
b.add(new FieldSchema("n", JsonType.NUMBER, "Integer"));
|
||||
assertTrue(new SchemaDiffer().diff(a, b).isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user