Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/HydraulicLocationEntityPersistor.cs =================================================================== diff -u -r020c155e9a6fd249022ae74053032202abd89d37 -r5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/HydraulicLocationEntityPersistor.cs (.../HydraulicLocationEntityPersistor.cs) (revision 020c155e9a6fd249022ae74053032202abd89d37) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/HydraulicLocationEntityPersistor.cs (.../HydraulicLocationEntityPersistor.cs) (revision 5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4) @@ -167,13 +167,8 @@ originalList.Remove(hydraulicLocationEntity); } - foreach (var toDelete in originalList) - { - if (toDelete.HydraulicLocationEntityId > 0) - { - ringtoetsContext.HydraulicLocationEntities.Remove(toDelete); - } - } + var existingEntriesToDelete = originalList.Where(o => o.HydraulicLocationEntityId > 0); + ringtoetsContext.Set().RemoveRange(existingEntriesToDelete); modifiedList.Clear(); } Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikeAssessmentSectionEntityPersistorTest.cs =================================================================== diff -u -r220a073b3d2066d57af048325e3ba37bb1340d0d -r5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikeAssessmentSectionEntityPersistorTest.cs (.../DikeAssessmentSectionEntityPersistorTest.cs) (revision 220a073b3d2066d57af048325e3ba37bb1340d0d) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikeAssessmentSectionEntityPersistorTest.cs (.../DikeAssessmentSectionEntityPersistorTest.cs) (revision 5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4) @@ -27,6 +27,7 @@ using Application.Ringtoets.Storage.Exceptions; using Application.Ringtoets.Storage.Persistors; using Application.Ringtoets.Storage.Test.DbContext; +using Application.Ringtoets.Storage.TestUtil; using NUnit.Framework; using Rhino.Mocks; using Ringtoets.HydraRing.Data; @@ -289,6 +290,7 @@ }, HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase() }; + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); mockRepository.ReplayAll(); // Call @@ -323,6 +325,7 @@ entityToDelete }; var ringtoetsEntities = mockRepository.StrictMock(); + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); @@ -356,6 +359,7 @@ { // Setup var ringtoetsEntities = mockRepository.StrictMock(); + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); const string name = "test"; @@ -439,6 +443,7 @@ const string name = "test"; const int norm = 30000; var ringtoetsEntities = mockRepository.StrictMock(); + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); ICollection parentNavigationProperty = new List(); DikeAssessmentSection dikeAssessmentSection = @@ -573,6 +578,7 @@ const long storageId = 1234L; const int norm = 30000; var ringtoetsEntities = mockRepository.StrictMock(); + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); ICollection parentNavigationProperty = new List { @@ -634,6 +640,7 @@ }; var ringtoetsEntities = mockRepository.StrictMock(); + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); DikeAssessmentSection dikeAssessmentSection = @@ -672,6 +679,7 @@ const long hydraulicLocationEntityId = 5678L; var ringtoetsEntities = mockRepository.StrictMock(); + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); DikeAssessmentSection dikeAssessmentSection = new DikeAssessmentSection { @@ -738,6 +746,8 @@ dbset.Expect(x => x.Remove(entityToDelete)).Return(entityToDelete); var ringtoetsEntities = mockRepository.StrictMock(); + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); + ringtoetsEntities.Expect(x => x.DikeAssessmentSectionEntities).Return(dbset); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); @@ -796,6 +806,7 @@ var ringtoetsEntities = mockRepository.StrictMock(); ringtoetsEntities.Expect(x => x.DikeAssessmentSectionEntities).Return(dbset); + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); DikeAssessmentSection dikeAssessmentSection = new DikeAssessmentSection @@ -851,6 +862,7 @@ dbset.Expect(x => x.Remove(secondEntityToDelete)).Return(secondEntityToDelete); var ringtoetsEntities = mockRepository.StrictMock(); + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); ringtoetsEntities.Expect(x => x.DikeAssessmentSectionEntities).Return(dbset).Repeat.Twice(); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); @@ -904,17 +916,21 @@ }).Repeat.Times(numberOfInserts); IList dikeAssessmentSections = new List(); + + var ringtoetsEntities = mockRepository.StrictMock(); + DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); + for (var i = 0; i < numberOfInserts; i++) { + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); dikeAssessmentSections.Add(new DikeAssessmentSection { StorageId = 0L, HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase() }); } - var ringtoetsEntities = mockRepository.StrictMock(); - DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); + mockRepository.ReplayAll(); foreach (var dikeAssessmentSection in dikeAssessmentSections) Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/HydraulicLocationEntityPersistorTest.cs =================================================================== diff -u -r020c155e9a6fd249022ae74053032202abd89d37 -r5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/HydraulicLocationEntityPersistorTest.cs (.../HydraulicLocationEntityPersistorTest.cs) (revision 020c155e9a6fd249022ae74053032202abd89d37) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/HydraulicLocationEntityPersistorTest.cs (.../HydraulicLocationEntityPersistorTest.cs) (revision 5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4) @@ -22,6 +22,7 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Data.Entity; using System.Linq; using Application.Ringtoets.Storage.DbContext; using Application.Ringtoets.Storage.Exceptions; @@ -494,17 +495,18 @@ entityToDelete }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, parentNavigationProperty); - dbset.Expect(x => x.Remove(entityToDelete)).Return(entityToDelete); - var ringtoetsEntitiesMock = mockRepository.StrictMock(); - ringtoetsEntitiesMock.Expect(x => x.HydraulicLocationEntities).Return(dbset); + var set = mockRepository.StrictMock>(); + ringtoetsEntitiesMock.Expect(c => c.Set()).Return(set); + set.Expect(s => s.RemoveRange(Arg>.List.Equal(new[] { entityToDelete }))); + + mockRepository.ReplayAll(); + HydraulicLocationEntityPersistor persistor = new HydraulicLocationEntityPersistor(ringtoetsEntitiesMock); HydraulicBoundaryLocation location = new HydraulicBoundaryLocation(13001, "test", 13, 52); HydraulicBoundaryDatabase hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); hydraulicBoundaryDatabase.Locations.Add(location); - mockRepository.ReplayAll(); // Call persistor.UpdateModel(parentNavigationProperty, hydraulicBoundaryDatabase); @@ -538,12 +540,15 @@ entityToDelete, entityToUpdate }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, parentNavigationProperty); - dbset.Expect(x => x.Remove(entityToDelete)).Return(entityToDelete); var ringtoetsEntitiesMock = mockRepository.StrictMock(); - ringtoetsEntitiesMock.Expect(x => x.HydraulicLocationEntities).Return(dbset); + var set = mockRepository.StrictMock>(); + ringtoetsEntitiesMock.Expect(c => c.Set()).Return(set); + set.Expect(s => s.RemoveRange(Arg>.List.Equal(new[] { entityToDelete }))); + + mockRepository.ReplayAll(); + HydraulicLocationEntityPersistor persistor = new HydraulicLocationEntityPersistor(ringtoetsEntitiesMock); HydraulicBoundaryLocation hydraulicBoundaryLocation = new HydraulicBoundaryLocation(13001, "test", 13, 52) { @@ -552,7 +557,6 @@ HydraulicBoundaryDatabase hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); hydraulicBoundaryDatabase.Locations.Add(hydraulicBoundaryLocation); - mockRepository.ReplayAll(); TestDelegate updateTest = () => persistor.UpdateModel(parentNavigationProperty, hydraulicBoundaryDatabase); Assert.DoesNotThrow(updateTest, "Precondition failed: Update should not throw exception."); @@ -586,19 +590,18 @@ secondEntityToDelete }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, parentNavigationProperty); - dbset.Expect(x => x.Remove(firstEntityToDelete)).Return(firstEntityToDelete); - dbset.Expect(x => x.Remove(secondEntityToDelete)).Return(secondEntityToDelete); - var ringtoetsEntitiesMock = mockRepository.StrictMock(); - ringtoetsEntitiesMock.Expect(x => x.HydraulicLocationEntities).Return(dbset).Repeat.Twice(); - HydraulicLocationEntityPersistor persistor = new HydraulicLocationEntityPersistor(ringtoetsEntitiesMock); + var set = mockRepository.StrictMock>(); + ringtoetsEntitiesMock.Expect(c => c.Set()).Return(set); + set.Expect(s => s.RemoveRange(Arg>.List.Equal(parentNavigationProperty.ToList()))); + mockRepository.ReplayAll(); HydraulicBoundaryLocation hydraulicBoundaryLocation = new HydraulicBoundaryLocation(13001, "test", 13, 52); var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); hydraulicBoundaryDatabase.Locations.Add(hydraulicBoundaryLocation); - mockRepository.ReplayAll(); + HydraulicLocationEntityPersistor persistor = new HydraulicLocationEntityPersistor(ringtoetsEntitiesMock); + TestDelegate test = () => persistor.UpdateModel(parentNavigationProperty, hydraulicBoundaryDatabase); Assert.DoesNotThrow(test, "Precondition failed: UpdateModel"); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/ProjectEntityPersistorTest.cs =================================================================== diff -u -re6314b0eda3a1b258c4ce336ac1ddd3ada77970b -r5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/ProjectEntityPersistorTest.cs (.../ProjectEntityPersistorTest.cs) (revision e6314b0eda3a1b258c4ce336ac1ddd3ada77970b) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/ProjectEntityPersistorTest.cs (.../ProjectEntityPersistorTest.cs) (revision 5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4) @@ -1,11 +1,13 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Data.Entity; using System.Linq; using Application.Ringtoets.Storage.DbContext; using Application.Ringtoets.Storage.Exceptions; using Application.Ringtoets.Storage.Persistors; using Application.Ringtoets.Storage.Test.DbContext; +using Application.Ringtoets.Storage.TestUtil; using Core.Common.Base.Data; using NUnit.Framework; using Rhino.Mocks; @@ -274,6 +276,7 @@ var ringtoetsEntities = mockRepository.StrictMock(); ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); mockRepository.ReplayAll(); ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); @@ -448,6 +451,7 @@ }); var ringtoetsEntities = mockRepository.StrictMock(); ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); + DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); mockRepository.ReplayAll(); ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/Application.Ringtoets.Storage.TestUtil.csproj =================================================================== diff -u -r1395d3e2c0a6df5b27da3a44c820ca90eab3492c -r5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/Application.Ringtoets.Storage.TestUtil.csproj (.../Application.Ringtoets.Storage.TestUtil.csproj) (revision 1395d3e2c0a6df5b27da3a44c820ca90eab3492c) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/Application.Ringtoets.Storage.TestUtil.csproj (.../Application.Ringtoets.Storage.TestUtil.csproj) (revision 5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4) @@ -37,11 +37,22 @@ pdbonly + + False + ..\..\..\..\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.dll + + + ..\..\..\..\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.SqlServer.dll + ..\..\..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll True + + ..\..\..\..\packages\RhinoMocks.3.6.1\lib\net\Rhino.Mocks.dll + + @@ -50,6 +61,7 @@ + @@ -58,6 +70,7 @@ Copying.licenseheader + Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/DatabaseSetHelper.cs =================================================================== diff -u --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/DatabaseSetHelper.cs (revision 0) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/DatabaseSetHelper.cs (revision 5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4) @@ -0,0 +1,15 @@ +using System.Data.Entity; +using Application.Ringtoets.Storage.DbContext; +using Rhino.Mocks; + +namespace Application.Ringtoets.Storage.TestUtil +{ + public static class DatabaseSetHelper + { + public static void AddSetExpectancy(MockRepository mocks, IRingtoetsEntities entities) where T : class + { + var set = mocks.Stub>(); + entities.Expect(c => c.Set()).Return(set); + } + } +} \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/packages.config =================================================================== diff -u -rfadb006ef0285eb3fdbdbfc805729b37c8dbc0e6 -r5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/packages.config (.../packages.config) (revision fadb006ef0285eb3fdbdbfc805729b37c8dbc0e6) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/packages.config (.../packages.config) (revision 5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4) @@ -23,6 +23,8 @@ All rights reserved. --> + + \ No newline at end of file