fix(tests): create ephemeral LocalDB database before migration apply

This commit is contained in:
Arthur Bassi 2026-08-26 10:20:14 -03:00
parent 2e56ec7678
commit 244a489fb2

View file

@ -25,6 +25,8 @@ public class SH221LocationAccountScopeSqlServerTests
try
{
await CreateDatabaseAsync(dbName);
await using var connection = new SqlConnection(connectionString);
await connection.OpenAsync();
@ -147,21 +149,33 @@ public class SH221LocationAccountScopeSqlServerTests
}
}
private static async Task CreateDatabaseAsync(string dbName)
{
var quoted = QuoteSqlServerIdentifier(dbName);
await using var connection = new SqlConnection(LocalDbMaster);
await connection.OpenAsync();
await using var command = connection.CreateCommand();
command.CommandText = $"CREATE DATABASE {quoted};";
await command.ExecuteNonQueryAsync();
}
private static async Task DropDatabaseAsync(string dbName)
{
try
{
var quoted = QuoteSqlServerIdentifier(dbName);
await using var connection = new SqlConnection(LocalDbMaster);
await connection.OpenAsync();
await using var command = connection.CreateCommand();
command.CommandText =
$"""
IF DB_ID(N'{dbName}') IS NOT NULL
IF DB_ID(@dbName) IS NOT NULL
BEGIN
ALTER DATABASE [{dbName}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [{dbName}];
ALTER DATABASE {quoted} SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE {quoted};
END
""";
command.Parameters.AddWithValue("@dbName", dbName);
await command.ExecuteNonQueryAsync();
}
catch
@ -169,4 +183,7 @@ public class SH221LocationAccountScopeSqlServerTests
// Best-effort cleanup for ephemeral LocalDB databases.
}
}
private static string QuoteSqlServerIdentifier(string name) =>
"[" + name.Replace("]", "]]", StringComparison.Ordinal) + "]";
}