Skip to content

Commit de6305b

Browse files
feat: + TestContainer MySQL
+ TestContainer MsSQL
1 parent 569f9d7 commit de6305b

File tree

7 files changed

+61
-59
lines changed

7 files changed

+61
-59
lines changed

Src/MSSQLTests/GlobalSetUp.cs

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,42 @@
11
using Microsoft.Data.SqlClient;
2-
using Microsoft.Extensions.Configuration;
32
using NUnit.Framework;
43
using System.Data.Common;
5-
using System.IO;
64
using System.Threading.Tasks;
5+
using Testcontainers.MsSql;
76

87
namespace Tests
98
{
109
[SetUpFixture]
1110
public class GlobalSetUp
1211
{
13-
private static IConfiguration _configuration;
14-
1512
public static SqlConnection GetConnection
1613
{
1714
get
1815
{
1916
var connection = (SqlConnection)SqlClientFactory.Instance.CreateConnection();
20-
connection.ConnectionString = _configuration.GetConnectionString("SqlConnection");
17+
connection.ConnectionString = _connectionString;
2118
return connection;
2219
}
2320
}
2421

2522
public static DbConnection GetDbConnection => GetConnection;
2623

24+
private MsSqlContainer _mssql;
25+
private static string _connectionString;
26+
2727
[OneTimeSetUp]
2828
public async Task OneTimeSetUp()
2929
{
30-
var builder = new ConfigurationBuilder()
31-
.SetBasePath(Directory.GetCurrentDirectory())
32-
.AddJsonFile("appsettings.json", optional: false);
33-
_configuration = builder.Build();
30+
_mssql =
31+
new MsSqlBuilder()
32+
.WithPassword("dhgvbh73j")
33+
.Build();
34+
35+
await _mssql.StartAsync();
3436

3537
await using (var masterConnection = (SqlConnection)SqlClientFactory.Instance.CreateConnection())
3638
{
37-
masterConnection.ConnectionString = _configuration.GetConnectionString("MasterConnection");
39+
masterConnection.ConnectionString = _mssql.GetConnectionString();
3840
await masterConnection.OpenAsync();
3941

4042
await using var createCmd = masterConnection.CreateCommand();
@@ -49,21 +51,30 @@ CREATE DATABASE gedaqtests
4951
";
5052
createCmd.ExecuteNonQuery();
5153
}
54+
55+
var builder = new SqlConnectionStringBuilder(_mssql.GetConnectionString());
56+
builder.DataSource = "gedaqtests";
57+
_connectionString = builder.ConnectionString;
5258
}
5359

5460
[OneTimeTearDown]
5561
public async Task OneTimeTearDown()
5662
{
57-
await using (var masterConnection = (SqlConnection)SqlClientFactory.Instance.CreateConnection())
63+
if (_mssql != null)
5864
{
59-
masterConnection.ConnectionString = _configuration.GetConnectionString("MasterConnection");
60-
await masterConnection.OpenAsync();
61-
await using var command = masterConnection.CreateCommand();
62-
command.CommandText = $@"
65+
await using (var masterConnection = (SqlConnection)SqlClientFactory.Instance.CreateConnection())
66+
{
67+
masterConnection.ConnectionString = _mssql.GetConnectionString();
68+
await masterConnection.OpenAsync();
69+
await using var command = masterConnection.CreateCommand();
70+
command.CommandText = $@"
6371
ALTER DATABASE gedaqtests SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
6472
DROP DATABASE gedaqtests;
6573
";
66-
await command.ExecuteNonQueryAsync();
74+
await command.ExecuteNonQueryAsync();
75+
}
76+
77+
await _mssql.DisposeAsync();
6778
}
6879
}
6980
}

Src/MSSQLTests/MSSQLTests.csproj

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,11 @@
1919
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2020
</PackageReference>
2121
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
22-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
22+
<PackageReference Include="Testcontainers.MsSql" Version="3.10.0" />
2323
</ItemGroup>
2424
<ItemGroup>
2525
<ProjectReference Include="..\Gedaq\Gedaq.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="True" />
2626
</ItemGroup>
27-
<ItemGroup>
28-
<None Update="appsettings.json">
29-
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
30-
</None>
31-
</ItemGroup>
3227
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
3328
<Exec Command="powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File &quot;$(ProjectDir)prebuild.ps1&quot; &quot;$(SolutionDir)Src\TestsGenerator\bin\$(ConfigurationName)\net8.0&quot; &quot;MsSQL&quot; &quot;$(SolutionDir)Src\MSSQLTests&quot;" />
3429
</Target>

Src/MSSQLTests/appsettings.json

Lines changed: 0 additions & 6 deletions
This file was deleted.

Src/MySQLTests/GlobalSetUp.cs

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
1-
using Microsoft.Extensions.Configuration;
21
using MySqlConnector;
32
using NUnit.Framework;
43
using System.Data.Common;
5-
using System.IO;
64
using System.Threading.Tasks;
5+
using Testcontainers.MySql;
76

87
namespace Tests
98
{
109
[SetUpFixture]
1110
public class GlobalSetUp
1211
{
13-
private IConfiguration _configuration;
14-
1512
public static MySqlDataSource MySqlDataSource;
1613

1714
public static MySqlConnection GetConnection => MySqlDataSource.CreateConnection();
1815

1916
public static DbConnection GetDbConnection => MySqlDataSource.CreateConnection();
2017

18+
private MySqlContainer _mysql;
19+
2120
[OneTimeSetUp]
2221
public async Task OneTimeSetUp()
2322
{
24-
var builder = new ConfigurationBuilder()
25-
.SetBasePath(Directory.GetCurrentDirectory())
26-
.AddJsonFile("appsettings.json", optional: false);
27-
_configuration = builder.Build();
23+
_mysql =
24+
new MySqlBuilder()
25+
.WithUsername("root")
26+
.WithPassword("dhgvbh73j")
27+
.Build();
2828

29-
MySqlDataSource = new MySqlDataSource(_configuration.GetConnectionString("SqlConnection"));
29+
await _mysql.StartAsync();
3030

31-
await using (var masterConnection = new MySqlConnection(_configuration.GetConnectionString("MasterConnection")))
31+
await using (var masterConnection = new MySqlConnection(_mysql.GetConnectionString()))
3232
{
3333
await masterConnection.OpenAsync();
3434
await using var createCmd = masterConnection.CreateCommand();
@@ -37,22 +37,36 @@ public async Task OneTimeSetUp()
3737
";
3838
createCmd.ExecuteNonQuery();
3939
}
40+
41+
var builder = new MySqlConnectionStringBuilder(_mysql.GetConnectionString());
42+
builder.Database = "gedaqtests";
43+
44+
MySqlDataSource = new MySqlDataSource(builder.ConnectionString);
4045
}
4146

4247
[OneTimeTearDown]
4348
public async Task OneTimeTearDown()
4449
{
45-
await using (var masterConnection = new MySqlConnection(_configuration.GetConnectionString("MasterConnection")))
50+
var dataSource = MySqlDataSource;
51+
if (dataSource != null)
4652
{
47-
await masterConnection.OpenAsync();
48-
await using var command = masterConnection.CreateCommand();
49-
command.CommandText = $@"
53+
await MySqlDataSource.DisposeAsync();
54+
}
55+
56+
if (_mysql != null)
57+
{
58+
await using (var masterConnection = new MySqlConnection(_mysql.GetConnectionString()))
59+
{
60+
await masterConnection.OpenAsync();
61+
await using var command = masterConnection.CreateCommand();
62+
command.CommandText = $@"
5063
DROP DATABASE IF EXISTS gedaqtests;
5164
";
52-
await command.ExecuteNonQueryAsync();
53-
}
65+
await command.ExecuteNonQueryAsync();
66+
}
5467

55-
await MySqlDataSource.DisposeAsync();
68+
await _mysql.DisposeAsync();
69+
}
5670
}
5771
}
5872
}

