Skip to content

Commit 8121c7c

Browse files
Seperate tests for geo stuff.
1 parent 720923f commit 8121c7c

9 files changed

Lines changed: 100 additions & 30 deletions

File tree

tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContainer/TestDbContainerSqlite.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ protected override string GetConnectionString()
2121
protected override void Configure(DbContextOptionsBuilder optionsBuilder)
2222
{
2323
optionsBuilder
24-
.UseSqlite(GetConnectionString(), o =>
25-
{
26-
o.UseNetTopologySuite();
27-
})
24+
.UseSqlite(GetConnectionString())
2825
.UseBulkInsertSqlite();
2926
}
3027

tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/DbContext/TestDbContext.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
66
public class TestDbContext : TestDbContextBase
77
{
88
public DbSet<TestEntity> TestEntities { get; set; } = null!;
9-
public DbSet<TestEntityWithGeo> TestEntitiesWithGeo { get; set; } = null!;
109
public DbSet<TestEntityWithJson> TestEntitiesWithJson { get; set; } = null!;
1110
public DbSet<TestEntityWithGuidId> TestEntitiesWithGuidId { get; set; } = null!;
1211
public DbSet<TestEntityWithConverters> TestEntitiesWithConverter { get; set; } = null!;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
using Microsoft.EntityFrameworkCore;
2+
3+
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
4+
5+
public class TestDbContextGeo : TestDbContextBase
6+
{
7+
public DbSet<TestEntityWithGeo> TestEntitiesWithGeo { get; set; } = null!;
8+
}

tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/PhenX.EntityFrameworkCore.BulkInsert.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite" Version="9.0.5" />
1717
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite" Version="9.0.5" />
1818
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
19+
<PackageReference Include="mod_spatialite" Version="4.3.0.1" />
1920
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite" Version="9.0.4" />
2021
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.NetTopologySuite" Version="9.0.0-preview.3.efcore.9.0.0" />
2122
<PackageReference Include="xunit" Version="2.9.3" />

tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Basic/BasicTestsBase.cs

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -113,31 +113,6 @@ public async Task InsertsEntities_WithJson()
113113
Assert.Contains(insertedEntities, e => e.Json[0] == 2);
114114
}
115115

116-
[SkippableFact]
117-
public async Task InsertsEntities_WithGeo()
118-
{
119-
Skip.If(_context.IsProvider(ProviderType.Sqlite));
120-
121-
// Arrange
122-
var geo1 = new Point(1, 2) { SRID = 4326 };
123-
var geo2 = new Point(3, 4) { SRID = 4326 };
124-
125-
var entities = new List<TestEntityWithGeo>
126-
{
127-
new TestEntityWithGeo { TestRun = _run, GeoObject = geo1 },
128-
new TestEntityWithGeo { TestRun = _run, GeoObject = geo2 }
129-
};
130-
131-
// Act
132-
await _context.ExecuteBulkInsertAsync(entities);
133-
134-
// Assert
135-
var insertedEntities = _context.TestEntitiesWithGeo.Where(x => x.TestRun == _run).ToList();
136-
Assert.Equal(2, insertedEntities.Count);
137-
Assert.Contains(insertedEntities, e => e.GeoObject == geo1);
138-
Assert.Contains(insertedEntities, e => e.GeoObject == geo2);
139-
}
140-
141116
[SkippableFact]
142117
public async Task InsertsEntities_AndReturn_AsyncEnumerable()
143118
{
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
using NetTopologySuite.Geometries;
2+
3+
using PhenX.EntityFrameworkCore.BulkInsert.Enums;
4+
using PhenX.EntityFrameworkCore.BulkInsert.Extensions;
5+
using PhenX.EntityFrameworkCore.BulkInsert.MySql;
6+
using PhenX.EntityFrameworkCore.BulkInsert.Options;
7+
using PhenX.EntityFrameworkCore.BulkInsert.SqlServer;
8+
using PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContainer;
9+
using PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
10+
11+
using Xunit;
12+
13+
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.Tests.Geo;
14+
15+
public abstract class GeoTestsBase<TFixture, TDbContext>(TestDbContainer<TDbContext> dbContainer) : IClassFixture<TFixture>, IAsyncLifetime
16+
where TDbContext : TestDbContextGeo, new()
17+
where TFixture : TestDbContainer<TDbContext>
18+
{
19+
private readonly Guid _run = Guid.NewGuid();
20+
private TDbContext _context = null!;
21+
22+
public async Task InitializeAsync()
23+
{
24+
_context = await DbContainer.CreateContextAsync();
25+
}
26+
27+
public Task DisposeAsync()
28+
{
29+
_context.Dispose();
30+
return Task.CompletedTask;
31+
}
32+
33+
protected TestDbContainer<TDbContext> DbContainer { get; } = dbContainer;
34+
35+
[Fact]
36+
public async Task InsertsEntities_WithGeo()
37+
{
38+
// Arrange
39+
var geo1 = new Point(1, 2) { SRID = 4326 };
40+
var geo2 = new Point(3, 4) { SRID = 4326 };
41+
42+
var entities = new List<TestEntityWithGeo>
43+
{
44+
new TestEntityWithGeo { TestRun = _run, GeoObject = geo1 },
45+
new TestEntityWithGeo { TestRun = _run, GeoObject = geo2 }
46+
};
47+
48+
// Act
49+
await _context.ExecuteBulkInsertAsync(entities);
50+
51+
// Assert
52+
var insertedEntities = _context.TestEntitiesWithGeo.Where(x => x.TestRun == _run).ToList();
53+
Assert.Equal(2, insertedEntities.Count);
54+
Assert.Contains(insertedEntities, e => e.GeoObject == geo1);
55+
Assert.Contains(insertedEntities, e => e.GeoObject == geo2);
56+
}
57+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContainer;
2+
using PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
3+
4+
using Xunit;
5+
6+
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.Tests.Geo;
7+
8+
[Trait("Category", "MySql")]
9+
public class GeoTestsMySql(TestDbContainerMySql<TestDbContextGeo> dbContainer) : GeoTestsBase<TestDbContainerMySql<TestDbContextGeo>, TestDbContextGeo>(dbContainer)
10+
{
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContainer;
2+
using PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
3+
4+
using Xunit;
5+
6+
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.Tests.Geo;
7+
8+
[Trait("Category", "PostgreSql")]
9+
public class GeoTestsPostgreSql(TestDbContainerPostgreSql<TestDbContextGeo> dbContainer) : GeoTestsBase<TestDbContainerPostgreSql<TestDbContextGeo>, TestDbContextGeo>(dbContainer)
10+
{
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContainer;
2+
using PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
3+
4+
using Xunit;
5+
6+
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.Tests.Geo;
7+
8+
[Trait("Category", "SqlServer")]
9+
public class GeoTestsSqlServer(TestDbContainerSqlServer<TestDbContextGeo> dbContainer) : GeoTestsBase<TestDbContainerSqlServer<TestDbContextGeo>, TestDbContextGeo>(dbContainer)
10+
{
11+
}

0 commit comments

Comments
 (0)