From f0f34c01f84b1d825564f7f8ee8328c2de8667ce Mon Sep 17 00:00:00 2001 From: Tim Thompson Date: Wed, 7 Jun 2023 22:14:07 +0200 Subject: [PATCH] chore: Made test for sql serve schema issue sql-server specific. I suspect the failing tests indicate the bug is still present on other DBMS's, but I don't know enough to go chasing that right now. --- .../Versioning_The_Database.cs | 30 +--------------- .../Versioning_The_Database.cs | 34 +++++++++++++++++++ .../Versioning_The_Database.cs | 2 +- 3 files changed, 36 insertions(+), 30 deletions(-) diff --git a/grate.unittests/Generic/Running_MigrationScripts/Versioning_The_Database.cs b/grate.unittests/Generic/Running_MigrationScripts/Versioning_The_Database.cs index 5eccbed0..f833d985 100644 --- a/grate.unittests/Generic/Running_MigrationScripts/Versioning_The_Database.cs +++ b/grate.unittests/Generic/Running_MigrationScripts/Versioning_The_Database.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Dapper; @@ -101,32 +101,4 @@ public async Task Creates_A_New_Version_In_Progress() version.status.Should().Be(MigrationStatus.InProgress); } - [Test] - public async Task Bug230_Uses_Server_Casing_Rules_For_Schema() - { - //for bug #230 - when targeting an existing schema use the servers casing rules, not .Net's - var db = TestConfig.RandomDatabase(); - var parent = CreateRandomTempDirectory(); - var knownFolders = FoldersConfiguration.Default(null); - - CreateDummySql(parent, knownFolders[Sprocs]); // make sure there's something that could be logged... - - await using (var migrator = Context.GetMigrator(db, parent, knownFolders)) - { - await migrator.Migrate(); - Assert.True(await migrator.DbMigrator.Database.VersionTableExists()); // we migrated into the `grate` schema. - } - - // Now we'll run again with the same name but different cased schema - var grateConfig = Context.GetConfiguration(db, parent, knownFolders) with - { - SchemaName = "GRATE" - }; - - await using (var migrator = Context.GetMigrator(grateConfig)) - { - await migrator.Migrate(); // should either reuse the existing schema if a case-insensitive server, or create a new second schema for use if case-sensitive. - Assert.True(await migrator.DbMigrator.Database.VersionTableExists()); // we migrated into the `GRATE` schema, which may be the same as 'grate' depending on server settings. - } - } } diff --git a/grate.unittests/SqlServer/Running_MigrationScripts/Versioning_The_Database.cs b/grate.unittests/SqlServer/Running_MigrationScripts/Versioning_The_Database.cs index 6d4094b2..2aeea6a6 100644 --- a/grate.unittests/SqlServer/Running_MigrationScripts/Versioning_The_Database.cs +++ b/grate.unittests/SqlServer/Running_MigrationScripts/Versioning_The_Database.cs @@ -1,6 +1,10 @@ +using System.Threading.Tasks; +using grate.Configuration; using grate.unittests.TestInfrastructure; using NUnit.Framework; +using static grate.Configuration.KnownFolderKeys; + namespace grate.unittests.SqlServer.Running_MigrationScripts; [TestFixture] @@ -9,4 +13,34 @@ namespace grate.unittests.SqlServer.Running_MigrationScripts; public class Versioning_The_Database: Generic.Running_MigrationScripts.Versioning_The_Database { protected override IGrateTestContext Context => GrateTestContext.SqlServer; + + + [Test] + public async Task Bug230_Uses_Server_Casing_Rules_For_Schema() + { + //for bug #230 - when targeting an existing schema use the servers casing rules, not .Net's + var db = TestConfig.RandomDatabase(); + var parent = CreateRandomTempDirectory(); + var knownFolders = FoldersConfiguration.Default(null); + + CreateDummySql(parent, knownFolders[Sprocs]); // make sure there's something that could be logged... + + await using (var migrator = Context.GetMigrator(db, parent, knownFolders)) + { + await migrator.Migrate(); + Assert.True(await migrator.DbMigrator.Database.VersionTableExists()); // we migrated into the `grate` schema. + } + + // Now we'll run again with the same name but different cased schema + var grateConfig = Context.GetConfiguration(db, parent, knownFolders) with + { + SchemaName = "GRATE" + }; + + await using (var migrator = Context.GetMigrator(grateConfig)) + { + await migrator.Migrate(); // should either reuse the existing schema if a case-insensitive server, or create a new second schema for use if case-sensitive. + Assert.True(await migrator.DbMigrator.Database.VersionTableExists()); // we migrated into the `GRATE` schema, which may be the same as 'grate' depending on server settings. + } + } } diff --git a/grate.unittests/SqlServerCaseSensitive/Running_MigrationScripts/Versioning_The_Database.cs b/grate.unittests/SqlServerCaseSensitive/Running_MigrationScripts/Versioning_The_Database.cs index ac04af59..8d88ba4a 100644 --- a/grate.unittests/SqlServerCaseSensitive/Running_MigrationScripts/Versioning_The_Database.cs +++ b/grate.unittests/SqlServerCaseSensitive/Running_MigrationScripts/Versioning_The_Database.cs @@ -6,7 +6,7 @@ namespace grate.unittests.SqlServerCaseSensitive.Running_MigrationScripts [TestFixture] [Category("SqlServerCaseSensitive")] // ReSharper disable once InconsistentNaming - public class Versioning_The_Database : Generic.Running_MigrationScripts.Versioning_The_Database + public class Versioning_The_Database : grate.unittests.SqlServer.Running_MigrationScripts.Versioning_The_Database { protected override IGrateTestContext Context => GrateTestContext.SqlServerCaseSensitive; }