package database import ( "io/fs" "testing" "nex/backend/migrations" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestEmbeddedMigrations_SQLiteResourcesPresent(t *testing.T) { entries, err := fs.ReadDir(migrations.FS, "sqlite") require.NoError(t, err) var sqlFiles []string for _, entry := range entries { if !entry.IsDir() { sqlFiles = append(sqlFiles, entry.Name()) } } assert.NotEmpty(t, sqlFiles, "SQLite 迁移资源应至少包含一个 .sql 文件") } func TestEmbeddedMigrations_MySQLResourcesPresent(t *testing.T) { entries, err := fs.ReadDir(migrations.FS, "mysql") require.NoError(t, err) var sqlFiles []string for _, entry := range entries { if !entry.IsDir() { sqlFiles = append(sqlFiles, entry.Name()) } } assert.NotEmpty(t, sqlFiles, "MySQL 迁移资源应至少包含一个 .sql 文件") } func TestEmbeddedMigrations_SQLiteSQLParsable(t *testing.T) { subFS, err := fs.Sub(migrations.FS, "sqlite") require.NoError(t, err) entries, err := fs.ReadDir(subFS, ".") require.NoError(t, err) for _, entry := range entries { if entry.IsDir() { continue } data, err := fs.ReadFile(subFS, entry.Name()) require.NoError(t, err, "无法读取迁移文件: %s", entry.Name()) assert.NotEmpty(t, data, "迁移文件内容不应为空: %s", entry.Name()) } } func TestEmbeddedMigrations_MySQLSQLParsable(t *testing.T) { subFS, err := fs.Sub(migrations.FS, "mysql") require.NoError(t, err) entries, err := fs.ReadDir(subFS, ".") require.NoError(t, err) for _, entry := range entries { if entry.IsDir() { continue } data, err := fs.ReadFile(subFS, entry.Name()) require.NoError(t, err, "无法读取迁移文件: %s", entry.Name()) assert.NotEmpty(t, data, "迁移文件内容不应为空: %s", entry.Name()) } }