Skip to content

Commit 4c3ab47

Browse files
author
fabien.menager
committed
Add value converter test
1 parent 279bac5 commit 4c3ab47

3 files changed

Lines changed: 51 additions & 0 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
using Microsoft.EntityFrameworkCore;
2+
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
23

34
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
45

56
public class TestDbContext : TestDbContextBase
67
{
78
public DbSet<TestEntity> TestEntities { get; set; } = null!;
9+
public DbSet<TestEntityWithConverters> TestEntitiesWithConverters { get; set; } = null!;
10+
11+
protected override void OnModelCreating(ModelBuilder modelBuilder)
12+
{
13+
base.OnModelCreating(modelBuilder);
14+
modelBuilder.Entity<TestEntityWithConverters>(builder =>
15+
{
16+
builder.Property(e => e.CreatedAt)
17+
.HasConversion(new DateTimeToBinaryConverter());
18+
});
19+
}
820
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System.ComponentModel.DataAnnotations;
2+
using System.ComponentModel.DataAnnotations.Schema;
3+
4+
namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.DbContext;
5+
6+
[Table("test_entity_with_converters")]
7+
public class TestEntityWithConverters
8+
{
9+
public int Id { get; set; }
10+
11+
[Column("name")]
12+
[MaxLength(100)]
13+
public string Name { get; set; } = string.Empty;
14+
15+
[Column("created_at")]
16+
public DateTime CreatedAt { get; set; }
17+
}
18+

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,27 @@ await DbContainer.DbContext.ExecuteInsertAsync(entities, o =>
236236
Assert.Contains(insertedEntities, e => e.Name == "Entity" + count);
237237
}
238238

239+
[Fact]
240+
public async Task InsertAndRead_EntityWithValueConverters()
241+
{
242+
// Arrange
243+
var now = DateTime.UtcNow;
244+
var entities = new List<TestEntityWithConverters>
245+
{
246+
new() { Name = "Entity1", CreatedAt = now },
247+
new() { Name = "Entity2", CreatedAt = now.AddDays(-1) }
248+
};
249+
250+
// Act
251+
await DbContainer.DbContext.ExecuteInsertAsync(entities);
252+
var inserted = DbContainer.DbContext.TestEntitiesWithConverters.ToList();
253+
254+
// Assert
255+
Assert.Equal(2, inserted.Count);
256+
Assert.Contains(inserted, e => e.Name == "Entity1" && e.CreatedAt == now);
257+
Assert.Contains(inserted, e => e.Name == "Entity2" && e.CreatedAt == now.AddDays(-1));
258+
}
259+
239260
public Task InitializeAsync() => DbContainer.InitializeAsync();
240261

241262
public Task DisposeAsync() => DbContainer.DisposeAsync();

0 commit comments

Comments
 (0)