@@ -9,14 +9,8 @@ namespace PhenX.EntityFrameworkCore.BulkInsert.Tests.Tests.Basic;
99
1010public abstract class BasicTestsBase : IAsyncLifetime
1111{
12- private static int Id = ( int ) DateTimeOffset . UtcNow . ToUnixTimeSeconds ( ) ;
1312 private readonly string _prefix = Guid . NewGuid ( ) . ToString ( ) ;
1413
15- public static int GetId ( )
16- {
17- return Interlocked . Increment ( ref Id ) + 1 ;
18- }
19-
2014 protected BasicTestsBase ( TestDbContainer < TestDbContext > dbContainer )
2115 {
2216 DbContainer = dbContainer ;
@@ -30,12 +24,12 @@ public async Task InsertsEntitiesSuccessfully()
3024 // Arrange
3125 var entities = new List < TestEntity >
3226 {
33- new TestEntity { Id = GetId ( ) , Name = $ "{ _prefix } _Entity1" } ,
34- new TestEntity { Id = GetId ( ) , Name = $ "{ _prefix } _Entity2" }
27+ new TestEntity { Name = $ "{ _prefix } _Entity1" } ,
28+ new TestEntity { Name = $ "{ _prefix } _Entity2" }
3529 } ;
3630
3731 // Act
38- await DbContainer . DbContext . ExecuteBulkInsertReturnEntitiesAsync ( entities ) ;
32+ await DbContainer . DbContext . ExecuteBulkInsertAsync ( entities ) ;
3933
4034 // Assert
4135 var insertedEntities = DbContainer . DbContext . TestEntities . ToList ( ) ;
@@ -50,12 +44,12 @@ public void InsertsEntitiesSuccessfully_Sync()
5044 // Arrange
5145 var entities = new List < TestEntity >
5246 {
53- new TestEntity { Id = GetId ( ) , Name = $ "{ _prefix } _Entity1" } ,
54- new TestEntity { Id = GetId ( ) , Name = $ "{ _prefix } _Entity2" }
47+ new TestEntity { Name = $ "{ _prefix } _Entity1" } ,
48+ new TestEntity { Name = $ "{ _prefix } _Entity2" }
5549 } ;
5650
5751 // Act
58- DbContainer . DbContext . ExecuteBulkInsertReturnEntities ( entities ) ;
52+ DbContainer . DbContext . ExecuteBulkInsert ( entities ) ;
5953
6054 // Assert
6155 var insertedEntities = DbContainer . DbContext . TestEntities . ToList ( ) ;
@@ -64,25 +58,67 @@ public void InsertsEntitiesSuccessfully_Sync()
6458 Assert . Contains ( insertedEntities , e => e . Name == $ "{ _prefix } _Entity2") ;
6559 }
6660
61+ [ SkippableFact ]
62+ public async Task InsertsEntitiesAndReturn ( )
63+ {
64+ Skip . If ( DbContainer . DbContext . Database . ProviderName ! . Contains ( "Mysql" , StringComparison . InvariantCultureIgnoreCase ) ) ;
65+
66+ // Arrange
67+ var entities = new List < TestEntity >
68+ {
69+ new TestEntity { Name = $ "{ _prefix } _Entity1" } ,
70+ new TestEntity { Name = $ "{ _prefix } _Entity2" }
71+ } ;
72+
73+ // Act
74+ var insertedEntities = await DbContainer . DbContext . ExecuteBulkInsertReturnEntitiesAsync ( entities ) ;
75+
76+ // Assert
77+ Assert . Equal ( 2 , insertedEntities . Count ) ;
78+ Assert . Contains ( insertedEntities , e => e . Name == $ "{ _prefix } _Entity1") ;
79+ Assert . Contains ( insertedEntities , e => e . Name == $ "{ _prefix } _Entity2") ;
80+ }
81+
82+ [ SkippableFact ]
83+ public void InsertsEntitiesAndReturn_Sync ( )
84+ {
85+ Skip . If ( DbContainer . DbContext . Database . ProviderName ! . Contains ( "Mysql" , StringComparison . InvariantCultureIgnoreCase ) ) ;
86+
87+ // Arrange
88+ var entities = new List < TestEntity >
89+ {
90+ new TestEntity { Name = $ "{ _prefix } _Entity1" } ,
91+ new TestEntity { Name = $ "{ _prefix } _Entity2" }
92+ } ;
93+
94+ // Act
95+ var insertedEntities = DbContainer . DbContext . ExecuteBulkInsertReturnEntities ( entities ) ;
96+
97+ // Assert
98+ Assert . Equal ( 2 , insertedEntities . Count ) ;
99+ Assert . Contains ( insertedEntities , e => e . Name == $ "{ _prefix } _Entity1") ;
100+ Assert . Contains ( insertedEntities , e => e . Name == $ "{ _prefix } _Entity2") ;
101+ }
102+
67103 [ Fact ]
68104 public async Task InsertsEntities_MultipleTimes ( )
69105 {
70106 // Arrange
71107 var entities = new List < TestEntity >
72108 {
73- new TestEntity { Id = GetId ( ) , Name = $ "{ _prefix } _Entity1" } ,
74- new TestEntity { Id = GetId ( ) , Name = $ "{ _prefix } _Entity2" }
109+ new TestEntity { Name = $ "{ _prefix } _Entity1" } ,
110+ new TestEntity { Name = $ "{ _prefix } _Entity2" }
75111 } ;
76112
77113 // Act
78- await DbContainer . DbContext . ExecuteBulkInsertReturnEntitiesAsync ( entities ) ;
114+ await DbContainer . DbContext . ExecuteBulkInsertAsync ( entities ) ;
79115
80116 foreach ( var entity in entities )
81117 {
82118 entity . NumericEnumValue = NumericEnum . Second ;
83119 }
84120
85- await DbContainer . DbContext . ExecuteBulkInsertReturnEntitiesAsync ( entities ,
121+ await DbContainer . DbContext . ExecuteBulkInsertAsync ( entities ,
86122 onConflict : new OnConflictOptions < TestEntity >
87123 {
88124 Update = e => e ,
@@ -95,18 +131,51 @@ await DbContainer.DbContext.ExecuteBulkInsertReturnEntitiesAsync(entities,
95131 Assert . Contains ( insertedEntities , e => e . NumericEnumValue == NumericEnum . Second ) ;
96132 }
97133
134+ [ Fact ]
135+ public async Task InsertsEntities_MultipleTimes_With_Conflict_On_Id ( )
136+ {
137+ // Arrange
138+ var entities = new List < TestEntity >
139+ {
140+ new TestEntity { Name = $ "{ _prefix } _Entity1" } ,
141+ new TestEntity { Name = $ "{ _prefix } _Entity2" }
142+ } ;
143+
144+ // Act
145+ await DbContainer . DbContext . ExecuteBulkInsertAsync ( entities ) ;
146+
147+ var insertedEntities0 = DbContainer . DbContext . TestEntities . ToList ( ) ;
148+ foreach ( var entity in insertedEntities0 )
149+ {
150+ entity . Name = $ "Updated_{ entity . Name } ";
151+ }
152+
153+ await DbContainer . DbContext . ExecuteBulkInsertAsync ( insertedEntities0 ,
154+ o => o . CopyGeneratedColumns = true ,
155+ onConflict : new OnConflictOptions < TestEntity >
156+ {
157+ Update = e => e ,
158+ } ) ;
159+
160+ // Assert
161+ var insertedEntities1 = DbContainer . DbContext . TestEntities . ToList ( ) ;
162+ Assert . Equal ( 2 , insertedEntities1 . Count ) ;
163+ Assert . Contains ( insertedEntities1 , e => e . Name == $ "Updated_{ _prefix } _Entity1") ;
164+ Assert . Contains ( insertedEntities1 , e => e . Name == $ "Updated_{ _prefix } _Entity2") ;
165+ }
166+
98167 [ Fact ]
99168 public async Task InsertsEntitiesMoveRowsSuccessfully ( )
100169 {
101170 // Arrange
102171 var entities = new List < TestEntity >
103172 {
104- new TestEntity { Id = GetId ( ) , Name = $ "{ _prefix } _Entity1" } ,
105- new TestEntity { Id = GetId ( ) , Name = $ "{ _prefix } _Entity2" }
173+ new TestEntity { Name = $ "{ _prefix } _Entity1" } ,
174+ new TestEntity { Name = $ "{ _prefix } _Entity2" }
106175 } ;
107176
108177 // Act
109- await DbContainer . DbContext . ExecuteBulkInsertReturnEntitiesAsync ( entities , o =>
178+ await DbContainer . DbContext . ExecuteBulkInsertAsync ( entities , o =>
110179 {
111180 o . MoveRows = true ;
112181 } ) ;
0 commit comments