diff --git a/unittests/MariaDB/Database.cs b/unittests/MariaDB/Database.cs index c41c925a..c6a4b83b 100644 --- a/unittests/MariaDB/Database.cs +++ b/unittests/MariaDB/Database.cs @@ -5,11 +5,6 @@ namespace MariaDB; [Collection(nameof(MariaDbTestContainer))] -public class Database : GenericDatabase, IClassFixture -{ - public Database(IGrateTestContext testContext, ITestOutputHelper testOutput) - { - Context = testContext; - TestOutput = testOutput; - } -} +public class Database(IGrateTestContext testContext, ITestOutputHelper testOutput) + : GenericDatabase(testContext, testOutput); + diff --git a/unittests/MariaDB/MariaDbDatabase_.cs b/unittests/MariaDB/MariaDbDatabase_.cs index 4582a378..5824e9c6 100644 --- a/unittests/MariaDB/MariaDbDatabase_.cs +++ b/unittests/MariaDB/MariaDbDatabase_.cs @@ -1,29 +1,18 @@ -using System.Data.Common; -using FluentAssertions; +using FluentAssertions; using grate.Configuration; -using grate.MariaDb.Migration; using MariaDB.TestInfrastructure; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; using MySqlConnector; namespace Basic_tests.Infrastructure.MariaDB; // ReSharper disable once InconsistentNaming -public class MariaDbDatabase_ : IClassFixture +public class MariaDbDatabase_(InspectableMariaDbDatabase mariaDb) { - private IServiceProvider _serviceProvider; - - public MariaDbDatabase_(SimpleService simpleService) - { - _serviceProvider = simpleService.ServiceProvider; - } [Fact] public async Task Disables_pipelining_if_not_explicitly_set_in_connection_string() { var connStr = "Server=dummy"; var cfg = new GrateConfiguration() { ConnectionString = connStr }; - var mariaDb = new InspectableMariaDbDatabase(_serviceProvider); await mariaDb.InitializeConnections(cfg); var conn = mariaDb.GetConnection(); @@ -36,7 +25,6 @@ public async Task Leaves_pipelining_as_configured_if_set_explicitly_in_connectio { var connStr = "Server=dummy;Pipelining=true"; var cfg = new GrateConfiguration() { ConnectionString = connStr }; - var mariaDb = new InspectableMariaDbDatabase(_serviceProvider); await mariaDb.InitializeConnections(cfg); var conn = mariaDb.GetConnection(); @@ -44,12 +32,4 @@ public async Task Leaves_pipelining_as_configured_if_set_explicitly_in_connectio builder.Pipelining.Should().BeTrue(); } - private class InspectableMariaDbDatabase : MariaDbDatabase - { - public InspectableMariaDbDatabase(IServiceProvider serviceProvider) : base(serviceProvider.GetRequiredService>()) - { - } - - public DbConnection GetConnection() => base.Connection; - } } diff --git a/unittests/MariaDB/MigrationTables.cs b/unittests/MariaDB/MigrationTables.cs index 5d4bc0a6..74e6f77e 100644 --- a/unittests/MariaDB/MigrationTables.cs +++ b/unittests/MariaDB/MigrationTables.cs @@ -5,18 +5,5 @@ namespace MariaDB; [Collection(nameof(MariaDbTestContainer))] -public class MigrationTables : GenericMigrationTables, IClassFixture -{ - public MigrationTables(IGrateTestContext testContext, ITestOutputHelper testOutput) - { - Context = testContext; - TestOutput = testOutput; - } - - // public MigrationTables(MariaDbTestContainer testContainer, SimpleService simpleService, ITestOutputHelper testOutput) - // { - // Context = new MariaDbGrateTestContext(simpleService.ServiceProvider, testContainer); - // TestOutput = testOutput; - // } - -} +public class MigrationTables(IGrateTestContext testContext, ITestOutputHelper testOutput) : + GenericMigrationTables(testContext, testOutput); diff --git a/unittests/MariaDB/ServiceCollectionTest.cs b/unittests/MariaDB/ServiceCollectionTest.cs index 610c9b4e..ab160b64 100644 --- a/unittests/MariaDB/ServiceCollectionTest.cs +++ b/unittests/MariaDB/ServiceCollectionTest.cs @@ -10,17 +10,13 @@ namespace MariaDB.DependencyInjection; [Collection(nameof(MariaDbTestContainer))] -public class ServiceCollectionTest : TestCommon.DependencyInjection.GrateServiceCollectionTest +// ReSharper disable once UnusedType.Global +public class ServiceCollectionTest(MariaDbTestContainer mariaDbTestContainer) + : TestCommon.DependencyInjection.GrateServiceCollectionTest { - private readonly MariaDbTestContainer _mariaDbTestContainer; - - public ServiceCollectionTest(MariaDbTestContainer mariaDbTestContainer) - { - _mariaDbTestContainer = mariaDbTestContainer; ; - } protected override void ConfigureService(GrateConfigurationBuilder grateConfigurationBuilder) { - var connectionString = $"Server={_mariaDbTestContainer.TestContainer!.Hostname};Port={_mariaDbTestContainer.TestContainer!.GetMappedPublicPort(_mariaDbTestContainer.Port)};Database={TestConfig.RandomDatabase()};Uid=root;Pwd={_mariaDbTestContainer.AdminPassword}"; + var connectionString = $"Server={mariaDbTestContainer.TestContainer!.Hostname};Port={mariaDbTestContainer.TestContainer!.GetMappedPublicPort(mariaDbTestContainer.Port)};Database={TestConfig.RandomDatabase()};Uid=root;Pwd={mariaDbTestContainer.AdminPassword}"; grateConfigurationBuilder.WithConnectionString(connectionString); grateConfigurationBuilder.UseMariaDb(); grateConfigurationBuilder.ServiceCollection.AddSingleton(); diff --git a/unittests/MariaDB/Startup.cs b/unittests/MariaDB/Startup.cs index b5971c73..a0bbe38a 100644 --- a/unittests/MariaDB/Startup.cs +++ b/unittests/MariaDB/Startup.cs @@ -1,3 +1,4 @@ +using Basic_tests.Infrastructure.MariaDB; using grate.Configuration; using grate.Infrastructure; using grate.MariaDb.Infrastructure; @@ -47,6 +48,7 @@ public void ConfigureServices(IServiceCollection services, HostBuilderContext co .AddTransient() .AddSingleton() .AddSingleton() + .AddTransient() ; } diff --git a/unittests/MariaDB/TestInfrastructure/InspectableMariaDbDatabase.cs b/unittests/MariaDB/TestInfrastructure/InspectableMariaDbDatabase.cs new file mode 100644 index 00000000..cee1a8c4 --- /dev/null +++ b/unittests/MariaDB/TestInfrastructure/InspectableMariaDbDatabase.cs @@ -0,0 +1,16 @@ +using System.Data.Common; +using grate.MariaDb.Migration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace MariaDB.TestInfrastructure; + +public class InspectableMariaDbDatabase : MariaDbDatabase +{ + public InspectableMariaDbDatabase(IServiceProvider serviceProvider) + : base(serviceProvider.GetRequiredService>()) + { + } + + public DbConnection GetConnection() => base.Connection; +} diff --git a/unittests/PostgreSQL/Database.cs b/unittests/PostgreSQL/Database.cs index 55e7abf7..e5610f36 100644 --- a/unittests/PostgreSQL/Database.cs +++ b/unittests/PostgreSQL/Database.cs @@ -5,19 +5,5 @@ namespace PostgreSQL; [Collection(nameof(PostgreSqlTestContainer))] -public class Database : GenericDatabase, IClassFixture -{ - - // public Database(PostgreSqlTestContainer testContainer, SimpleService simpleService, ITestOutputHelper testOutput) - // { - // Context = new PostgreSqlGrateTestContext(simpleService.ServiceProvider, testContainer); - // TestOutput = testOutput; - // } - - public Database(IGrateTestContext testContext, ITestOutputHelper testOutput) - { - Context = testContext; - TestOutput = testOutput; - } - -} +public class Database(IGrateTestContext testContext, ITestOutputHelper testOutput) : + GenericDatabase(testContext, testOutput); diff --git a/unittests/PostgreSQL/MigrationTables.cs b/unittests/PostgreSQL/MigrationTables.cs index c3eb0ea0..721416d0 100644 --- a/unittests/PostgreSQL/MigrationTables.cs +++ b/unittests/PostgreSQL/MigrationTables.cs @@ -1,15 +1,8 @@ -using PostgreSQL.TestInfrastructure; -using TestCommon.Generic; +using TestCommon.Generic; using TestCommon.TestInfrastructure; namespace PostgreSQL; [Collection(nameof(PostgreSqlTestContainer))] -public class MigrationTables : GenericMigrationTables, IClassFixture -{ - public MigrationTables(IGrateTestContext testContext, ITestOutputHelper testOutput) - { - Context = testContext; - TestOutput = testOutput; - } -} +public class MigrationTables(IGrateTestContext testContext, ITestOutputHelper testOutput) : + GenericMigrationTables(testContext, testOutput); diff --git a/unittests/PostgreSQL/Running_MigrationScripts/Failing_Scripts.cs b/unittests/PostgreSQL/Running_MigrationScripts/Failing_Scripts.cs index 3e166170..2ddf418e 100644 --- a/unittests/PostgreSQL/Running_MigrationScripts/Failing_Scripts.cs +++ b/unittests/PostgreSQL/Running_MigrationScripts/Failing_Scripts.cs @@ -5,14 +5,9 @@ namespace PostgreSQL.Running_MigrationScripts; [Collection(nameof(PostgreSqlTestContainer))] // ReSharper disable once InconsistentNaming -public class Failing_Scripts : TestCommon.Generic.Running_MigrationScripts.Failing_Scripts +public class Failing_Scripts(IGrateTestContext testContext, ITestOutputHelper testOutput) + : TestCommon.Generic.Running_MigrationScripts.Failing_Scripts(testContext, testOutput) { - public Failing_Scripts(IGrateTestContext testContext, ITestOutputHelper testOutput) - { - Context = testContext; - TestOutput = testOutput; - } - protected override string ExpectedErrorMessageForInvalidSql => @"42703: column ""top"" does not exist diff --git a/unittests/PostgreSQL/ServiceCollectionTest.cs b/unittests/PostgreSQL/ServiceCollectionTest.cs index 3ecf0b7c..2e87fd4b 100644 --- a/unittests/PostgreSQL/ServiceCollectionTest.cs +++ b/unittests/PostgreSQL/ServiceCollectionTest.cs @@ -10,16 +10,12 @@ namespace PostgreSQL.DependencyInjection; [Collection(nameof(PostgreSqlTestContainer))] -public class ServiceCollectionTest : TestCommon.DependencyInjection.GrateServiceCollectionTest +public class ServiceCollectionTest(PostgreSqlTestContainer postgreSqlTestContainer) + : TestCommon.DependencyInjection.GrateServiceCollectionTest { - private readonly PostgreSqlTestContainer _postgreSqlTestContainer; - public ServiceCollectionTest(PostgreSqlTestContainer postgreSqlTestContainer) - { - _postgreSqlTestContainer = postgreSqlTestContainer; - } protected override void ConfigureService(GrateConfigurationBuilder grateConfigurationBuilder) { - var connectionString = $"Host={_postgreSqlTestContainer.TestContainer!.Hostname};Port={_postgreSqlTestContainer.TestContainer!.GetMappedPublicPort(_postgreSqlTestContainer.Port)};Database={TestConfig.RandomDatabase()};Username=postgres;Password={_postgreSqlTestContainer.AdminPassword};Include Error Detail=true;Pooling=false"; + var connectionString = $"Host={postgreSqlTestContainer.TestContainer!.Hostname};Port={postgreSqlTestContainer.TestContainer!.GetMappedPublicPort(postgreSqlTestContainer.Port)};Database={TestConfig.RandomDatabase()};Username=postgres;Password={postgreSqlTestContainer.AdminPassword};Include Error Detail=true;Pooling=false"; grateConfigurationBuilder.WithConnectionString(connectionString); grateConfigurationBuilder.UsePostgreSql(); grateConfigurationBuilder.ServiceCollection.AddSingleton(); diff --git a/unittests/PostgreSQL/Startup.cs b/unittests/PostgreSQL/Startup.cs index 749e7ffe..096e02f3 100644 --- a/unittests/PostgreSQL/Startup.cs +++ b/unittests/PostgreSQL/Startup.cs @@ -46,6 +46,12 @@ public void ConfigureServices(IServiceCollection services, HostBuilderContext co .AddTransient() .AddSingleton() .AddSingleton() + .AddSingleton() + .AddSingleton(service => + { + var database = service.GetService()!; + return new StatementSplitter(database.StatementSeparatorRegex); + }); ; } diff --git a/unittests/PostgreSQL/Statement_Splitting/StatementSplitter_.cs b/unittests/PostgreSQL/Statement_Splitting/StatementSplitter_.cs index 1cd7032e..dcb4fc06 100644 --- a/unittests/PostgreSQL/Statement_Splitting/StatementSplitter_.cs +++ b/unittests/PostgreSQL/Statement_Splitting/StatementSplitter_.cs @@ -7,16 +7,8 @@ namespace Basic_tests.Infrastructure.PostgreSQL.Statement_Splitting; // ReSharper disable once InconsistentNaming -public class StatementSplitter_ : IClassFixture +public class StatementSplitter_(StatementSplitter statementSplitter) { - private StatementSplitter Splitter; - - public StatementSplitter_(StatementSplitter statementSplitter) - { - Splitter = statementSplitter; - } - - [Fact] public void Splits_and_removes_semicolons() { @@ -35,7 +27,7 @@ USING btree column2 ); "; - var batches = Splitter.Split(original); + var batches = statementSplitter.Split(original); batches.Should().HaveCount(4); } @@ -57,7 +49,7 @@ FROM information_schema.schemata END '; "; - var batches = Splitter.Split(original); + var batches = statementSplitter.Split(original); batches.Should().HaveCount(1); } @@ -82,7 +74,7 @@ FROM information_schema.schemata END {tag}; "; - var batches = Splitter.Split(original); + var batches = statementSplitter.Split(original); batches.Should().HaveCount(1); } @@ -90,7 +82,7 @@ FROM information_schema.schemata public void Splits_on_semicolon_after_single_quotes_when_there_is_another_semicolon_in_the_quote() { var original = @"SELECT 1 WHERE whatnot = '; ' ; MOO"; - var batches = Splitter.Split(original).ToList(); + var batches = statementSplitter.Split(original).ToList(); batches.Should().HaveCount(2); batches.First().Should().Be("SELECT 1 WHERE whatnot = '; ' "); @@ -101,7 +93,7 @@ public void Splits_on_semicolon_after_single_quotes_when_there_is_another_semico public void Ignores_semicolon_in_single_quotes_when_there_is_no_other_semicolon() { var original = @"SELECT 1 WHERE whatnot = '; '"; - var batches = Splitter.Split(original); + var batches = statementSplitter.Split(original); batches.Should().HaveCount(1); } @@ -122,7 +114,7 @@ FROM information_schema.schemata END '; "; - var batches = Splitter.Split(original); + var batches = statementSplitter.Split(original); batches.Should().HaveCount(1); }