Src/MySQLTests/MySQLTests.csproj

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<TargetFramework>net8.0</TargetFramework>
44
<IsPackable>false</IsPackable>
@@ -19,16 +19,11 @@
1919
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2020
</PackageReference>
2121
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
22-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
22+
<PackageReference Include="Testcontainers.MySql" Version="3.10.0" />
2323
</ItemGroup>
2424
<ItemGroup>
2525
<ProjectReference Include="..\Gedaq\Gedaq.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="True" />
2626
</ItemGroup>
27-
<ItemGroup>
28-
<None Update="appsettings.json">
29-
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
30-
</None>
31-
</ItemGroup>
3227
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
3328
<Exec Command="powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File &quot;$(ProjectDir)prebuild.ps1&quot; &quot;$(SolutionDir)Src\TestsGenerator\bin\$(ConfigurationName)\net8.0&quot; &quot;MySQL&quot; &quot;$(SolutionDir)Src\MySQLTests&quot;" />
3429
</Target>

Src/MySQLTests/appsettings.json

Lines changed: 0 additions & 6 deletions
This file was deleted.

Src/PostgreSQLTests/PostgreSQLTests.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2020
</PackageReference>
2121
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
22-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
2322
<PackageReference Include="Testcontainers.PostgreSql" Version="3.10.0" />
2423
</ItemGroup>
2524
<ItemGroup>

0 commit comments

Comments
 (0)