mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 03:43:11 +00:00
fix(tests): create ephemeral LocalDB database before migration apply
This commit is contained in:
parent
2e56ec7678
commit
244a489fb2
1 changed files with 20 additions and 3 deletions
|
|
@ -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) + "]";
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue