using Jiaowu.Api.Infrastructure.Persistence; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; namespace Jiaowu.Api.Tests; public sealed class MySqlMigrationTests { private const string LatestMigration = "20260725120917_ProductionSchemaCompletion"; [Fact] public void Production_migration_is_discoverable_and_generates_mysql_sql() { var options = new DbContextOptionsBuilder() .UseMySQL( "Server=localhost;Database=jiaowu;User=__test__;Password=__not_used__;") .Options; using var db = new AppDbContext(options); Assert.Contains(LatestMigration, db.Database.GetMigrations()); var script = db.GetService().GenerateScript( fromMigration: "20260725040310_SchedulePublishJobs", toMigration: LatestMigration); Assert.Contains("CREATE TABLE `GradeItems`", script); Assert.Contains("CREATE TABLE `EvaluationSetups`", script); Assert.Contains("CREATE TABLE `WarningRules`", script); Assert.Contains("SET `ExamDate` = DATE(`StartsAt`)", script); Assert.Contains("DEFAULT 1", script); Assert.DoesNotContain("0001-01-01", script); Assert.DoesNotContain("0000-00-00", script); } }