yeg
2026-09-05 90882aca0b60a5b39e127d30438752a774b3a7ac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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.*"));
        }
    }
}