1- using System . Linq ;
1+ using System ;
2+ using System . Linq ;
23using System . Threading . Tasks ;
34using AutoMapper . EntityFrameworkCore ;
45using FluentAssertions ;
78
89namespace AutoMapper . Collection . EntityFrameworkCore . Tests
910{
10- public abstract class EntityFrameworkCoreTestsBase
11+ public abstract class EntityFramworkCoreTestsBase : IDisposable
1112 {
12- protected abstract DBContextBase GetDbContext ( ) ;
13- protected abstract IMapper GetMapper ( ) ;
13+ protected IMapper mapper ;
14+ protected DBContextBase db ; // IDisposable
1415
1516 [ Fact ]
1617 public void Persist_InsertOrUpdate_WhenEntityExist_ThenTheEntityShouldBeInTheModifiedState ( )
1718 {
1819 // Arrange
19- var mapper = GetMapper ( ) ;
20- var db = GetDbContext ( ) ;
21-
2220 db . Things . Add ( new Thing { Title = "Test2" } ) ;
2321 db . Things . Add ( new Thing { Title = "Test3" } ) ;
2422 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -36,10 +34,7 @@ public void Persist_InsertOrUpdate_WhenEntityExist_ThenTheEntityShouldBeInTheMod
3634 [ Fact ]
3735 public void Persist_InsertOrUpdate_WhenEntityExist_ThenTheEntityShouldBeUpdated ( )
3836 {
39- // Arrange
40- var mapper = GetMapper ( ) ;
41- var db = GetDbContext ( ) ;
42-
37+ // Arrange [mapper and db fields set in ctor]
4338 db . Things . Add ( new Thing { Title = "Test2" } ) ;
4439 db . Things . Add ( new Thing { Title = "Test3" } ) ;
4540 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -59,10 +54,7 @@ public void Persist_InsertOrUpdate_WhenEntityExist_ThenTheEntityShouldBeUpdated(
5954 [ Fact ]
6055 public void Persist_InsertOrUpdate_WhenEntityDoesNotExist_ThenTheEntityShouldBeInTheAddedState ( )
6156 {
62- // Arrange
63- var mapper = GetMapper ( ) ;
64- var db = GetDbContext ( ) ;
65-
57+ // Arrange [mapper and db fields set in ctor]
6658 db . Things . Add ( new Thing { Title = "Test2" } ) ;
6759 db . Things . Add ( new Thing { Title = "Test3" } ) ;
6860 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -79,10 +71,7 @@ public void Persist_InsertOrUpdate_WhenEntityDoesNotExist_ThenTheEntityShouldBeI
7971 [ Fact ]
8072 public void Persist_InsertOrUpdate_WhenEntityDoesNotExist_ThenTheEntityShouldBeInserted ( )
8173 {
82- // Arrange
83- var mapper = GetMapper ( ) ;
84- var db = GetDbContext ( ) ;
85-
74+ // Arrange [mapper and db fields set in ctor]
8675 db . Things . Add ( new Thing { Title = "Test2" } ) ;
8776 db . Things . Add ( new Thing { Title = "Test3" } ) ;
8877 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -103,10 +92,7 @@ public void Persist_InsertOrUpdate_WhenEntityDoesNotExist_ThenTheEntityShouldBeI
10392 [ Fact ]
10493 public async Task Persist_InsertOrUpdateAsync_WhenEntityExist_ThenTheEntityShouldBeInTheModifiedState ( )
10594 {
106- // Arrange
107- var mapper = GetMapper ( ) ;
108- var db = GetDbContext ( ) ;
109-
95+ // Arrange [mapper and db fields set in ctor]
11096 db . Things . Add ( new Thing { Title = "Test2" } ) ;
11197 db . Things . Add ( new Thing { Title = "Test3" } ) ;
11298 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -124,10 +110,7 @@ public async Task Persist_InsertOrUpdateAsync_WhenEntityExist_ThenTheEntityShoul
124110 [ Fact ]
125111 public async Task Persist_InsertOrUpdateAsync_WhenEntityExist_ThenTheEntityShouldBeUpdated ( )
126112 {
127- // Arrange
128- var mapper = GetMapper ( ) ;
129- var db = GetDbContext ( ) ;
130-
113+ // Arrange [mapper and db fields set in ctor]
131114 db . Things . Add ( new Thing { Title = "Test2" } ) ;
132115 db . Things . Add ( new Thing { Title = "Test3" } ) ;
133116 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -147,10 +130,7 @@ public async Task Persist_InsertOrUpdateAsync_WhenEntityExist_ThenTheEntityShoul
147130 [ Fact ]
148131 public async Task Persist_InsertOrUpdateAsync_WhenEntityDoesNotExist_ThenTheEntityShouldBeInTheAddedState ( )
149132 {
150- // Arrange
151- var mapper = GetMapper ( ) ;
152- var db = GetDbContext ( ) ;
153-
133+ // Arrange [mapper and db fields set in ctor]
154134 db . Things . Add ( new Thing { Title = "Test2" } ) ;
155135 db . Things . Add ( new Thing { Title = "Test3" } ) ;
156136 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -167,10 +147,7 @@ public async Task Persist_InsertOrUpdateAsync_WhenEntityDoesNotExist_ThenTheEnti
167147 [ Fact ]
168148 public async Task Persist_InsertOrUpdateAsync_WhenEntityDoesNotExist_ThenTheEntityShouldBeInserted ( )
169149 {
170- // Arrange
171- var mapper = GetMapper ( ) ;
172- var db = GetDbContext ( ) ;
173-
150+ // Arrange [mapper and db fields set in ctor]
174151 db . Things . Add ( new Thing { Title = "Test2" } ) ;
175152 db . Things . Add ( new Thing { Title = "Test3" } ) ;
176153 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -191,10 +168,7 @@ public async Task Persist_InsertOrUpdateAsync_WhenEntityDoesNotExist_ThenTheEnti
191168 [ Fact ]
192169 public void Persist_Remove_WhenEntityExist_ThenTheEntityShouldBeInTheDeletedState ( )
193170 {
194- // Arrange
195- var mapper = GetMapper ( ) ;
196- var db = GetDbContext ( ) ;
197-
171+ // Arrange [mapper and db fields set in ctor]
198172 db . Things . Add ( new Thing { Title = "Test2" } ) ;
199173 db . Things . Add ( new Thing { Title = "Test3" } ) ;
200174 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -212,10 +186,7 @@ public void Persist_Remove_WhenEntityExist_ThenTheEntityShouldBeInTheDeletedStat
212186 [ Fact ]
213187 public void Persist_Remove_WhenEntityExist_ThenTheEntityShouldBeDeleted ( )
214188 {
215- // Arrange
216- var mapper = GetMapper ( ) ;
217- var db = GetDbContext ( ) ;
218-
189+ // Arrange [mapper and db fields set in ctor]
219190 db . Things . Add ( new Thing { Title = "Test2" } ) ;
220191 db . Things . Add ( new Thing { Title = "Test3" } ) ;
221192 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -235,10 +206,7 @@ public void Persist_Remove_WhenEntityExist_ThenTheEntityShouldBeDeleted()
235206 [ Fact ]
236207 public async Task Persist_RemoveAsync_WhenEntityExist_ThenTheEntityShouldBeInTheDeletedState ( )
237208 {
238- // Arrange
239- var mapper = GetMapper ( ) ;
240- var db = GetDbContext ( ) ;
241-
209+ // Arrange [mapper and db fields set in ctor]
242210 db . Things . Add ( new Thing { Title = "Test2" } ) ;
243211 db . Things . Add ( new Thing { Title = "Test3" } ) ;
244212 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -256,10 +224,7 @@ public async Task Persist_RemoveAsync_WhenEntityExist_ThenTheEntityShouldBeInThe
256224 [ Fact ]
257225 public async Task Persist_RemoveAsync_WhenEntityExist_ThenTheEntityShouldBeDeleted ( )
258226 {
259- // Arrange
260- var mapper = GetMapper ( ) ;
261- var db = GetDbContext ( ) ;
262-
227+ // Arrange [mapper and db fields set in ctor]
263228 db . Things . Add ( new Thing { Title = "Test2" } ) ;
264229 db . Things . Add ( new Thing { Title = "Test3" } ) ;
265230 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -285,10 +250,7 @@ public async Task Persist_RemoveAsync_WhenEntityExist_ThenTheEntityShouldBeDelet
285250 /// <remarks>AutoMapper.Collection.EntityFrameworkCore.Remove silently ignores non-existent DELETEs</remarks>
286251 public void Persist_Remove_WhenEntityDoesNotExist_ThenShouldBeUnchangedState ( )
287252 {
288- // Arrange
289- var mapper = GetMapper ( ) ;
290- var db = GetDbContext ( ) ;
291-
253+ // Arrange [mapper and db fields set in ctor]
292254 db . Things . Add ( new Thing { Title = "Test2" } ) ;
293255 db . Things . Add ( new Thing { Title = "Test3" } ) ;
294256 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -306,10 +268,7 @@ public void Persist_Remove_WhenEntityDoesNotExist_ThenShouldBeUnchangedState()
306268 /// <remarks>AutoMapper.Collection.EntityFrameworkCore.Remove silently ignores non-existent DELETEs</remarks>
307269 public void Persist_Remove_WhenEntityDoesNotExist_ThenShouldBeNoChange ( )
308270 {
309- // Arrange
310- var mapper = GetMapper ( ) ;
311- var db = GetDbContext ( ) ;
312-
271+ // Arrange [mapper and db fields set in ctor]
313272 db . Things . Add ( new Thing { Title = "Test2" } ) ;
314273 db . Things . Add ( new Thing { Title = "Test3" } ) ;
315274 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -333,10 +292,7 @@ public void Persist_Remove_WhenEntityDoesNotExist_ThenShouldBeNoChange()
333292 /// <remarks>this behaviour is like INPC in GUI land</remarks>
334293 public void Persist_InsertOrUpdate_WhenSameEntity_ThenTheEntityShouldBeInTheUnchangedState ( )
335294 {
336- // Arrange
337- var mapper = GetMapper ( ) ;
338- var db = GetDbContext ( ) ;
339-
295+ // Arrange [mapper and db fields set in ctor]
340296 db . Things . Add ( new Thing { Title = "Test2" } ) ;
341297 db . Things . Add ( new Thing { Title = "Test3" } ) ;
342298 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -360,10 +316,7 @@ public void Persist_InsertOrUpdate_WhenSameEntity_ThenTheEntityShouldBeInTheUnch
360316 /// <remarks>this behaviour is like INPC in GUI land</remarks>
361317 public void Persist_InsertOrUpdate_WhenSameEntity_ThenSavedEntityShouldBeSame ( )
362318 {
363- // Arrange
364- var mapper = GetMapper ( ) ;
365- var db = GetDbContext ( ) ;
366-
319+ // Arrange [mapper and db fields set in ctor]
367320 db . Things . Add ( new Thing { Title = "Test2" } ) ;
368321 db . Things . Add ( new Thing { Title = "Test3" } ) ;
369322 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -387,10 +340,7 @@ public void Persist_InsertOrUpdate_WhenSameEntity_ThenSavedEntityShouldBeSame()
387340 /// <remarks>AutoMapper.Collection.EntityFrameworkCore.Remove silently ignores non-existent DELETEs</remarks>
388341 public async Task Persist_RemoveAsync_WhenEntityDoesNotExist_ThenShouldBeUnchangedState ( )
389342 {
390- // Arrange
391- var mapper = GetMapper ( ) ;
392- var db = GetDbContext ( ) ;
393-
343+ // Arrange [mapper and db fields set in ctor]
394344 db . Things . Add ( new Thing { Title = "Test2" } ) ;
395345 db . Things . Add ( new Thing { Title = "Test3" } ) ;
396346 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -408,10 +358,7 @@ public async Task Persist_RemoveAsync_WhenEntityDoesNotExist_ThenShouldBeUnchang
408358 /// <remarks>AutoMapper.Collection.EntityFrameworkCore.Remove silently ignores non-existent DELETEs</remarks>
409359 public async Task Persist_RemoveAsync_WhenEntityDoesNotExist_ThenShouldBeNoChange ( )
410360 {
411- // Arrange
412- var mapper = GetMapper ( ) ;
413- var db = GetDbContext ( ) ;
414-
361+ // Arrange [mapper and db fields set in ctor]
415362 db . Things . Add ( new Thing { Title = "Test2" } ) ;
416363 db . Things . Add ( new Thing { Title = "Test3" } ) ;
417364 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -435,10 +382,7 @@ public async Task Persist_RemoveAsync_WhenEntityDoesNotExist_ThenShouldBeNoChang
435382 /// <remarks>this behaviour is like INPC in GUI land</remarks>
436383 public async Task Persist_InsertOrUpdateAsync_WhenSameEntity_ThenTheEntityShouldBeInTheUnchangedState ( )
437384 {
438- // Arrange
439- var mapper = GetMapper ( ) ;
440- var db = GetDbContext ( ) ;
441-
385+ // Arrange [mapper and db fields set in ctor]
442386 db . Things . Add ( new Thing { Title = "Test2" } ) ;
443387 db . Things . Add ( new Thing { Title = "Test3" } ) ;
444388 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -462,10 +406,7 @@ public async Task Persist_InsertOrUpdateAsync_WhenSameEntity_ThenTheEntityShould
462406 /// <remarks>this behaviour is like INPC in GUI land</remarks>
463407 public async Task Persist_InsertOrUpdateAsync_WhenSameEntity_ThenSavedEntityShouldBeSame ( )
464408 {
465- // Arrange
466- var mapper = GetMapper ( ) ;
467- var db = GetDbContext ( ) ;
468-
409+ // Arrange [mapper and db fields set in ctor]
469410 db . Things . Add ( new Thing { Title = "Test2" } ) ;
470411 db . Things . Add ( new Thing { Title = "Test3" } ) ;
471412 db . Things . Add ( new Thing { Title = "Test4" } ) ;
@@ -484,6 +425,8 @@ public async Task Persist_InsertOrUpdateAsync_WhenSameEntity_ThenSavedEntityShou
484425 db . Things . FirstOrDefault ( x => x . ID == item . ID ) . Title . Should ( ) . Be ( item . Title ) ;
485426 }
486427
428+ public virtual void Dispose ( ) => db ? . Dispose ( ) ;
429+
487430 public abstract class DBContextBase : DbContext
488431 {
489432 protected DBContextBase ( DbContextOptions dbContextOptions )
0 commit comments