This commit is contained in:
+48
-1
@@ -138,10 +138,57 @@ class FlowDefAdminServicePublishContractTest {
|
||||
|
||||
BizException ex = assertThrows(BizException.class, () -> service.publish(SCH, 9L));
|
||||
assertTrue(ex.getMessage().contains("level"), "红牌要点名未知变量:" + ex.getMessage());
|
||||
assertTrue(ex.getMessage().contains("键查"), "错误文案给可定位的键查提示");
|
||||
assertTrue(ex.getMessage().contains("不在关联表单字段集内"), "键查①给可定位的问题行");
|
||||
verify(defRepository, never()).save(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void numericCompareOnTextFieldIsRedCardTypeBucket() {
|
||||
FlwDef d = draft("FU1");
|
||||
d.setContentJson(JSON.replace("grade == 'g1'", "reason > 3"));
|
||||
when(defRepository.findById(9L)).thenReturn(java.util.Optional.of(d));
|
||||
when(schemaClient.fetchSchema(SCH, "FU1")).thenReturn(snapshot());
|
||||
|
||||
BizException ex = assertThrows(BizException.class, () -> service.publish(SCH, 9L));
|
||||
assertTrue(ex.getMessage().contains("类型桶查②") && ex.getMessage().contains("reason"),
|
||||
"text 字段做数值比较要点名(类型桶查②):" + ex.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void stringLiteralEqualsOnNumberFieldIsRedCardTypeBucket() {
|
||||
FlwDef d = draft("FU1");
|
||||
d.setContentJson(JSON.replace("grade == 'g1'", "days == 'three'"));
|
||||
when(defRepository.findById(9L)).thenReturn(java.util.Optional.of(d));
|
||||
when(schemaClient.fetchSchema(SCH, "FU1")).thenReturn(snapshot());
|
||||
|
||||
BizException ex = assertThrows(BizException.class, () -> service.publish(SCH, 9L));
|
||||
assertTrue(ex.getMessage().contains("类型桶查②") && ex.getMessage().contains("days"),
|
||||
"number 字段与字符串字面量等值要拦:" + ex.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void enumLiteralOutOfDomainIsRedCard() {
|
||||
FlwDef d = draft("FU1");
|
||||
d.setContentJson(JSON.replace("grade == 'g1'", "grade == 'g9'"));
|
||||
when(defRepository.findById(9L)).thenReturn(java.util.Optional.of(d));
|
||||
when(schemaClient.fetchSchema(SCH, "FU1")).thenReturn(snapshot());
|
||||
|
||||
BizException ex = assertThrows(BizException.class, () -> service.publish(SCH, 9L));
|
||||
assertTrue(ex.getMessage().contains("域查③") && ex.getMessage().contains("g9"),
|
||||
"枚举字面量不在值域要点名(域查③):" + ex.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void numericFieldWithNumericLiteralPassesAllChecks() {
|
||||
// days(number) > 3 与内置 schId > 0:happy path(publishEmbeds…已覆盖主链),此处锁数值正向桶
|
||||
FlwDef d = draft("FU1");
|
||||
d.setContentJson(JSON.replace("grade == 'g1'", "days >= 2.5"));
|
||||
when(defRepository.findById(9L)).thenReturn(java.util.Optional.of(d));
|
||||
when(schemaClient.fetchSchema(SCH, "FU1")).thenReturn(snapshot());
|
||||
|
||||
assertEquals(FlwEnums.DefStatus.PUBLISHED.getCode(), service.publish(SCH, 9L).getStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
void builtinVariablesPassKeyCheck() {
|
||||
// days 与 schId(内置)都合法 → 上面的 happy path 已覆盖;此处单独断言纯内置表达式
|
||||
|
||||
Reference in New Issue
Block a user