package com.ruoyi.ccdi.project.sql;

import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;

import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertTrue;

class MysqlUtf8ExecScriptTest {

    @Test
    void mysqlUtf8ExecScript_shouldForceUtf8SessionAndSourceSqlFile() throws IOException {
        String script = Files.readString(
            Path.of("..", "bin", "mysql_utf8_exec.sh"),
            StandardCharsets.UTF_8
        );

        assertAll(
            () -> assertTrue(script.contains("application-dev.yml"),
                "脚本应读取 application-dev.yml 中的数据库连接信息"),
            () -> assertTrue(script.contains("--default-character-set=utf8mb4"),
                "脚本应强制 mysql 客户端使用 utf8mb4"),
            () -> assertTrue(script.contains("--init-command")
                    && script.contains("SET NAMES utf8mb4"),
                "脚本应在 mysql 会话初始化时显式执行 SET NAMES utf8mb4"),
            () -> assertTrue(script.contains("< \"${ABS_SQL_FILE}\""),
                "脚本应直接重定向 SQL 文件执行")
        );
    }
}
