Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/IRingtoetsEntities.cs =================================================================== diff -u -rd7c94e90643cacf26292824cdbef90b0cddc53ff -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/IRingtoetsEntities.cs (.../IRingtoetsEntities.cs) (revision d7c94e90643cacf26292824cdbef90b0cddc53ff) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/IRingtoetsEntities.cs (.../IRingtoetsEntities.cs) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -33,22 +33,22 @@ /// /// of /// - IDbSet ProjectEntities { get; } + DbSet ProjectEntities { get; } /// /// of /// - IDbSet DikeAssessmentSectionEntities { get; } + DbSet DikeAssessmentSectionEntities { get; } /// /// of /// - IDbSet FailureMechanismEntities { get; } + DbSet FailureMechanismEntities { get; } /// /// of /// - IDbSet HydraulicLocationEntities { get; } + DbSet HydraulicLocationEntities { get; } DbSet Set() where TEntity : class; Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.Context.cs =================================================================== diff -u -rd7c94e90643cacf26292824cdbef90b0cddc53ff -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.Context.cs (.../RingtoetsEntities.Context.cs) (revision d7c94e90643cacf26292824cdbef90b0cddc53ff) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.Context.cs (.../RingtoetsEntities.Context.cs) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -52,11 +52,11 @@ throw new UnintentionalCodeFirstException(); } - public virtual IDbSet DikeAssessmentSectionEntities { get; set; } - public virtual IDbSet FailureMechanismEntities { get; set; } - public virtual IDbSet HydraulicLocationEntities { get; set; } - public virtual IDbSet ProjectEntities { get; set; } - public virtual IDbSet ReferenceLinePointEntities { get; set; } - public virtual IDbSet Versions { get; set; } + public virtual DbSet DikeAssessmentSectionEntities { get; set; } + public virtual DbSet FailureMechanismEntities { get; set; } + public virtual DbSet HydraulicLocationEntities { get; set; } + public virtual DbSet ProjectEntities { get; set; } + public virtual DbSet ReferenceLinePointEntities { get; set; } + public virtual DbSet Versions { get; set; } } } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.Context.tt =================================================================== diff -u -rc50bbb508171b9879c1bcffc412309da4810b38d -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.Context.tt (.../RingtoetsEntities.Context.tt) (revision c50bbb508171b9879c1bcffc412309da4810b38d) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.Context.tt (.../RingtoetsEntities.Context.tt) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -335,7 +335,7 @@ { return string.Format( CultureInfo.InvariantCulture, - "{0} virtual IDbSet<{1}> {2} {{ get; set; }}", + "{0} virtual DbSet<{1}> {2} {{ get; set; }}", Accessibility.ForReadOnlyProperty(entitySet), _typeMapper.GetTypeName(entitySet.ElementType), _code.Escape(entitySet)); Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/FailureMechanismEntityPersistorBase.cs =================================================================== diff -u -rd242e89e13ef602facae6a1ef91660242bcef340 -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/FailureMechanismEntityPersistorBase.cs (.../FailureMechanismEntityPersistorBase.cs) (revision d242e89e13ef602facae6a1ef91660242bcef340) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/FailureMechanismEntityPersistorBase.cs (.../FailureMechanismEntityPersistorBase.cs) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -23,13 +23,10 @@ using System.Collections.Generic; using System.Data.Entity; using System.Linq; -using Application.Ringtoets.Storage.Converters; using Application.Ringtoets.Storage.DbContext; using Application.Ringtoets.Storage.Exceptions; using Application.Ringtoets.Storage.Properties; using Ringtoets.Common.Data; -using Ringtoets.Integration.Data; -using Ringtoets.Piping.Data; namespace Application.Ringtoets.Storage.Persistors { @@ -38,7 +35,7 @@ /// public abstract class FailureMechanismEntityPersistorBase where T : IFailureMechanism { - private readonly IRingtoetsEntities dbContext; + private readonly DbSet dbSet; private readonly Dictionary insertedList = new Dictionary(); private readonly ICollection modifiedList = new List(); @@ -53,7 +50,7 @@ { throw new ArgumentNullException("ringtoetsContext"); } - dbContext = ringtoetsContext; + dbSet = ringtoetsContext.FailureMechanismEntities; } /// @@ -159,7 +156,7 @@ // If id = 0, the entity is marked as inserted if (toDelete.FailureMechanismEntityId > 0) { - dbContext.FailureMechanismEntities.Remove(toDelete); + dbSet.Remove(toDelete); } } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/ProjectEntityPersistor.cs =================================================================== diff -u -r0b5ecd8a04803bce1ed8398053e9b7cb7404b886 -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/ProjectEntityPersistor.cs (.../ProjectEntityPersistor.cs) (revision 0b5ecd8a04803bce1ed8398053e9b7cb7404b886) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/ProjectEntityPersistor.cs (.../ProjectEntityPersistor.cs) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -38,8 +38,7 @@ /// public class ProjectEntityPersistor { - private readonly IRingtoetsEntities dbContext; - private readonly IDbSet dbSet; + private readonly DbSet dbSet; private readonly ProjectEntityConverter converter; private readonly Dictionary insertedList = new Dictionary(); private readonly ICollection modifiedList = new List(); @@ -57,12 +56,11 @@ { throw new ArgumentNullException("ringtoetsContext"); } - dbContext = ringtoetsContext; - dbSet = dbContext.ProjectEntities; + dbSet = ringtoetsContext.ProjectEntities; converter = new ProjectEntityConverter(); - dikeAssessmentSectionEntityPersistor = new DikeAssessmentSectionEntityPersistor(dbContext); + dikeAssessmentSectionEntityPersistor = new DikeAssessmentSectionEntityPersistor(ringtoetsContext); } /// @@ -87,7 +85,7 @@ /// The parentNavigationProperty is read-only. public void InsertModel(Project project) { - InsertModel(dbSet.Local, project); + InsertModel(dbSet, project); } /// @@ -104,41 +102,14 @@ /// The parentNavigationProperty is read-only. public void UpdateModel(Project model) { - UpdateModel(dbSet.Local, model); - } - - /// - /// Removes all entities from that are not marked as 'updated'. - /// - /// List where objects can be searched. Usually, this collection is a navigation property of a . - /// Thrown when the is read-only. - public void RemoveUnModifiedEntries(ICollection parentNavigationProperty) - { - var untouchedList = parentNavigationProperty.Where(e => !modifiedList.Contains(e)); - dbContext.Set().RemoveRange(untouchedList); - - modifiedList.Clear(); - } - - /// - /// Perform actions that can only be executed after has been called. - /// - public void PerformPostSaveActions() - { - UpdateStorageIdsInModel(); - dikeAssessmentSectionEntityPersistor.PerformPostSaveActions(); - } - - private void UpdateModel(ICollection parentNavigationProperty, Project model) - { if (model == null) { throw new ArgumentNullException("model", @"Cannot update databaseSet when no project is set."); } ProjectEntity entity; try { - entity = parentNavigationProperty.SingleOrDefault(db => db.ProjectEntityId == model.StorageId); + entity = dbSet.SingleOrDefault(db => db.ProjectEntityId == model.StorageId); } catch (InvalidOperationException exception) { @@ -154,15 +125,35 @@ UpdateChildren(model, entity); } - private void InsertModel(ICollection parentNavigationProperty, Project project) + /// + /// Removes all entities from that are not marked as 'updated'. + /// + public void RemoveUnModifiedEntries() { + var untouchedList = dbSet.ToList().Where(e => !modifiedList.Contains(e)); + dbSet.RemoveRange(untouchedList); + + modifiedList.Clear(); + } + + /// + /// Perform actions that can only be executed after has been called. + /// + public void PerformPostSaveActions() + { + UpdateStorageIdsInModel(); + dikeAssessmentSectionEntityPersistor.PerformPostSaveActions(); + } + + private void InsertModel(DbSet parentNavigationProperty, Project project) + { if (project == null) { throw new ArgumentNullException("project", @"Cannot update databaseSet when no project is set."); } var entity = new ProjectEntity(); - parentNavigationProperty.Add(entity); + dbSet.Add(entity); insertedList.Add(entity, project); converter.ConvertModelToEntity(project, entity); Index: Application/Ringtoets/src/Application.Ringtoets.Storage/StorageSqLite.cs =================================================================== diff -u -r8b53cc5e5753875d94f76359c6916ef6da38fe3c -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/src/Application.Ringtoets.Storage/StorageSqLite.cs (.../StorageSqLite.cs) (revision 8b53cc5e5753875d94f76359c6916ef6da38fe3c) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/StorageSqLite.cs (.../StorageSqLite.cs) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -130,10 +130,10 @@ var projectEntityPersistor = new ProjectEntityPersistor(dbContext); try { - ICollection projectEntities = dbContext.ProjectEntities.ToList(); + var projectEntities = dbContext.ProjectEntities; projectEntityPersistor.UpdateModel(project); - projectEntityPersistor.RemoveUnModifiedEntries(projectEntities); + projectEntityPersistor.RemoveUnModifiedEntries(); var changes = dbContext.SaveChanges(); projectEntityPersistor.PerformPostSaveActions(); return changes; @@ -208,10 +208,10 @@ try { - ICollection projectEntities = dbContext.ProjectEntities.ToList(); + var projectEntities = dbContext.ProjectEntities; projectEntityPersistor.UpdateModel(project); - projectEntityPersistor.RemoveUnModifiedEntries(projectEntities); + projectEntityPersistor.RemoveUnModifiedEntries(); return dbContext.ChangeTracker.HasChanges(); } catch (EntityNotFoundException) {} Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj =================================================================== diff -u -r1d52c0ffc913d7803070bd9797d811a991b5c365 -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj (.../Application.Ringtoets.Storage.Test.csproj) (revision 1d52c0ffc913d7803070bd9797d811a991b5c365) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj (.../Application.Ringtoets.Storage.Test.csproj) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -86,7 +86,6 @@ - Fisheye: Tag a6371ac68897b69e2efd537fa29bb6564f50fdcf refers to a dead (removed) revision in file `Application/Ringtoets/test/Application.Ringtoets.Storage.Test/DbContext/DbTestSet.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikeAssessmentSectionEntityPersistorTest.cs =================================================================== diff -u -r0b5ecd8a04803bce1ed8398053e9b7cb7404b886 -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikeAssessmentSectionEntityPersistorTest.cs (.../DikeAssessmentSectionEntityPersistorTest.cs) (revision 0b5ecd8a04803bce1ed8398053e9b7cb7404b886) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikeAssessmentSectionEntityPersistorTest.cs (.../DikeAssessmentSectionEntityPersistorTest.cs) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -22,7 +22,6 @@ 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; @@ -59,7 +58,7 @@ public void Constructor_EmptyDataset_NewInstance() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = mockRepository.Stub(); mockRepository.ReplayAll(); // Call @@ -75,7 +74,7 @@ public void LoadModel_NullEntity_ThrowsArgumentNullException() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = mockRepository.Stub(); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); mockRepository.ReplayAll(); @@ -113,7 +112,7 @@ const decimal otherHydraulicDatabaseLocationX = 3927; const decimal otherHydraulicDatabaseLocationY = 372; - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = mockRepository.Stub(); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); var entity = new DikeAssessmentSectionEntity { @@ -176,7 +175,7 @@ public void LoadModel_MultipleEntitiesInDataset_EntitiesAsModel() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = mockRepository.Stub(); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); ICollection parentNavigationProperty = new List { @@ -258,7 +257,7 @@ public void InsertModel_NulldikeAssessmentSection_ThrowsArgumentNullException() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = mockRepository.Stub(); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); var parentNavigationProperty = mockRepository.StrictMock>(); mockRepository.ReplayAll(); @@ -278,8 +277,11 @@ // Setup const string name = "test"; const int norm = 30000; - var ringtoetsEntities = mockRepository.StrictMock(); - DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + + mockRepository.ReplayAll(); + ICollection parentNavigationProperty = new List(); DikeAssessmentSection dikeAssessmentSection = new DikeAssessmentSection @@ -291,9 +293,9 @@ }, HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase() }; - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); - mockRepository.ReplayAll(); + DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); + // Call persistor.InsertModel(parentNavigationProperty, dikeAssessmentSection, 0); @@ -316,6 +318,10 @@ const long storageId = 1234L; const int norm = 30000; + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + + mockRepository.ReplayAll(); + DikeAssessmentSectionEntity entityToDelete = new DikeAssessmentSectionEntity { DikeAssessmentSectionEntityId = storageId, @@ -325,8 +331,6 @@ { entityToDelete }; - var ringtoetsEntities = mockRepository.StrictMock(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); @@ -339,7 +343,6 @@ Norm = norm } }; - mockRepository.ReplayAll(); // Call persistor.InsertModel(parentNavigationProperty, dikeAssessmentSection, 0); @@ -359,8 +362,10 @@ public void InsertModel_ValidDikeAssessmentSectionWithChildren_InsertedDikeAssessmentSectionWithChildren() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + + mockRepository.ReplayAll(); + DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); const string name = "test"; @@ -379,8 +384,6 @@ IList parentNavigationProperty = new List(); - mockRepository.ReplayAll(); - // Call persistor.InsertModel(parentNavigationProperty, dikeAssessmentSection, 0); @@ -423,7 +426,7 @@ public void UpdateModel_NulldikeAssessmentSection_ThrowsArgumentNullException() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = mockRepository.Stub(); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); var parentNavigationProperty = mockRepository.StrictMock>(); mockRepository.ReplayAll(); @@ -443,8 +446,10 @@ // Setup const string name = "test"; const int norm = 30000; - var ringtoetsEntities = mockRepository.StrictMock(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + + mockRepository.ReplayAll(); + DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); ICollection parentNavigationProperty = new List(); DikeAssessmentSection dikeAssessmentSection = @@ -458,7 +463,6 @@ HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase() } ; - mockRepository.ReplayAll(); // Call persistor.UpdateModel(parentNavigationProperty, dikeAssessmentSection, 0); @@ -481,7 +485,8 @@ const string name = "test"; const long storageId = 1234L; const int norm = 30000; - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); ICollection parentNavigationProperty = new List(); DikeAssessmentSection dikeAssessmentSection = @@ -494,7 +499,6 @@ Norm = norm } }; - mockRepository.ReplayAll(); // Call TestDelegate test = () => persistor.UpdateModel(parentNavigationProperty, dikeAssessmentSection, 0); @@ -510,7 +514,8 @@ { // Setup const long storageId = 1234L; - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); ICollection parentNavigationProperty = new List { @@ -524,7 +529,6 @@ { StorageId = storageId }; - mockRepository.ReplayAll(); // Call TestDelegate test = () => persistor.UpdateModel(parentNavigationProperty, dikeAssessmentSection, 0); @@ -540,7 +544,8 @@ { // Setup const long storageId = 1234L; - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); ICollection parentNavigationProperty = new List { @@ -558,7 +563,6 @@ { StorageId = storageId }; - mockRepository.ReplayAll(); // Call TestDelegate test = () => persistor.UpdateModel(parentNavigationProperty, dikeAssessmentSection, 0); @@ -578,8 +582,8 @@ const string name = "test"; const long storageId = 1234L; const int norm = 30000; - var ringtoetsEntities = mockRepository.StrictMock(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); ICollection parentNavigationProperty = new List { @@ -601,7 +605,6 @@ }, HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase() }; - mockRepository.ReplayAll(); // Call persistor.UpdateModel(parentNavigationProperty, dikeAssessmentSection, 0); @@ -624,6 +627,10 @@ const string name = "UpdatedName"; const long storageId = 1234L; const int norm = 30000; + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + DikeAssessmentSectionEntity entityToDelete = new DikeAssessmentSectionEntity { DikeAssessmentSectionEntityId = 4567L, @@ -640,8 +647,6 @@ } }; - var ringtoetsEntities = mockRepository.StrictMock(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); DikeAssessmentSection dikeAssessmentSection = @@ -655,7 +660,6 @@ }, HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase() }; - mockRepository.ReplayAll(); // Call persistor.UpdateModel(parentNavigationProperty, dikeAssessmentSection, 0); @@ -679,8 +683,9 @@ const long hydraulicLocationEntityId = 5678L; - var ringtoetsEntities = mockRepository.StrictMock(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); DikeAssessmentSection dikeAssessmentSection = new DikeAssessmentSection { @@ -706,7 +711,6 @@ } } }; - mockRepository.ReplayAll(); // Call persistor.UpdateModel(parentNavigationProperty, dikeAssessmentSection, 0); @@ -733,23 +737,21 @@ const string name = "test"; const long storageId = 0L; // Newly inserted entities have Id = 0 untill they are saved const int norm = 30000; - DikeAssessmentSectionEntity entityToDelete = new DikeAssessmentSectionEntity + DikeAssessmentSectionEntity entityToUpdate = new DikeAssessmentSectionEntity { DikeAssessmentSectionEntityId = 4567L, - Name = "Entity to delete" + Name = "Entity to update" }; ObservableCollection parentNavigationProperty = new ObservableCollection { - entityToDelete + entityToUpdate }; - var ringtoetsEntities = mockRepository.StrictMock(); - var set = mockRepository.StrictMock>(); - ringtoetsEntities.Expect(c => c.Set()).Return(set); - set.Expect(s => s.RemoveRange(Arg>.List.Equal(new [] { entityToDelete }))); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); + ringtoetsEntities.DikeAssessmentSectionEntities.Add(entityToUpdate); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); DikeAssessmentSection dikeAssessmentSection = @@ -762,10 +764,10 @@ }, HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase() }; - mockRepository.ReplayAll(); - // Call persistor.UpdateModel(parentNavigationProperty, dikeAssessmentSection, 0); + + // Call persistor.RemoveUnModifiedEntries(parentNavigationProperty); // Assert @@ -802,14 +804,11 @@ entityToDelete, entityToUpdate }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, parentNavigationProperty); - var ringtoetsEntities = mockRepository.StrictMock(); - var set = mockRepository.StrictMock>(); - ringtoetsEntities.Expect(c => c.Set()).Return(set); - set.Expect(s => s.RemoveRange(Arg>.List.Equal(new[] { entityToDelete }))); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); + ringtoetsEntities.DikeAssessmentSectionEntities.Add(entityToUpdate); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); DikeAssessmentSection dikeAssessmentSection = new DikeAssessmentSection @@ -860,12 +859,9 @@ secondEntityToDelete }; - var ringtoetsEntities = mockRepository.StrictMock(); - var set = mockRepository.StrictMock>(); - ringtoetsEntities.Expect(c => c.Set()).Return(set); - set.Expect(s => s.RemoveRange(Arg>.List.Equal(parentNavigationProperty.ToList()))); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); DikeAssessmentSection dikeAssessmentSection = new DikeAssessmentSection @@ -888,10 +884,11 @@ public void PerformPostSaveActions_NoInserts_DoesNotThrowException() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); - DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); mockRepository.ReplayAll(); + DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); + // Call TestDelegate test = () => persistor.PerformPostSaveActions(); @@ -908,38 +905,29 @@ public void PerformPostSaveActions_MultipleModelsInsertedWithoutStorageId_ModelsWithStorageId(int numberOfInserts) { // Setup + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + var insertedDikeAssessmentSectionEntities = new List(); - var parentNavigationPropertyMock = mockRepository.StrictMock>(); - parentNavigationPropertyMock.Expect(m => m.Add(null)).IgnoreArguments().WhenCalled(x => - { - var insertedDikeAssessmentSectionEntity = x.Arguments.GetValue(0); - Assert.IsInstanceOf(insertedDikeAssessmentSectionEntity); - insertedDikeAssessmentSectionEntities.Add((DikeAssessmentSectionEntity) insertedDikeAssessmentSectionEntity); - }).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() }); } - - mockRepository.ReplayAll(); - foreach (var dikeAssessmentSection in dikeAssessmentSections) { try { - persistor.UpdateModel(parentNavigationPropertyMock, dikeAssessmentSection, 0); + persistor.UpdateModel(insertedDikeAssessmentSectionEntities, dikeAssessmentSection, 0); } catch (Exception) { Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikesPipingFailureMechanismEntityPersistorTest.cs =================================================================== diff -u -r220a073b3d2066d57af048325e3ba37bb1340d0d -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikesPipingFailureMechanismEntityPersistorTest.cs (.../DikesPipingFailureMechanismEntityPersistorTest.cs) (revision 220a073b3d2066d57af048325e3ba37bb1340d0d) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikesPipingFailureMechanismEntityPersistorTest.cs (.../DikesPipingFailureMechanismEntityPersistorTest.cs) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -26,7 +26,7 @@ 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 NUnit.Framework; using Rhino.Mocks; using Ringtoets.Integration.Data; @@ -57,7 +57,7 @@ public void Constructor_EmptyDataset_NewInstance() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); mockRepository.ReplayAll(); // Call @@ -153,10 +153,11 @@ public void InsertModel_NullDataset_ThrowsArgumentNullException() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); PipingFailureMechanism model = new PipingFailureMechanism(); - mockRepository.ReplayAll(); // Call TestDelegate test = () => persistor.InsertModel(null, model); @@ -171,10 +172,11 @@ public void InsertModel_EmptyDatasetNullModel_ThrowsArgumentNullException() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); IList parentNavigationProperty = new List(); - mockRepository.ReplayAll(); // Call TestDelegate test = () => persistor.InsertModel(parentNavigationProperty, null); @@ -189,13 +191,13 @@ public void InsertModel_EmptyDatasetValidModel_ValidEntityInDataModel() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); IList parentNavigationProperty = new List(); PipingFailureMechanism model = new PipingFailureMechanism(); - mockRepository.ReplayAll(); - // Call persistor.InsertModel(parentNavigationProperty, model); @@ -213,6 +215,9 @@ { // Setup const long storageId = 1234L; + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + FailureMechanismEntity entityToDelete = new FailureMechanismEntity { FailureMechanismEntityId = storageId, @@ -222,13 +227,11 @@ { entityToDelete }; - var ringtoetsEntities = mockRepository.StrictMock(); DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); PipingFailureMechanism pipingFailureMechanism = new PipingFailureMechanism { StorageId = storageId }; - mockRepository.ReplayAll(); // Call persistor.InsertModel(parentNavigationProperty, pipingFailureMechanism); @@ -247,13 +250,14 @@ { // Setup const long storageId = 1234L; - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); PipingFailureMechanism model = new PipingFailureMechanism { StorageId = storageId }; - mockRepository.ReplayAll(); // Call TestDelegate test = () => persistor.UpdateModel(null, model); @@ -268,10 +272,11 @@ public void UpdateModel_EmptyDataSetNullModel_ThrowsArgumentNullException() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); IList parentNavigationProperty = new List(); - mockRepository.ReplayAll(); // Call TestDelegate test = () => persistor.UpdateModel(parentNavigationProperty, null); @@ -287,14 +292,15 @@ { // Setup const long storageId = 1234L; - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); IList parentNavigationProperty = new List(); PipingFailureMechanism model = new PipingFailureMechanism { StorageId = storageId }; - mockRepository.ReplayAll(); // Call TestDelegate test = () => persistor.UpdateModel(parentNavigationProperty, model); @@ -310,7 +316,9 @@ { // Setup const long storageId = 1234L; - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); IList parentNavigationProperty = new List { @@ -329,7 +337,6 @@ { StorageId = storageId }; - mockRepository.ReplayAll(); // Call TestDelegate test = () => persistor.UpdateModel(parentNavigationProperty, model); @@ -345,7 +352,9 @@ { // Setup const long storageId = 1234L; - var ringtoetsEntities = mockRepository.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); ICollection parentNavigationProperty = new List { @@ -359,7 +368,6 @@ { StorageId = storageId }; - mockRepository.ReplayAll(); // Call persistor.UpdateModel(parentNavigationProperty, model); @@ -377,7 +385,9 @@ public void UpdateModel_NoStorageIdSet_InsertNewEntity() { var mocks = new MockRepository(); - var ringtoetsEntities = mocks.StrictMock(); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + var persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); IList parentNavigationProperty = new List(); @@ -386,8 +396,6 @@ StorageId = 0 }; - mocks.ReplayAll(); - // Call persistor.UpdateModel(parentNavigationProperty, model); @@ -402,6 +410,9 @@ { // Setup const long storageId = 0L; // Newly inserted entities have Id = 0 untill they are saved + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + FailureMechanismEntity entityToDelete = new FailureMechanismEntity { FailureMechanismEntityId = 4567L, @@ -412,15 +423,9 @@ { entityToDelete }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, parentNavigationProperty); - dbset.Expect(x => x.Remove(entityToDelete)).Return(entityToDelete); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.FailureMechanismEntities).Return(dbset); - DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); PipingFailureMechanism pipingFailureMechanism = new PipingFailureMechanism(); - mockRepository.ReplayAll(); // Call persistor.UpdateModel(parentNavigationProperty, pipingFailureMechanism); @@ -440,6 +445,10 @@ { // Setup const long storageId = 1234L; + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + FailureMechanismEntity entityToUpdate = new FailureMechanismEntity { FailureMechanismEntityId = storageId, @@ -456,18 +465,12 @@ entityToDelete, entityToUpdate }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, parentNavigationProperty); - dbset.Expect(x => x.Remove(entityToDelete)).Return(entityToDelete); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.FailureMechanismEntities).Return(dbset); - DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); PipingFailureMechanism pipingFailureMechanism = new PipingFailureMechanism { StorageId = storageId }; - mockRepository.ReplayAll(); TestDelegate updateTest = () => persistor.UpdateModel(parentNavigationProperty, pipingFailureMechanism); Assert.DoesNotThrow(updateTest, "Precondition failed: Update should not throw exception."); @@ -503,16 +506,15 @@ secondEntityToDelete }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, parentNavigationProperty); - dbset.Expect(x => x.Remove(firstEntityToDelete)).Return(firstEntityToDelete); - dbset.Expect(x => x.Remove(secondEntityToDelete)).Return(secondEntityToDelete); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.FailureMechanismEntities).Return(dbset).Repeat.Twice(); + var dbset = DbTestSet.GetDbTestSet(parentNavigationProperty); + ringtoetsEntities.Expect(d => d.FailureMechanismEntities).Return(dbset); + + mockRepository.ReplayAll(); + DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); PipingFailureMechanism pipingFailureMechanism = new PipingFailureMechanism(); - mockRepository.ReplayAll(); TestDelegate test = () => persistor.UpdateModel(parentNavigationProperty, pipingFailureMechanism); Assert.DoesNotThrow(test, "Precondition failed: UpdateModel"); @@ -528,10 +530,11 @@ public void PerformPostSaveActions_NoInserts_DoesNotThrowException() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); - DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); mockRepository.ReplayAll(); + DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); + // Call TestDelegate test = () => persistor.PerformPostSaveActions(); @@ -548,14 +551,10 @@ public void PerformPostSaveActions_MultipleModelsInsertedWithoutStorageId_ModelsWithStorageId(int numberOfInserts) { // Setup + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + var insertedFailureMechanismEntities = new List(); - var parentNavigationPropertyMock = mockRepository.StrictMock>(); - parentNavigationPropertyMock.Expect(m => m.Add(null)).IgnoreArguments().WhenCalled(x => - { - var insertedDikeAssessmentSectionEntity = x.Arguments.GetValue(0); - Assert.IsInstanceOf(insertedDikeAssessmentSectionEntity); - insertedFailureMechanismEntities.Add((FailureMechanismEntity) insertedDikeAssessmentSectionEntity); - }).Repeat.Times(numberOfInserts); IList pipingFailureMechanisms = new List(); for (var i = 0; i < numberOfInserts; i++) @@ -566,15 +565,14 @@ }); } - var ringtoetsEntities = mockRepository.StrictMock(); DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); mockRepository.ReplayAll(); foreach (var pipingFailureMechanism in pipingFailureMechanisms) { try { - persistor.UpdateModel(parentNavigationPropertyMock, pipingFailureMechanism); + persistor.UpdateModel(insertedFailureMechanismEntities, pipingFailureMechanism); } catch (Exception) { Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/ProjectEntityPersistorTest.cs =================================================================== diff -u -r0b5ecd8a04803bce1ed8398053e9b7cb7404b886 -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/ProjectEntityPersistorTest.cs (.../ProjectEntityPersistorTest.cs) (revision 0b5ecd8a04803bce1ed8398053e9b7cb7404b886) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/ProjectEntityPersistorTest.cs (.../ProjectEntityPersistorTest.cs) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -6,7 +6,6 @@ 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; @@ -38,9 +37,7 @@ public void Constructor_EmptyDataset_NewInstance() { // Setup - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection()); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); mockRepository.ReplayAll(); // Call @@ -54,11 +51,9 @@ public void GetEntityAsModel_EmptyDataset_DoesNotThrowException() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); - - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection()); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); mockRepository.ReplayAll(); + ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call @@ -76,17 +71,15 @@ // Setup const long storageId = 1234L; const string description = "description"; - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection - { + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + + ringtoetsEntities.ProjectEntities.Add( new ProjectEntity { ProjectEntityId = storageId, Description = description - } - }); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - mockRepository.ReplayAll(); + }); ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call @@ -107,17 +100,17 @@ const long storageId = 1234L; const string description = "description"; string defaultProjectName = new Project().Name; - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + + ringtoetsEntities.ProjectEntities.Add( + new ProjectEntity { - new ProjectEntity - { - ProjectEntityId = storageId, - Description = description - } + ProjectEntityId = storageId, + Description = description }); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - mockRepository.ReplayAll(); + ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call @@ -136,20 +129,19 @@ public void GetEntityAsModel_MultipleEntitiesInDataSet_ThrowsInvalidOperationException() { // Setup - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection - { + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + + ringtoetsEntities.ProjectEntities.Add( new ProjectEntity { ProjectEntityId = 1 - }, + }); + ringtoetsEntities.ProjectEntities.Add( new ProjectEntity { ProjectEntityId = 2 - } - }); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - mockRepository.ReplayAll(); + }); ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call @@ -167,8 +159,11 @@ // Setup const long storageId = 1234L; const string description = "description"; - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection - { + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + + ringtoetsEntities.ProjectEntities.Add( new ProjectEntity { ProjectEntityId = storageId, @@ -181,11 +176,8 @@ Order = 0 } } - } - }); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - mockRepository.ReplayAll(); + }); + ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call @@ -205,21 +197,17 @@ public void InsertModel_NullData_ThrowsArgumentNullException() { // Setup - var dbSetMethodAddWasHit = 0; - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection()); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - dbset.Stub(m => m.Add(new ProjectEntity())).IgnoreArguments().Return(new ProjectEntity()) - .WhenCalled(invocation => dbSetMethodAddWasHit++); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); mockRepository.ReplayAll(); + ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call TestDelegate test = () => persistor.InsertModel(null); // Assert Assert.Throws(test); - Assert.AreEqual(0, dbSetMethodAddWasHit); + Assert.AreEqual(0, ringtoetsEntities.ProjectEntities.Count()); mockRepository.VerifyAll(); } @@ -230,26 +218,23 @@ // Setup const long storageId = 1234L; const string description = "description"; + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + Project project = new Project { StorageId = storageId, Description = description }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection()); - - var ringtoetsEntities = mockRepository.StrictMock(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - - mockRepository.ReplayAll(); ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call persistor.InsertModel(project); // Assert - var projectEntity = dbset.Local.First(); + var projectEntity = ringtoetsEntities.ProjectEntities.First(); Assert.AreNotEqual(project, projectEntity); Assert.AreEqual(storageId, projectEntity.ProjectEntityId); Assert.AreEqual(description, projectEntity.Description); @@ -263,6 +248,10 @@ // Setup const long storageId = 1234L; const string description = "description"; + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + Project project = new Project { StorageId = storageId, @@ -273,21 +262,13 @@ } }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection()); - - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); - - mockRepository.ReplayAll(); ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call persistor.InsertModel(project); // Assert - var projectEntity = dbset.Local.First(); + var projectEntity = ringtoetsEntities.ProjectEntities.First(); Assert.AreNotEqual(project, projectEntity); Assert.AreEqual(storageId, projectEntity.ProjectEntityId); Assert.AreEqual(description, projectEntity.Description); @@ -300,10 +281,9 @@ public void UpdateModel_NullData_ThrowsArgumentNullException() { // Setup - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection()); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); mockRepository.ReplayAll(); + ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call @@ -320,27 +300,26 @@ { // Setup const long storageId = 1234L; - var expectedMessage = String.Format("Het object 'ProjectEntity' met id '{0}' is niet gevonden.", storageId); + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + Project project = new Project { StorageId = storageId }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection - { + ringtoetsEntities.ProjectEntities.Add( new ProjectEntity { ProjectEntityId = 2 - } - }); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - mockRepository.ReplayAll(); + }); ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call TestDelegate test = () => persistor.UpdateModel(project); // Assert + var expectedMessage = String.Format("Het object 'ProjectEntity' met id '{0}' is niet gevonden.", storageId); EntityNotFoundException exception = Assert.Throws(test); Assert.AreEqual(expectedMessage, exception.Message); @@ -352,35 +331,34 @@ { // Setup const long storageId = 1234L; - var expectedMessage = String.Format("Het object 'ProjectEntity' met id '{0}' is niet gevonden.", storageId); - var expectedInnerMessage = "Sequence contains more than one matching element"; + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + Project project = new Project { StorageId = storageId }; - var projectEntities = new ObservableCollection - { + ringtoetsEntities.ProjectEntities.Add( new ProjectEntity { ProjectEntityId = storageId - }, + }); + ringtoetsEntities.ProjectEntities.Add( new ProjectEntity { ProjectEntityId = storageId - } - }; + }); - var dbset = DbTestSet.GetDbTestSet(mockRepository, projectEntities); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - - mockRepository.ReplayAll(); ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call TestDelegate test = () => persistor.UpdateModel(project); // Assert + var expectedMessage = String.Format("Het object 'ProjectEntity' met id '{0}' is niet gevonden.", storageId); + var expectedInnerMessage = "Sequence contains more than one matching element"; + EntityNotFoundException exception = Assert.Throws(test); Assert.AreEqual(expectedMessage, exception.Message); @@ -396,6 +374,10 @@ const long storageId = 1234L; const string description = ""; + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + + Project project = new Project { StorageId = storageId, @@ -406,15 +388,8 @@ ProjectEntityId = storageId }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection - { - entity - }); - var ringtoetsEntities = mockRepository.StrictMock(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); + ringtoetsEntities.ProjectEntities.Add(entity); - mockRepository.ReplayAll(); ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call @@ -434,6 +409,10 @@ // Setup const long storageId = 1234L; const string description = "description"; + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + ProjectEntity projectEntity = new ProjectEntity { ProjectEntityId = storageId @@ -448,16 +427,8 @@ } }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection - { - projectEntity - }); - var ringtoetsEntities = mockRepository.StrictMock(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); - - mockRepository.ReplayAll(); + ringtoetsEntities.ProjectEntities.Add(projectEntity); + ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call @@ -476,10 +447,9 @@ public void PerformPostSaveActions_NoInserts_DoesNotThrowException() { // Setup - var ringtoetsEntities = mockRepository.StrictMock(); - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection()); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); mockRepository.ReplayAll(); + ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); // Call @@ -497,24 +467,20 @@ // Setup const long storageId = 1234L; + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + Project project = new Project { StorageId = 0L }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, new ObservableCollection()); - - var ringtoetsEntities = mockRepository.StrictMock(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - - mockRepository.ReplayAll(); ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); TestDelegate insertTest = () => persistor.InsertModel(project); Assert.DoesNotThrow(insertTest, "Precondition failed: InsertModel failed"); - var insertedProjectEntity = dbset.Local.First(); + var insertedProjectEntity = ringtoetsEntities.ProjectEntities.First(); insertedProjectEntity.ProjectEntityId = storageId; Assert.AreEqual(0L, project.StorageId, "Precondition failed: Id should not have been set already"); @@ -534,53 +500,43 @@ // Setup const string description = "test"; const long storageId = 1L; + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + ProjectEntity entityToDelete = new ProjectEntity { ProjectEntityId = 4567L, Description = "Entity to delete" }; - ObservableCollection parentNavigationProperty = new ObservableCollection + var entityToUpdate = new ProjectEntity { - entityToDelete, - new ProjectEntity - { - ProjectEntityId = storageId, - Description = "Entity to update" - } + ProjectEntityId = storageId, + Description = "Entity to update" }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, parentNavigationProperty); - var ringtoetsEntities = mockRepository.StrictMock(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); - var set = mockRepository.StrictMock>(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - ringtoetsEntities.Expect(c => c.Set()).Return(set); - set.Expect(s => s.RemoveRange(Arg>.List.Equal(new[] - { - entityToDelete - }))); + ringtoetsEntities.ProjectEntities.Add(entityToDelete); + ringtoetsEntities.ProjectEntities.Add(entityToUpdate); Project project = new Project { StorageId = storageId, Description = description }; + mockRepository.ReplayAll(); ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); TestDelegate test = () => persistor.UpdateModel(project); Assert.DoesNotThrow(test, "Precondition failed: UpdateModel"); // Call - persistor.RemoveUnModifiedEntries(parentNavigationProperty); + persistor.RemoveUnModifiedEntries(); // Assert - Assert.AreEqual(2, parentNavigationProperty.Count); - var entity = parentNavigationProperty.SingleOrDefault(x => x.ProjectEntityId == storageId); - Assert.NotNull(entity); - Assert.AreEqual(storageId, entity.ProjectEntityId); - Assert.AreEqual(description, entity.Description); + Assert.AreEqual(1, ringtoetsEntities.ProjectEntities.Count()); + CollectionAssert.AreEqual(new[] { entityToUpdate }, ringtoetsEntities.ProjectEntities); mockRepository.VerifyAll(); } @@ -590,6 +546,10 @@ { // Setup const long storageId = 1L; + + var ringtoetsEntities = RingtoetsEntitiesHelper.Create(mockRepository); + mockRepository.ReplayAll(); + ProjectEntity firstEntityToDelete = new ProjectEntity { ProjectEntityId = 1234L, @@ -600,45 +560,31 @@ ProjectEntityId = 4567L, Description = "Second entity to delete" }; - ObservableCollection parentNavigationProperty = new ObservableCollection + ProjectEntity entityToUpdate = new ProjectEntity { - firstEntityToDelete, - secondEntityToDelete, - new ProjectEntity - { - ProjectEntityId = storageId, - Description = "Entity to update" - } + ProjectEntityId = storageId, + Description = "Entity to update" }; - var dbset = DbTestSet.GetDbTestSet(mockRepository, parentNavigationProperty); + ringtoetsEntities.ProjectEntities.Add(firstEntityToDelete); + ringtoetsEntities.ProjectEntities.Add(secondEntityToDelete); + ringtoetsEntities.ProjectEntities.Add(entityToUpdate); - var ringtoetsEntities = mockRepository.StrictMock(); - DatabaseSetHelper.AddSetExpectancy(mockRepository, ringtoetsEntities); - - var set = mockRepository.StrictMock>(); - ringtoetsEntities.Expect(x => x.ProjectEntities).Return(dbset); - ringtoetsEntities.Expect(c => c.Set()).Return(set); - set.Expect(s => s.RemoveRange(Arg>.List.Equal(new [] - { - firstEntityToDelete, - secondEntityToDelete - }))); - Project project = new Project { StorageId = storageId }; - mockRepository.ReplayAll(); + ProjectEntityPersistor persistor = new ProjectEntityPersistor(ringtoetsEntities); TestDelegate test = () => persistor.UpdateModel(project); Assert.DoesNotThrow(test, "Precondition failed: UpdateModel"); // Call - persistor.RemoveUnModifiedEntries(parentNavigationProperty); + persistor.RemoveUnModifiedEntries(); // Assert + CollectionAssert.AreEqual(new[] { entityToUpdate }, ringtoetsEntities.ProjectEntities); mockRepository.VerifyAll(); } } Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/Application.Ringtoets.Storage.TestUtil.csproj =================================================================== diff -u -raf7f86aaffd428449ce96539f14baa47297eb6d3 -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/Application.Ringtoets.Storage.TestUtil.csproj (.../Application.Ringtoets.Storage.TestUtil.csproj) (revision af7f86aaffd428449ce96539f14baa47297eb6d3) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/Application.Ringtoets.Storage.TestUtil.csproj (.../Application.Ringtoets.Storage.TestUtil.csproj) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -62,6 +62,8 @@ + + Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/DatabaseSetHelper.cs =================================================================== diff -u -r5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4 -ra6371ac68897b69e2efd537fa29bb6564f50fdcf --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/DatabaseSetHelper.cs (.../DatabaseSetHelper.cs) (revision 5cf16fafbdbf705136502c8dc23bb4fd6c31b0e4) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/DatabaseSetHelper.cs (.../DatabaseSetHelper.cs) (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -9,7 +9,7 @@ public static void AddSetExpectancy(MockRepository mocks, IRingtoetsEntities entities) where T : class { var set = mocks.Stub>(); - entities.Expect(c => c.Set()).Return(set); + entities.Stub(c => c.Set()).Return(set); } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/DbTestSet.cs =================================================================== diff -u --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/DbTestSet.cs (revision 0) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/DbTestSet.cs (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -0,0 +1,93 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Data.Entity; +using System.Linq; +using System.Linq.Expressions; + +namespace Application.Ringtoets.Storage.TestUtil +{ + public static class DbTestSet + { + public static DbSet GetDbTestSet(ObservableCollection data) where T : class + { + return new TestDbSet(data); + } + + } + public class TestDbSet : DbSet, IDbSet where T: class + { + private readonly IQueryable queryable; + private readonly ObservableCollection collection; + + public TestDbSet(ObservableCollection queryable) + { + collection = queryable; + this.queryable = queryable.AsQueryable(); + } + + public IQueryProvider Provider + { + get + { + return queryable.Provider; + } + } + + public Expression Expression + { + get + { + return queryable.Expression; + } + } + + public Type ElementType + { + get + { + return queryable.ElementType; + } + } + + public override ObservableCollection Local + { + get + { + return collection; + } + } + + public override T Add(T entity) + { + collection.Add(entity); + return entity; + } + + public override T Remove(T entity) + { + collection.Remove(entity); + return entity; + } + + public override IEnumerable RemoveRange(IEnumerable entities) + { + foreach(var e in entities) + { + collection.Remove(e); + } + return entities; + } + + IEnumerator IEnumerable.GetEnumerator() + { + return collection.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return collection.GetEnumerator(); + } + } +} \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsEntitiesHelper.cs =================================================================== diff -u --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsEntitiesHelper.cs (revision 0) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsEntitiesHelper.cs (revision a6371ac68897b69e2efd537fa29bb6564f50fdcf) @@ -0,0 +1,23 @@ +using System.Collections.ObjectModel; +using Application.Ringtoets.Storage.DbContext; +using Rhino.Mocks; + +namespace Application.Ringtoets.Storage.TestUtil +{ + static public class RingtoetsEntitiesHelper { + public static IRingtoetsEntities Create(MockRepository mockRepository) + { + var ringtoetsEntities = mockRepository.Stub(); + var pSet = DbTestSet.GetDbTestSet(new ObservableCollection()); + var hlSet = DbTestSet.GetDbTestSet(new ObservableCollection()); + var fmSet = DbTestSet.GetDbTestSet(new ObservableCollection()); + var dasSet = DbTestSet.GetDbTestSet(new ObservableCollection()); + ringtoetsEntities.Stub(r => r.ProjectEntities).Return(pSet); + ringtoetsEntities.Stub(r => r.Set()).Return(hlSet); + ringtoetsEntities.Stub(r => r.FailureMechanismEntities).Return(fmSet); + ringtoetsEntities.Stub(r => r.Set()).Return(dasSet); + ringtoetsEntities.Stub(r => r.DikeAssessmentSectionEntities).Return(dasSet); + return ringtoetsEntities; + } + } +} \ No newline at end of file