Skip to content

Commit 27610b2

Browse files
committed
Use DbContainerFixture in FirebirdSqlContainerTest
1 parent a15cfc5 commit 27610b2

3 files changed

Lines changed: 35 additions & 52 deletions

File tree

Lines changed: 30 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,13 @@
11
namespace Testcontainers.FirebirdSql;
22

3-
public abstract class FirebirdSqlContainerTest : IAsyncLifetime
3+
public abstract class FirebirdSqlContainerTest(FirebirdSqlContainerTest.FirebirdSqlFixture fixture)
44
{
5-
private readonly FirebirdSqlContainer _firebirdSqlContainer;
6-
7-
private FirebirdSqlContainerTest(FirebirdSqlContainer firebirdSqlContainer)
8-
{
9-
_firebirdSqlContainer = firebirdSqlContainer;
10-
}
11-
12-
public Task InitializeAsync()
13-
{
14-
return _firebirdSqlContainer.StartAsync();
15-
}
16-
17-
public Task DisposeAsync()
18-
{
19-
return _firebirdSqlContainer.DisposeAsync().AsTask();
20-
}
21-
225
[Fact]
236
[Trait(nameof(DockerCli.DockerPlatform), nameof(DockerCli.DockerPlatform.Linux))]
247
public void ConnectionStateReturnsOpen()
258
{
269
// Given
27-
using DbConnection connection = new FbConnection(_firebirdSqlContainer.GetConnectionString());
10+
using DbConnection connection = fixture.CreateConnection();
2811

2912
// When
3013
connection.Open();
@@ -41,65 +24,61 @@ public async Task ExecScriptReturnsSuccessful()
4124
const string scriptContent = "SELECT 1 FROM RDB$DATABASE;";
4225

4326
// When
44-
var execResult = await _firebirdSqlContainer.ExecScriptAsync(scriptContent)
27+
var execResult = await fixture.Container.ExecScriptAsync(scriptContent)
4528
.ConfigureAwait(true);
4629

4730
// Then
4831
Assert.True(0L.Equals(execResult.ExitCode), execResult.Stderr);
4932
Assert.Empty(execResult.Stderr);
5033
}
5134

52-
[UsedImplicitly]
53-
public sealed class FirebirdSql25Sc : FirebirdSqlContainerTest
35+
public abstract class FirebirdSqlFixture(IMessageSink messageSink) : DbContainerFixture<FirebirdSqlBuilder, FirebirdSqlContainer>(messageSink)
5436
{
55-
public FirebirdSql25Sc()
56-
: base(new FirebirdSqlBuilder().WithImage("jacobalberty/firebird:2.5-sc").Build())
57-
{
58-
}
37+
public override DbProviderFactory DbProviderFactory => FirebirdClientFactory.Instance;
5938
}
6039

6140
[UsedImplicitly]
62-
public sealed class FirebirdSql25Ss : FirebirdSqlContainerTest
41+
public sealed class FirebirdSqlDefault(FirebirdSqlDefaultFixture fixture) : FirebirdSqlContainerTest(fixture), IClassFixture<FirebirdSqlDefaultFixture>;
42+
[UsedImplicitly]
43+
public sealed class FirebirdSqlDefaultFixture(IMessageSink messageSink) : FirebirdSqlFixture(messageSink);
44+
45+
[UsedImplicitly]
46+
public sealed class FirebirdSql25Sc(FirebirdSql25ScFixture fixture) : FirebirdSqlContainerTest(fixture), IClassFixture<FirebirdSql25ScFixture>;
47+
[UsedImplicitly]
48+
public sealed class FirebirdSql25ScFixture(IMessageSink messageSink) : FirebirdSqlFixture(messageSink)
6349
{
64-
public FirebirdSql25Ss()
65-
: base(new FirebirdSqlBuilder().WithImage("jacobalberty/firebird:2.5-ss").Build())
66-
{
67-
}
50+
protected override FirebirdSqlBuilder Configure(FirebirdSqlBuilder builder) => builder.WithImage("jacobalberty/firebird:2.5-sc");
6851
}
6952

7053
[UsedImplicitly]
71-
public sealed class FirebirdSql30 : FirebirdSqlContainerTest
54+
public sealed class FirebirdSql25Ss(FirebirdSql25SsFixture fixture) : FirebirdSqlContainerTest(fixture), IClassFixture<FirebirdSql25SsFixture>;
55+
[UsedImplicitly]
56+
public sealed class FirebirdSql25SsFixture(IMessageSink messageSink) : FirebirdSqlFixture(messageSink)
7257
{
73-
public FirebirdSql30()
74-
: base(new FirebirdSqlBuilder().WithImage("jacobalberty/firebird:v3.0").Build())
75-
{
76-
}
58+
protected override FirebirdSqlBuilder Configure(FirebirdSqlBuilder builder) => builder.WithImage("jacobalberty/firebird:2.5-ss");
7759
}
7860

7961
[UsedImplicitly]
80-
public sealed class FirebirdSql40 : FirebirdSqlContainerTest
62+
public sealed class FirebirdSql30(FirebirdSql30Fixture fixture) : FirebirdSqlContainerTest(fixture), IClassFixture<FirebirdSql30Fixture>;
63+
[UsedImplicitly]
64+
public sealed class FirebirdSql30Fixture(IMessageSink messageSink) : FirebirdSqlFixture(messageSink)
8165
{
82-
public FirebirdSql40()
83-
: base(new FirebirdSqlBuilder().WithImage("jacobalberty/firebird:v4.0").Build())
84-
{
85-
}
66+
protected override FirebirdSqlBuilder Configure(FirebirdSqlBuilder builder) => builder.WithImage("jacobalberty/firebird:v3.0");
8667
}
8768

8869
[UsedImplicitly]
89-
public sealed class FirebirdSqlSysdba : FirebirdSqlContainerTest
70+
public sealed class FirebirdSqlSysdba(FirebirdSqlSysdbaFixture fixture) : FirebirdSqlContainerTest(fixture), IClassFixture<FirebirdSqlSysdbaFixture>;
71+
[UsedImplicitly]
72+
public sealed class FirebirdSqlSysdbaFixture(IMessageSink messageSink) : FirebirdSqlFixture(messageSink)
9073
{
91-
public FirebirdSqlSysdba()
92-
: base(new FirebirdSqlBuilder().WithUsername("sysdba").WithPassword("some-password").Build())
93-
{
94-
}
74+
protected override FirebirdSqlBuilder Configure(FirebirdSqlBuilder builder) => builder.WithUsername("sysdba").WithPassword("some-password");
9575
}
9676

9777
[UsedImplicitly]
98-
public sealed class FirebirdSqlWaitForDatabase : FirebirdSqlContainerTest
78+
public sealed class FirebirdSqlWaitForDatabase(FirebirdSqlWaitForDatabaseFixture fixture) : FirebirdSqlContainerTest(fixture), IClassFixture<FirebirdSqlWaitForDatabaseFixture>;
79+
[UsedImplicitly]
80+
public sealed class FirebirdSqlWaitForDatabaseFixture(IMessageSink messageSink) : FirebirdSqlFixture(messageSink)
9981
{
100-
public FirebirdSqlWaitForDatabase()
101-
: base(new FirebirdSqlBuilder().WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(FirebirdClientFactory.Instance)).Build())
102-
{
103-
}
82+
protected override FirebirdSqlBuilder Configure(FirebirdSqlBuilder builder) => builder.WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
10483
}
10584
}

tests/Testcontainers.FirebirdSql.Tests/Testcontainers.FirebirdSql.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
</ItemGroup>
1414
<ItemGroup>
1515
<ProjectReference Include="../../src/Testcontainers.FirebirdSql/Testcontainers.FirebirdSql.csproj"/>
16+
<ProjectReference Include="../../src/Testcontainers.Xunit/Testcontainers.Xunit.csproj" />
1617
<ProjectReference Include="../Testcontainers.Commons/Testcontainers.Commons.csproj"/>
1718
</ItemGroup>
1819
</Project>
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
global using System;
12
global using System.Data;
23
global using System.Data.Common;
34
global using System.Threading.Tasks;
45
global using DotNet.Testcontainers.Builders;
56
global using DotNet.Testcontainers.Commons;
67
global using FirebirdSql.Data.FirebirdClient;
78
global using JetBrains.Annotations;
8-
global using Xunit;
9+
global using Testcontainers.Xunit;
10+
global using Xunit;
11+
global using Xunit.Abstractions;

0 commit comments

Comments
 (0)