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