From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/impl/LimsMessageFailurePolicyChecks.java | 74 +++++++++++++++++++++++++++++++++++++
1 files changed, 74 insertions(+), 0 deletions(-)
diff --git a/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/impl/LimsMessageFailurePolicyChecks.java b/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/impl/LimsMessageFailurePolicyChecks.java
new file mode 100644
index 0000000..5444ddb
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-biz/src/test/java/jnpf/limsService/impl/LimsMessageFailurePolicyChecks.java
@@ -0,0 +1,74 @@
+package jnpf.limsService.impl;
+
+import jnpf.limsEntity.LimsMessageConfigRow;
+
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.Collections;
+
+/** Lightweight checks for message precondition failures in environments without a test runner. */
+public class LimsMessageFailurePolicyChecks {
+ public static void main(String[] args) throws Exception {
+ require(!LimsMessageConfigValidator.validateRows(Collections.emptyList()).isValid(),
+ "missing config must be rejected");
+
+ LimsMessageConfigRow valid = validRow();
+ require(LimsMessageConfigValidator.validateRows(Collections.singletonList(valid)).isValid(),
+ "one enabled in-site template must be accepted");
+
+ valid.setConfigEnabled(0);
+ require(!LimsMessageConfigValidator.validateRows(Collections.singletonList(valid)).isValid(),
+ "disabled config must be rejected");
+ valid.setConfigEnabled(1);
+
+ LimsMessageConfigRow secondRelation = validRow();
+ secondRelation.setRelationId("relation-2");
+ require(!LimsMessageConfigValidator.validateRows(Arrays.asList(valid, secondRelation)).isValid(),
+ "multiple template relations must be rejected");
+
+ valid.setMenuUrl(" ");
+ require(!LimsMessageConfigValidator.validateRows(Collections.singletonList(valid)).isValid(),
+ "empty menu URL must be rejected");
+
+ String service = read("jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsService/impl/"
+ + "LimsMessageServiceImpl.java");
+ require(service.contains("ready ? recipients : Collections.emptyList()"),
+ "precondition failures must not create delivery rows");
+ require(service.contains("RECIPIENT_NOT_FOUND: no active user resolved"),
+ "zero-recipient failure reason must be recorded");
+ require(service.contains("if (!config.isValid())"),
+ "invalid configuration must stop before platform sending");
+ require(service.contains("int sendable = config.isValid() ? recipients.size() : 0"),
+ "dry-run must not report invalid configuration as sendable");
+ }
+
+ private static LimsMessageConfigRow validRow() {
+ LimsMessageConfigRow row = new LimsMessageConfigRow();
+ row.setConfigId("config-1");
+ row.setConfigEnabled(1);
+ row.setConfigSource("6");
+ row.setRelationId("relation-1");
+ row.setRelationEnabled(1);
+ row.setRelationMessageType("1");
+ row.setTemplateId("template-1");
+ row.setTemplateEnabled(1);
+ row.setTemplateMessageType("1");
+ row.setTemplateSource("6");
+ row.setMenuUrl("/lims/detail?id={bizId}");
+ return row;
+ }
+
+ private static String read(String path) throws Exception {
+ Path root = Paths.get(System.getProperty("user.dir"));
+ return new String(Files.readAllBytes(root.resolve(path)), StandardCharsets.UTF_8);
+ }
+
+ private static void require(boolean value, String message) {
+ if (!value) {
+ throw new AssertionError(message);
+ }
+ }
+}
--
Gitblit v1.8.0