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); } } }