package com.ruoyi.config;
|
|
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;
|
|
/** Ticket25 迁移契约:一次行为审计、覆盖状态和物理删除所需的持久化结构。 */
|
class Ticket25MigrationContractTest
|
{
|
@Test
|
void storesSingleActionAndStableIdentityOverrides()
|
{
|
String sql;
|
try (InputStream stream = getClass().getClassLoader().getResourceAsStream(
|
"db/migration/V24__console_data_revision_actions.sql"))
|
{
|
if (stream == null) throw new AssertionError("缺少 Ticket25 迁移");
|
sql = new String(stream.readAllBytes(), StandardCharsets.UTF_8);
|
}
|
catch (Exception exception) { throw new AssertionError(exception); }
|
assertTrue(sql.contains("t_test_data_revision_action"));
|
assertTrue(sql.contains("t_test_data_override"));
|
assertTrue(sql.contains("identity_summary JSON"));
|
assertTrue(sql.contains("operation_type"));
|
assertTrue(sql.contains("uk_data_override_identity"));
|
assertFalse(sql.matches("(?s).*\\bDROP\\s+(TABLE|COLUMN)\\b.*"));
|
}
|
}
|