Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/DikeAssessmentSectionEntityConverter.cs =================================================================== diff -u -r92a966a0a5ae5144b90b89be0cdf30c5eea25d7d -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/DikeAssessmentSectionEntityConverter.cs (.../DikeAssessmentSectionEntityConverter.cs) (revision 92a966a0a5ae5144b90b89be0cdf30c5eea25d7d) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/DikeAssessmentSectionEntityConverter.cs (.../DikeAssessmentSectionEntityConverter.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -36,24 +36,26 @@ /// Converts to . /// /// The to convert. + /// The to obtain the model. /// A new instance of , based on the properties of . - /// Thrown when is null. - public DikeAssessmentSection ConvertEntityToModel(DikeAssessmentSectionEntity entity) + /// Thrown when or is null. + public DikeAssessmentSection ConvertEntityToModel(DikeAssessmentSectionEntity entity, Func model) { if (entity == null) { throw new ArgumentNullException("entity"); } - var dikeAssessmentSection = new DikeAssessmentSection + + if (model() == null) { - StorageId = entity.DikeAssessmentSectionEntityId, - Name = entity.Name ?? string.Empty, - FailureMechanismContribution = - { - Norm = entity.Norm - } - }; + throw new ArgumentNullException("model"); + } + var dikeAssessmentSection = model(); + dikeAssessmentSection.StorageId = entity.DikeAssessmentSectionEntityId; + dikeAssessmentSection.Name = entity.Name ?? string.Empty; + dikeAssessmentSection.FailureMechanismContribution.Norm = entity.Norm; + if (entity.HydraulicDatabaseLocation != null && entity.HydraulicDatabaseVersion != null) { dikeAssessmentSection.HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/FailureMechanismEntityConverter.cs =================================================================== diff -u -r2e520a68a32290ef4d8c89a5520227c3084612db -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/FailureMechanismEntityConverter.cs (.../FailureMechanismEntityConverter.cs) (revision 2e520a68a32290ef4d8c89a5520227c3084612db) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/FailureMechanismEntityConverter.cs (.../FailureMechanismEntityConverter.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -26,16 +26,25 @@ namespace Application.Ringtoets.Storage.Converters { + /// + /// Converter for to + /// and to . + /// public class FailureMechanismEntityConverter : IEntityConverter where T : IFailureMechanism { - public T ConvertEntityToModel(FailureMechanismEntity entity) + public T ConvertEntityToModel(FailureMechanismEntity entity, Func model) { if (entity == null) { throw new ArgumentNullException("entity"); } - T failureMechanism = Activator.CreateInstance(); + if (model() == null) + { + throw new ArgumentNullException("model"); + } + + T failureMechanism = model(); failureMechanism.StorageId = entity.FailureMechanismEntityId; return failureMechanism; @@ -47,11 +56,21 @@ { throw new ArgumentNullException("modelObject"); } + + if (entity == null) + { + throw new ArgumentNullException("entity"); + } + entity.FailureMechanismEntityId = modelObject.StorageId; if (modelObject is PipingFailureMechanism) { - entity.FailureMechanismType = (int)FailureMechanismType.DikesPipingFailureMechanism; + entity.FailureMechanismType = (int) FailureMechanismType.DikesPipingFailureMechanism; } + else + { + throw new ArgumentException("Incorrect modelType", "entity"); + } } } } \ No newline at end of file Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/IEntityConverter.cs =================================================================== diff -u -r4512af7782ee31b36941bb280b54d9da2953dd71 -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/IEntityConverter.cs (.../IEntityConverter.cs) (revision 4512af7782ee31b36941bb280b54d9da2953dd71) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/IEntityConverter.cs (.../IEntityConverter.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using Core.Common.Base.Storage; namespace Application.Ringtoets.Storage.Converters @@ -32,8 +33,9 @@ /// Converts to . /// /// The to convert. + /// The to obtain the model. /// A new instance of , based on the properties of . - TModel ConvertEntityToModel(TEntity entity); + TModel ConvertEntityToModel(TEntity entity, Func model); /// /// Converts to . Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/ProjectEntityConverter.cs =================================================================== diff -u -r4512af7782ee31b36941bb280b54d9da2953dd71 -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/ProjectEntityConverter.cs (.../ProjectEntityConverter.cs) (revision 4512af7782ee31b36941bb280b54d9da2953dd71) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Converters/ProjectEntityConverter.cs (.../ProjectEntityConverter.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -35,20 +35,25 @@ /// Converts to . /// /// The to convert. + /// The to obtain the model. /// A new instance of , based on the properties of . - /// Thrown when is null. - public Project ConvertEntityToModel(ProjectEntity entity) + /// Thrown when or is null. + public Project ConvertEntityToModel(ProjectEntity entity, Func model) { if (entity == null) { throw new ArgumentNullException("entity"); } - var project = new Project + + if (model() == null) { - StorageId = entity.ProjectEntityId, - Description = entity.Description - }; + throw new ArgumentNullException("model"); + } + var project = model(); + project.StorageId = entity.ProjectEntityId; + project.Description = entity.Description; + return project; } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/DikeAssessmentSectionEntityPersistor.cs =================================================================== diff -u -r8d0030e18870473808b3606acef2803119ecfc98 -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/DikeAssessmentSectionEntityPersistor.cs (.../DikeAssessmentSectionEntityPersistor.cs) (revision 8d0030e18870473808b3606acef2803119ecfc98) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/DikeAssessmentSectionEntityPersistor.cs (.../DikeAssessmentSectionEntityPersistor.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -69,16 +69,15 @@ /// /// The to load. /// A new instance of , based on the properties of . - public DikeAssessmentSection LoadModel(DikeAssessmentSectionEntity entity) + public DikeAssessmentSection LoadModel(DikeAssessmentSectionEntity entity, Func model) { - var dikeAssessmentSection = converter.ConvertEntityToModel(entity); + var dikeAssessmentSection = converter.ConvertEntityToModel(entity, model); foreach (var failureMechanismEntity in entity.FailureMechanismEntities) { if (failureMechanismEntity.FailureMechanismType == (int) FailureMechanismType.DikesPipingFailureMechanism) { - var failureMechanismModel = dikePipingFailureMechanismEntityPersistor.LoadModel(failureMechanismEntity); - dikeAssessmentSection.PipingFailureMechanism.StorageId = failureMechanismModel.StorageId; + dikePipingFailureMechanismEntityPersistor.LoadModel(failureMechanismEntity, () => dikeAssessmentSection.PipingFailureMechanism); } } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/DikesPipingFailureMechanismEntityPersistor.cs =================================================================== diff -u -r8d0030e18870473808b3606acef2803119ecfc98 -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/DikesPipingFailureMechanismEntityPersistor.cs (.../DikesPipingFailureMechanismEntityPersistor.cs) (revision 8d0030e18870473808b3606acef2803119ecfc98) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/DikesPipingFailureMechanismEntityPersistor.cs (.../DikesPipingFailureMechanismEntityPersistor.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -21,6 +21,7 @@ using System; using Application.Ringtoets.Storage.DbContext; +using Ringtoets.Common.Data; using Ringtoets.Piping.Data; namespace Application.Ringtoets.Storage.Persistors @@ -41,22 +42,28 @@ /// Loads the as . /// /// to load from. + /// The to obtain the model. /// Thrown when: /// is null. /// /// Thrown when is not of type . - public override PipingFailureMechanism LoadModel(FailureMechanismEntity entity) + public override PipingFailureMechanism LoadModel(FailureMechanismEntity entity, Func model) { if (entity == null) { throw new ArgumentNullException("entity"); } + if (model() == null) + { + throw new ArgumentNullException("model"); + } + if (entity.FailureMechanismType != (int) FailureMechanismType.DikesPipingFailureMechanism) { throw new ArgumentException("Incorrect modelType", "entity"); } - return base.LoadModel(entity); + return base.LoadModel(entity, model); } } } \ No newline at end of file Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/FailureMechanismEntityPersistorBase.cs =================================================================== diff -u -r2e520a68a32290ef4d8c89a5520227c3084612db -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/FailureMechanismEntityPersistorBase.cs (.../FailureMechanismEntityPersistorBase.cs) (revision 2e520a68a32290ef4d8c89a5520227c3084612db) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/FailureMechanismEntityPersistorBase.cs (.../FailureMechanismEntityPersistorBase.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -136,9 +136,9 @@ } } - public virtual T LoadModel(FailureMechanismEntity entity) + public virtual T LoadModel(FailureMechanismEntity entity, Func model) { - return converter.ConvertEntityToModel(entity); + return converter.ConvertEntityToModel(entity, model); } public virtual void UpdateChildren(T model, FailureMechanismEntity entity) { } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/IPersistor.cs =================================================================== diff -u -rd180f991b1e2664695dc4e98118e3159256fe3cd -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/IPersistor.cs (.../IPersistor.cs) (revision d180f991b1e2664695dc4e98118e3159256fe3cd) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/IPersistor.cs (.../IPersistor.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Collections.Generic; using System.Data.Entity; using Application.Ringtoets.Storage.DbContext; @@ -64,8 +65,9 @@ /// Loads the as . /// /// The to load. + /// The to obtain the model. /// A new instance of , based on the properties of . - TModel LoadModel(TEntity entity); + TModel LoadModel(TEntity entity, Func model); /// /// Updates the children of , in reference to , in the storage. Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/ProjectEntityPersistor.cs =================================================================== diff -u -re6314b0eda3a1b258c4ce336ac1ddd3ada77970b -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/ProjectEntityPersistor.cs (.../ProjectEntityPersistor.cs) (revision e6314b0eda3a1b258c4ce336ac1ddd3ada77970b) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Persistors/ProjectEntityPersistor.cs (.../ProjectEntityPersistor.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -74,7 +74,7 @@ { var entry = dbSet.SingleOrDefault(); - return LoadModel(entry); + return LoadModel(entry, () => new Project()); } /// @@ -187,20 +187,20 @@ dikeAssessmentSectionEntityPersistor.PerformPostSaveActions(); } - public Project LoadModel(ProjectEntity entity) + public Project LoadModel(ProjectEntity entity, Func model) { if (entity == null) { return null; } - var project = converter.ConvertEntityToModel(entity); + var project = converter.ConvertEntityToModel(entity, model); var nrOfItems = entity.DikeAssessmentSectionEntities.Count; var assessmentSections = new object[nrOfItems]; foreach (var sectionEntity in entity.DikeAssessmentSectionEntities) { - assessmentSections[sectionEntity.Order] = dikeAssessmentSectionEntityPersistor.LoadModel(sectionEntity); + assessmentSections[sectionEntity.Order] = dikeAssessmentSectionEntityPersistor.LoadModel(sectionEntity, () => new DikeAssessmentSection()); } // Add to items sorted Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj =================================================================== diff -u -r2ae1c9433c3c28b32105b9778b682b5e512a0f00 -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj (.../Application.Ringtoets.Storage.Test.csproj) (revision 2ae1c9433c3c28b32105b9778b682b5e512a0f00) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj (.../Application.Ringtoets.Storage.Test.csproj) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -81,6 +81,7 @@ + Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Converters/DikeAssessmentSectionEntityConverterTest.cs =================================================================== diff -u -ra87d1792bac08f4ad2b1a5c8eedffe0d5650aca8 -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Converters/DikeAssessmentSectionEntityConverterTest.cs (.../DikeAssessmentSectionEntityConverterTest.cs) (revision a87d1792bac08f4ad2b1a5c8eedffe0d5650aca8) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Converters/DikeAssessmentSectionEntityConverterTest.cs (.../DikeAssessmentSectionEntityConverterTest.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -22,20 +22,45 @@ [Test] public void ConvertEntityToModel_NullEntity_ThrowsArgumentNullException() { - // SetUp + // Setup DikeAssessmentSectionEntityConverter converter = new DikeAssessmentSectionEntityConverter(); // Call - TestDelegate test = () => converter.ConvertEntityToModel(null); + TestDelegate test = () => converter.ConvertEntityToModel(null, () => new DikeAssessmentSection()); // Assert Assert.Throws(test); } [Test] + public void ConvertEntityToModel_ValidDikeAssessmentSectionEntityNullModel_ThrowsArgumentNullException() + { + // Setup + const long storageId = 1234L; + const long projectId = 1L; + const int norm = 30000; + const string name = "test"; + DikeAssessmentSectionEntity dikeAssessmentSectionEntity = new DikeAssessmentSectionEntity() + { + DikeAssessmentSectionEntityId = storageId, + Name = name, + ProjectEntityId = projectId, + Norm = norm + }; + + DikeAssessmentSectionEntityConverter converter = new DikeAssessmentSectionEntityConverter(); + + // Call + TestDelegate test = () => converter.ConvertEntityToModel(dikeAssessmentSectionEntity, () => null); + + // Assert + Assert.Throws(test); + } + + [Test] public void ConvertEntityToModel_ValidDikeAssessmentSectionEntity_ReturnsTheDikeAssessmentSectionEntityAsDikeAssessmentSection() { - // SetUp + // Setup const long storageId = 1234L; const long projectId = 1L; const int norm = 30000; @@ -50,7 +75,7 @@ DikeAssessmentSectionEntityConverter converter = new DikeAssessmentSectionEntityConverter(); // Call - DikeAssessmentSection assessmentSection = converter.ConvertEntityToModel(dikeAssessmentSectionEntity); + DikeAssessmentSection assessmentSection = converter.ConvertEntityToModel(dikeAssessmentSectionEntity, () => new DikeAssessmentSection()); // Assert Assert.AreNotEqual(dikeAssessmentSectionEntity, assessmentSection); @@ -62,7 +87,7 @@ [Test] public void ConvertModelToEntity_NullEntity_ThrowsArgumentNullException() { - // SetUp + // Setup DikeAssessmentSectionEntityConverter converter = new DikeAssessmentSectionEntityConverter(); DikeAssessmentSection dikeAssessmentSection = new DikeAssessmentSection(); @@ -76,7 +101,7 @@ [Test] public void ConvertModelToEntity_NullModel_ThrowsArgumentNullException() { - // SetUp + // Setup DikeAssessmentSectionEntityConverter converter = new DikeAssessmentSectionEntityConverter(); DikeAssessmentSectionEntity dikeAssessmentSectionEntity = new DikeAssessmentSectionEntity(); @@ -90,7 +115,7 @@ [Test] public void ConvertModelToEntity_ValidDikeAssessmentSection_UpdatesTheDikeAssessmentSectionAsDikeAssessmentSectionEntity() { - // SetUp + // Setup const long storageId = 1234L; const long projectId = 1L; const int norm = 30000; Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Converters/FailureMechanismEntityConverterTest.cs =================================================================== diff -u --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Converters/FailureMechanismEntityConverterTest.cs (revision 0) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Converters/FailureMechanismEntityConverterTest.cs (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -0,0 +1,168 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using Application.Ringtoets.Storage.Converters; +using Application.Ringtoets.Storage.DbContext; +using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data; +using Ringtoets.Common.Data.Contribution; +using Ringtoets.Piping.Data; + +namespace Application.Ringtoets.Storage.Test.Converters +{ + [TestFixture] + public class FailureMechanismEntityConverterTest + { + [Test] + public void DefaultConstructor_Always_NewFailureMechanismEntityConverter() + { + // Call + FailureMechanismEntityConverter converter = new FailureMechanismEntityConverter(); + + // Assert + Assert.IsInstanceOf>(converter); + } + + [Test] + public void ConvertEntityToModel_NullEntity_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var failureMechanism = mocks.Stub(); + FailureMechanismEntityConverter converter = new FailureMechanismEntityConverter(); + mocks.ReplayAll(); + + // Call + TestDelegate test = () => converter.ConvertEntityToModel(null, () => failureMechanism); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("entity", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void ConvertEntityToModel_ValidEntityNullModel_ThrowsArgumentNullException() + { + // Setup + var entity = new FailureMechanismEntity(); + FailureMechanismEntityConverter converter = new FailureMechanismEntityConverter(); + + // Call + TestDelegate test = () => converter.ConvertEntityToModel(entity, () => null); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("model", exception.ParamName); + } + + [Test] + public void ConvertEntityToModel_ValidEntityValidModel_ReturnsEntityAsModel() + { + // Setup + FailureMechanismEntityConverter converter = new FailureMechanismEntityConverter(); + + const long storageId = 1234L; + FailureMechanismEntity entity = new FailureMechanismEntity + { + FailureMechanismEntityId = storageId, + FailureMechanismType = (int)FailureMechanismType.DikesPipingFailureMechanism, + }; + + PipingFailureMechanism failureMechanism = new PipingFailureMechanism(); + + // Call + converter.ConvertEntityToModel(entity, () => failureMechanism); + + // Assert + Assert.AreEqual(entity.FailureMechanismEntityId, failureMechanism.StorageId); + } + + [Test] + public void ConvertModelToEntity_NullModel_ThrowsArgumentNullException() + { + // Setup + FailureMechanismEntityConverter converter = new FailureMechanismEntityConverter(); + + // Call + TestDelegate test = () => converter.ConvertModelToEntity(null, new FailureMechanismEntity()); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("modelObject", exception.ParamName); + } + + [Test] + public void ConvertModelToEntity_NullEntity_ThrowsArgumentNullException() + { + // Setup + FailureMechanismEntityConverter converter = new FailureMechanismEntityConverter(); + + // Call + TestDelegate test = () => converter.ConvertModelToEntity(new PipingFailureMechanism(), null); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("entity", exception.ParamName); + } + + [Test] + public void ConvertModelToEntity_NotDikesPipingFailureMechanismType_ThrowsArgumentException() + { + // Setup + FailureMechanismEntityConverter converter = new FailureMechanismEntityConverter(); + + var entity = new FailureMechanismEntity() + { + FailureMechanismType = (int) FailureMechanismType.DikesAsphaltRevetmentFailureMechanism + }; + + // Call + TestDelegate test = () => converter.ConvertModelToEntity(new OtherFailureMechanism(), entity); + + // Assert + Assert.Throws(test); + } + + [Test] + public void ConvertModelToEntity_ValidModelValidEntity_ReturnsModelAsEntity() + { + // Setup + FailureMechanismEntityConverter converter = new FailureMechanismEntityConverter(); + + const long storageId = 1234L; + var entity = new FailureMechanismEntity(); + + var model = new PipingFailureMechanism + { + StorageId = storageId + }; + + // Call + converter.ConvertModelToEntity(model, entity); + + // Assert + Assert.AreEqual(model.StorageId, entity.FailureMechanismEntityId); + } + } +} Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Converters/ProjectEntityConverterTest.cs =================================================================== diff -u -r4adf3910b91fba2fe6e7f7766836082046ab769a -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Converters/ProjectEntityConverterTest.cs (.../ProjectEntityConverterTest.cs) (revision 4adf3910b91fba2fe6e7f7766836082046ab769a) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Converters/ProjectEntityConverterTest.cs (.../ProjectEntityConverterTest.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -26,13 +26,34 @@ ProjectEntityConverter converter = new ProjectEntityConverter(); // Call - TestDelegate test = () => converter.ConvertEntityToModel(null); + TestDelegate test = () => converter.ConvertEntityToModel(null, () => new Project()); // Assert Assert.Throws(test); } [Test] + public void ConvertEntityToModel_ValidProjectEntityNullModel_ThrowsArgumentNullException() + { + // SetUp + const long storageId = 1234L; + const string description = "Description"; + ProjectEntity projectEntity = new ProjectEntity() + { + ProjectEntityId = storageId, + Description = description + }; + + ProjectEntityConverter converter = new ProjectEntityConverter(); + + // Call + TestDelegate test = () => converter.ConvertEntityToModel(projectEntity, () => null); + + // Assert + Assert.Throws(test); + } + + [Test] public void ConvertEntityToModel_ValidProjectEntity_ReturnsTheProjectEntityAsProject() { // SetUp @@ -46,7 +67,7 @@ ProjectEntityConverter converter = new ProjectEntityConverter(); // Call - Project project = converter.ConvertEntityToModel(projectEntity); + Project project = converter.ConvertEntityToModel(projectEntity, () => new Project()); // Assert Assert.AreNotEqual(projectEntity, project); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikeAssessmentSectionEntityPersistorTest.cs =================================================================== diff -u -re6314b0eda3a1b258c4ce336ac1ddd3ada77970b -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikeAssessmentSectionEntityPersistorTest.cs (.../DikeAssessmentSectionEntityPersistorTest.cs) (revision e6314b0eda3a1b258c4ce336ac1ddd3ada77970b) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikeAssessmentSectionEntityPersistorTest.cs (.../DikeAssessmentSectionEntityPersistorTest.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -56,7 +56,7 @@ mockRepository.ReplayAll(); // Call - TestDelegate test = () => persistor.LoadModel(null); + TestDelegate test = () => persistor.LoadModel(null, () => new DikeAssessmentSection()); // Assert Assert.Throws(test); @@ -65,6 +65,40 @@ } [Test] + public void LoadModel_ValidEntityNullModel_ThrowsArgumentNullException() + { + // Setup + const long storageId = 1234L; + const string name = "test"; + const int norm = 30000; + const long pipingFailureMechanismStorageId = 1L; + var ringtoetsEntities = mockRepository.StrictMock(); + DikeAssessmentSectionEntityPersistor persistor = new DikeAssessmentSectionEntityPersistor(ringtoetsEntities); + var entity = new DikeAssessmentSectionEntity + { + DikeAssessmentSectionEntityId = storageId, + Name = name, + Norm = norm, + FailureMechanismEntities = new List + { + new FailureMechanismEntity + { + FailureMechanismType = (int) FailureMechanismType.DikesPipingFailureMechanism, FailureMechanismEntityId = pipingFailureMechanismStorageId + } + } + }; + mockRepository.ReplayAll(); + + // Call + TestDelegate test = () => persistor.LoadModel(entity, () => null); + + // Assert + Assert.Throws(test); + + mockRepository.VerifyAll(); + } + + [Test] public void LoadModel_ValidEntity_EntityAsModel() { // Setup @@ -87,7 +121,7 @@ mockRepository.ReplayAll(); // Call - DikeAssessmentSection section = persistor.LoadModel(entity); + DikeAssessmentSection section = persistor.LoadModel(entity, () => new DikeAssessmentSection()); // Assert Assert.AreEqual(storageId, section.StorageId); @@ -118,7 +152,7 @@ mockRepository.ReplayAll(); // Call - var loadedModels = parentNavigationProperty.Select(entity => persistor.LoadModel(entity)); + var loadedModels = parentNavigationProperty.Select(entity => persistor.LoadModel(entity, () => new DikeAssessmentSection())); // Assert var parentNavigationPropertyList = parentNavigationProperty.ToList(); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikesPipingFailureMechanismEntityPersistorTest.cs =================================================================== diff -u -r2e520a68a32290ef4d8c89a5520227c3084612db -rbd8a3e95f0145815fa6724a162404a76c9dc9f5a --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikesPipingFailureMechanismEntityPersistorTest.cs (.../DikesPipingFailureMechanismEntityPersistorTest.cs) (revision 2e520a68a32290ef4d8c89a5520227c3084612db) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Persistors/DikesPipingFailureMechanismEntityPersistorTest.cs (.../DikesPipingFailureMechanismEntityPersistorTest.cs) (revision bd8a3e95f0145815fa6724a162404a76c9dc9f5a) @@ -55,14 +55,35 @@ DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); // Call - TestDelegate test = () => persistor.LoadModel(null); + TestDelegate test = () => persistor.LoadModel(null, () => new PipingFailureMechanism()); // Assert var exception = Assert.Throws(test); Assert.AreEqual("entity", exception.ParamName); } [Test] + public void LoadModel_ValidEntityNullModel_ThrowsArgumentNullException() + { + // Setup + const long storageId = 1234L; + FailureMechanismEntity entity = new FailureMechanismEntity + { + FailureMechanismEntityId = storageId, + FailureMechanismType = (int)FailureMechanismType.DikesPipingFailureMechanism, + }; + var ringtoetsEntities = mockRepository.StrictMock(); + DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); + + // Call + TestDelegate test = () => persistor.LoadModel(entity, () => null); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("model", exception.ParamName); + } + + [Test] public void LoadModel_EntityWithIncorrectType_ThrowsArgumentException() { // Setup @@ -76,7 +97,7 @@ DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); // Call - TestDelegate test = () => persistor.LoadModel(entity); + TestDelegate test = () => persistor.LoadModel(entity, () => new PipingFailureMechanism()); // Assert Assert.Throws(test); @@ -100,7 +121,7 @@ DikesPipingFailureMechanismEntityPersistor persistor = new DikesPipingFailureMechanismEntityPersistor(ringtoetsEntities); // Call - PipingFailureMechanism loadedModel = persistor.LoadModel(entity); + PipingFailureMechanism loadedModel = persistor.LoadModel(entity, () => new PipingFailureMechanism()); // Assert Assert.IsInstanceOf(loadedModel);