From 4fec1c1568b051271ba7a6eb5d8650b504733104 Mon Sep 17 00:00:00 2001 From: Wokket Date: Tue, 6 Sep 2022 14:47:10 +1000 Subject: [PATCH] bug #230: Added repro test for schema casing bug --- .../Versioning_The_Database.cs | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/grate.unittests/Generic/Running_MigrationScripts/Versioning_The_Database.cs b/grate.unittests/Generic/Running_MigrationScripts/Versioning_The_Database.cs index 7b003264..fc4a4dda 100644 --- a/grate.unittests/Generic/Running_MigrationScripts/Versioning_The_Database.cs +++ b/grate.unittests/Generic/Running_MigrationScripts/Versioning_The_Database.cs @@ -62,4 +62,33 @@ public async Task Does_Not_Create_Versions_When_Dryrun() var addedTable = await migrator.DbMigrator.Database.VersionTableExists(); Assert.False(addedTable); // we didn't even add the grate infrastructure } + + [Test] + public async Task 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 knownFolders = KnownFolders.In(CreateRandomTempDirectory()); + + CreateDummySql(knownFolders.Sprocs); // make sure there's something that could be logged... + + var grateConfig = Context.GetConfiguration(db, knownFolders); + await using (var migrator = Context.GetMigrator(grateConfig)) + { + 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 + grateConfig = Context.GetConfiguration(db, 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. + } + } }