package com.battery.business.runtime; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.InputStream; import java.nio.charset.StandardCharsets; import org.junit.jupiter.api.Test; /** Ticket26 迁移只增加行为查询索引,不建立按行或按格修订表。 */ class Ticket26MigrationContractTest { @Test void addsActionQueryIndexWithoutReplacingAuditFacts() throws Exception { try (InputStream stream = getClass().getClassLoader().getResourceAsStream( "db/migration/V26__data_revision_action_query_contract.sql")) { if (stream == null) throw new AssertionError("缺少 Ticket26 迁移"); String sql = new String(stream.readAllBytes(), StandardCharsets.UTF_8); assertTrue(sql.contains("idx_data_revision_query_time")); assertTrue(sql.contains("t_test_data_revision_action")); assertFalse(sql.matches("(?s).*\\b(DROP|DELETE|UPDATE)\\b.*")); } } }