refactor(db): migrate user rule settings
This commit is contained in:
@@ -100,6 +100,7 @@ public sealed class MigrationChainTests
|
||||
Assert.Contains("CREATE TABLE IF NOT EXISTS `AspNetUsers`", script, StringComparison.Ordinal);
|
||||
Assert.Contains("CREATE TABLE IF NOT EXISTS `AiInteractions`", script, StringComparison.Ordinal);
|
||||
Assert.Contains("CREATE TABLE IF NOT EXISTS `SystemEmailSettings`", script, StringComparison.Ordinal);
|
||||
Assert.Contains("CREATE TABLE IF NOT EXISTS `UserRuleSettings`", script, StringComparison.Ordinal);
|
||||
Assert.Contains("`UiLanguage` varchar(16)", script, StringComparison.Ordinal);
|
||||
Assert.All(
|
||||
Regex.Matches(script, "CONSTRAINT `([^`]+)`").Select(match => match.Groups[1].Value),
|
||||
@@ -148,6 +149,43 @@ public sealed class MigrationChainTests
|
||||
Assert.Empty(await db.Database.GetPendingMigrationsAsync());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task User_rule_settings_adoption_preserves_legacy_rows()
|
||||
{
|
||||
await using var connection = new SqliteConnection("Data Source=:memory:");
|
||||
await connection.OpenAsync();
|
||||
await using var db = Context(connection);
|
||||
var migrator = db.GetService<IMigrator>();
|
||||
await migrator.MigrateAsync("20260830120000_AdoptSystemEmailSettingsSchema");
|
||||
await ExecuteAsync(connection, """
|
||||
CREATE TABLE "UserRuleSettings" (
|
||||
"OwnerUserId" TEXT NOT NULL CONSTRAINT "PK_UserRuleSettings" PRIMARY KEY,
|
||||
"AppliedFollowUpDays" INTEGER NOT NULL,
|
||||
"AppliedGhostDays" INTEGER NOT NULL,
|
||||
"OfferFollowUpDays" INTEGER NOT NULL,
|
||||
"OfferGhostDays" INTEGER NOT NULL,
|
||||
"FeedbackFollowUpDays" INTEGER NOT NULL,
|
||||
"FeedbackGhostDays" INTEGER NOT NULL
|
||||
);
|
||||
INSERT INTO "UserRuleSettings"
|
||||
("OwnerUserId", "AppliedFollowUpDays", "AppliedGhostDays", "OfferFollowUpDays",
|
||||
"OfferGhostDays", "FeedbackFollowUpDays", "FeedbackGhostDays")
|
||||
VALUES ('owner-fixture', 3, 9, 4, 10, 5, 11);
|
||||
""");
|
||||
|
||||
await migrator.MigrateAsync();
|
||||
Assert.Equal(3L, await ScalarAsync<long>(connection,
|
||||
"SELECT AppliedFollowUpDays FROM UserRuleSettings WHERE OwnerUserId = 'owner-fixture';"));
|
||||
|
||||
await migrator.MigrateAsync("20260830120000_AdoptSystemEmailSettingsSchema");
|
||||
Assert.Equal(3L, await ScalarAsync<long>(connection,
|
||||
"SELECT AppliedFollowUpDays FROM UserRuleSettings WHERE OwnerUserId = 'owner-fixture';"));
|
||||
await migrator.MigrateAsync();
|
||||
Assert.Equal(3L, await ScalarAsync<long>(connection,
|
||||
"SELECT AppliedFollowUpDays FROM UserRuleSettings WHERE OwnerUserId = 'owner-fixture';"));
|
||||
Assert.Empty(await db.Database.GetPendingMigrationsAsync());
|
||||
}
|
||||
|
||||
private static JobTrackerContext Context(SqliteConnection connection)
|
||||
{
|
||||
var currentUser = new Mock<ICurrentUserService>();
|
||||
|
||||
Reference in New Issue
Block a user