Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,8 @@ fabric.properties
# Vitepress
docs/.vitepress/dist
docs/.vitepress/cache

.direnv
.envrc
.launch
PhenX.EntityFrameworkCore.BulkInsert.sln.DotSettings.user
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ public abstract class TestDbContainer<TBuilderEntity, TContainerEntity>(IMessage

protected abstract TBuilderEntity CreateBuilder();

protected virtual string DbmsName => typeof(TContainerEntity).Name.Replace("Container", "");
protected virtual string DbmsName => GetType().Name.Replace("TestDbContainer", "");

protected override TBuilderEntity Configure()
{
var targetFramework = GetType().Assembly.GetCustomAttributes<AssemblyMetadataAttribute>().FirstOrDefault(e => e.Key == "TargetFramework")?.Value ?? "NA";
return CreateBuilder()
.WithReuse(true)
.WithReuse(false)
.WithName($"PhenX.EntityFrameworkCore.BulkInsert.Tests.{DbmsName}-{targetFramework}")
.WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using System.Data.Common;

using Microsoft.EntityFrameworkCore;

using Npgsql;

using PhenX.EntityFrameworkCore.BulkInsert.PostgreSql;

using Testcontainers.PostgreSql;

using Xunit;
using Xunit.Abstractions;

namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContainer;

[CollectionDefinition(Name)]
public class TestDbContainerPostgreSqlSnakeCaseCollection : ICollectionFixture<TestDbContainerPostgreSqlSnakeCase>
{
public const string Name = "PostgreSqlSnakeCase";
}

public class TestDbContainerPostgreSqlSnakeCase(IMessageSink messageSink) : TestDbContainer<PostgreSqlBuilder, PostgreSqlContainer>(messageSink)
{
public override DbProviderFactory DbProviderFactory => NpgsqlFactory.Instance;

// GeoSpatial support, using imresamu/postgis instead of postgis/postgis for arm64 support, see https://github.com/postgis/docker-postgis/issues/216#issuecomment-2936824962
protected override PostgreSqlBuilder CreateBuilder() => new("imresamu/postgis:17-3.5");

protected override void Configure(DbContextOptionsBuilder optionsBuilder, string databaseName)
{
optionsBuilder
.UseNpgsql(GetConnectionString(databaseName), o =>
{
o.UseNetTopologySuite();
})
.UseSnakeCaseNamingConvention()
.UseBulkInsertPostgreSql();
}
}
Loading
Loading