Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Application.Ringtoets.Storage.csproj =================================================================== diff -u -r9eac9b010ce9939be032b160b4697151319ec8e5 -r9d77e28eef1dda363f4854ba2011a0107588d82c --- Application/Ringtoets/src/Application.Ringtoets.Storage/Application.Ringtoets.Storage.csproj (.../Application.Ringtoets.Storage.csproj) (revision 9eac9b010ce9939be032b160b4697151319ec8e5) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Application.Ringtoets.Storage.csproj (.../Application.Ringtoets.Storage.csproj) (revision 9d77e28eef1dda363f4854ba2011a0107588d82c) @@ -179,6 +179,7 @@ + Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/PipingFailureMechanismMetaEntityReadExtensions.cs =================================================================== diff -u -r9eac9b010ce9939be032b160b4697151319ec8e5 -r9d77e28eef1dda363f4854ba2011a0107588d82c --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/PipingFailureMechanismMetaEntityReadExtensions.cs (.../PipingFailureMechanismMetaEntityReadExtensions.cs) (revision 9eac9b010ce9939be032b160b4697151319ec8e5) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/PipingFailureMechanismMetaEntityReadExtensions.cs (.../PipingFailureMechanismMetaEntityReadExtensions.cs) (revision 9d77e28eef1dda363f4854ba2011a0107588d82c) @@ -25,6 +25,10 @@ namespace Application.Ringtoets.Storage.Read { + /// + /// This class defines extension methods for read operations for a based on the + /// . + /// internal static class PipingFailureMechanismMetaEntityReadExtensions { /// Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Update/PipingFailureMechanismUpdateExtensions.cs =================================================================== diff -u -rd86b1c6e4ebde1570bec162a9043bbb437de5d9c -r9d77e28eef1dda363f4854ba2011a0107588d82c --- Application/Ringtoets/src/Application.Ringtoets.Storage/Update/PipingFailureMechanismUpdateExtensions.cs (.../PipingFailureMechanismUpdateExtensions.cs) (revision d86b1c6e4ebde1570bec162a9043bbb437de5d9c) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Update/PipingFailureMechanismUpdateExtensions.cs (.../PipingFailureMechanismUpdateExtensions.cs) (revision 9d77e28eef1dda363f4854ba2011a0107588d82c) @@ -62,6 +62,8 @@ FailureMechanismEntity entity = mechanism.GetCorrespondingFailureMechanismEntity(context); entity.IsRelevant = Convert.ToByte(mechanism.IsRelevant); + mechanism.PipingProbabilityAssessmentInput.Update(registry, context); + UpdateSoilModels(mechanism, registry, context, entity); UpdateSurfaceLines(mechanism, registry, context, entity); mechanism.UpdateFailureMechanismSections(registry, entity, context); Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Update/PipingProbabilityAssessmentInputUpdateExtensions.cs =================================================================== diff -u --- Application/Ringtoets/src/Application.Ringtoets.Storage/Update/PipingProbabilityAssessmentInputUpdateExtensions.cs (revision 0) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Update/PipingProbabilityAssessmentInputUpdateExtensions.cs (revision 9d77e28eef1dda363f4854ba2011a0107588d82c) @@ -0,0 +1,80 @@ +// 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 System.Linq; +using Application.Ringtoets.Storage.Create; +using Application.Ringtoets.Storage.DbContext; +using Application.Ringtoets.Storage.Exceptions; +using Application.Ringtoets.Storage.Properties; +using Ringtoets.Piping.Data; + +namespace Application.Ringtoets.Storage.Update +{ + /// + /// Extension methods for related to updating a . + /// + internal static class PipingProbabilityAssessmentInputUpdateExtensions + { + /// + /// Updates a in the database based on the information of the + /// . + /// + /// The piping probability assessment input to update the database entity for. + /// The object keeping track of update operations. + /// The context to obtain the existing entity from. + /// Thrown when either: + /// + /// is null + /// is null + /// + /// When + /// does not have a corresponding entity in . + internal static void Update(this PipingProbabilityAssessmentInput probabilityAssessmentInput, PersistenceRegistry registry, IRingtoetsEntities context) + { + if (context == null) + { + throw new ArgumentNullException("context"); + } + if (registry == null) + { + throw new ArgumentNullException("registry"); + } + + PipingFailureMechanismMetaEntity entity = probabilityAssessmentInput.GetCorrespondingPipingFailureMechanismMetaEntity(context); + entity.A = Convert.ToDecimal(probabilityAssessmentInput.A); + + registry.Register(entity, probabilityAssessmentInput); + } + + private static PipingFailureMechanismMetaEntity GetCorrespondingPipingFailureMechanismMetaEntity(this PipingProbabilityAssessmentInput model, IRingtoetsEntities context) + { + try + { + return context.PipingFailureMechanismMetaEntities.Single(pfmme => pfmme.PipingFailureMechanismMetaEntityId == model.StorageId); + } + catch (InvalidOperationException exception) + { + throw new EntityNotFoundException(string.Format(Resources.Error_Entity_Not_Found_0_1, typeof(PipingFailureMechanismMetaEntity).Name, model.StorageId), exception); + } + } + } +} \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj =================================================================== diff -u -r9eac9b010ce9939be032b160b4697151319ec8e5 -r9d77e28eef1dda363f4854ba2011a0107588d82c --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj (.../Application.Ringtoets.Storage.Test.csproj) (revision 9eac9b010ce9939be032b160b4697151319ec8e5) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj (.../Application.Ringtoets.Storage.Test.csproj) (revision 9d77e28eef1dda363f4854ba2011a0107588d82c) @@ -132,6 +132,7 @@ + Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs =================================================================== diff -u -rbba617101367a21a38bf41ad520662058b9012af -r9d77e28eef1dda363f4854ba2011a0107588d82c --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision bba617101367a21a38bf41ad520662058b9012af) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision 9d77e28eef1dda363f4854ba2011a0107588d82c) @@ -289,11 +289,17 @@ private void AssertPipingFailureMechanism(PipingFailureMechanism expectedPipingFailureMechanism, PipingFailureMechanism actualPipingFailureMechanism) { + AssertProbabilityAssesmentInput(expectedPipingFailureMechanism.PipingProbabilityAssessmentInput, actualPipingFailureMechanism.PipingProbabilityAssessmentInput); AssertStochasticSoilModels(expectedPipingFailureMechanism.StochasticSoilModels, actualPipingFailureMechanism.StochasticSoilModels); AssertSurfaceLines(expectedPipingFailureMechanism.SurfaceLines, actualPipingFailureMechanism.SurfaceLines); AssertCalculationGroup(expectedPipingFailureMechanism.CalculationsGroup, actualPipingFailureMechanism.CalculationsGroup); } + private void AssertProbabilityAssesmentInput(PipingProbabilityAssessmentInput expectedModel, PipingProbabilityAssessmentInput actualModel) + { + Assert.AreEqual(expectedModel.A, actualModel.A); + } + private void AssertStochasticSoilModels(ObservableList expectedModels, ObservableList actualModels) { // Precondition: Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/AssessmentSectionUpdateExtensionsTest.cs =================================================================== diff -u -rea14c73fc9ac706d48a5af7125bb570a5d07dd28 -r9d77e28eef1dda363f4854ba2011a0107588d82c --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/AssessmentSectionUpdateExtensionsTest.cs (.../AssessmentSectionUpdateExtensionsTest.cs) (revision ea14c73fc9ac706d48a5af7125bb570a5d07dd28) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/AssessmentSectionUpdateExtensionsTest.cs (.../AssessmentSectionUpdateExtensionsTest.cs) (revision 9d77e28eef1dda363f4854ba2011a0107588d82c) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.Collections.Generic; using System.Data.Entity; using System.Linq; using Application.Ringtoets.Storage.Create; @@ -157,6 +158,11 @@ { CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId }); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = section.PipingFailureMechanism.StorageId + }); FillWithFailureMechanismEntities(ringtoetsEntities.FailureMechanismEntities); // Call @@ -201,6 +207,11 @@ { CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId }); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = section.PipingFailureMechanism.StorageId + }); FillWithFailureMechanismEntities(ringtoetsEntities.FailureMechanismEntities); // Call @@ -246,6 +257,11 @@ { CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId }); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = section.PipingFailureMechanism.StorageId + }); ringtoetsEntities.ReferenceLinePointEntities.Add(referenceLinePointEntity); FillWithFailureMechanismEntities(ringtoetsEntities.FailureMechanismEntities); @@ -290,6 +306,11 @@ { CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId }); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = section.PipingFailureMechanism.StorageId + }); FillWithFailureMechanismEntities(ringtoetsEntities.FailureMechanismEntities); // Call @@ -348,6 +369,11 @@ { CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId }); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = section.PipingFailureMechanism.StorageId + }); FillWithFailureMechanismEntities(ringtoetsEntities.FailureMechanismEntities); ringtoetsEntities.HydraulicLocationEntities.Add(hydraulicLocationEntity); @@ -397,6 +423,11 @@ { CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId }); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = section.PipingFailureMechanism.StorageId + }); ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity); FillWithFailureMechanismEntities(ringtoetsEntities.FailureMechanismEntities); @@ -443,6 +474,11 @@ { CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId }); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = section.PipingFailureMechanism.StorageId + }); ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity); FillWithFailureMechanismEntities(ringtoetsEntities.FailureMechanismEntities); @@ -513,6 +549,11 @@ { CalculationGroupEntityId = section.PipingFailureMechanism.CalculationsGroup.StorageId }); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = section.PipingFailureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = section.PipingFailureMechanism.StorageId + }); ringtoetsEntities.FailureMechanismEntities.Add(macrostabilityInwardsEntity); ringtoetsEntities.FailureMechanismEntities.Add(macrostabilityOutwardsEntity); @@ -583,6 +624,10 @@ CalculationsGroup = { StorageId = 1 + }, + PipingProbabilityAssessmentInput = + { + StorageId = 1 } }, GrassCoverErosionInwards = Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/PipingFailureMechanismUpdateExtensionsTest.cs =================================================================== diff -u -r3fa8664290181eedfdcefbe87f32aa7539d748e3 -r9d77e28eef1dda363f4854ba2011a0107588d82c --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/PipingFailureMechanismUpdateExtensionsTest.cs (.../PipingFailureMechanismUpdateExtensionsTest.cs) (revision 3fa8664290181eedfdcefbe87f32aa7539d748e3) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/PipingFailureMechanismUpdateExtensionsTest.cs (.../PipingFailureMechanismUpdateExtensionsTest.cs) (revision 9d77e28eef1dda363f4854ba2011a0107588d82c) @@ -158,6 +158,11 @@ }; ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity); ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroup); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = failureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = failureMechanism.StorageId + }); // Call failureMechanism.Update(new PersistenceRegistry(), ringtoetsEntities); @@ -204,6 +209,11 @@ ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity); ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroupEntity); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = failureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = failureMechanism.StorageId + }); // Call failureMechanism.Update(new PersistenceRegistry(), ringtoetsEntities); @@ -261,6 +271,11 @@ ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity); ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroupEntity); ringtoetsEntities.StochasticSoilModelEntities.Add(stochasticSoilModelEntity); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = failureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = failureMechanism.StorageId + }); // Call failureMechanism.Update(new PersistenceRegistry(), ringtoetsEntities); @@ -305,6 +320,11 @@ }; ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity); ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroupEntity); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = failureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = failureMechanism.StorageId + }); // Call failureMechanism.Update(new PersistenceRegistry(), ringtoetsEntities); @@ -360,6 +380,11 @@ ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity); ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroupEntity); ringtoetsEntities.SurfaceLineEntities.Add(surfaceLineEntity); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = failureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = failureMechanism.StorageId + }); // Call failureMechanism.Update(new PersistenceRegistry(), ringtoetsEntities); @@ -401,6 +426,11 @@ ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity); ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroupEntity); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = failureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = failureMechanism.StorageId + }); // Call failureMechanism.Update(new PersistenceRegistry(), ringtoetsEntities); @@ -456,6 +486,11 @@ ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity); ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroupEntity); ringtoetsEntities.FailureMechanismSectionEntities.Add(failureMechanismSectionEntity); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = failureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = failureMechanism.StorageId + }); // Call failureMechanism.Update(new PersistenceRegistry(), ringtoetsEntities); @@ -503,6 +538,11 @@ }; ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity); ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroupEntity); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = failureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = failureMechanism.StorageId + }); var registry = new PersistenceRegistry(); @@ -567,6 +607,11 @@ ringtoetsEntities.FailureMechanismEntities.Add(failureMechanismEntity); ringtoetsEntities.CalculationGroupEntities.Add(rootCalculationGroupEntity); ringtoetsEntities.CalculationGroupEntities.Add(childGroupEntity); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = failureMechanism.PipingProbabilityAssessmentInput.StorageId, + FailureMechanismEntityId = failureMechanism.StorageId + }); var registry = new PersistenceRegistry(); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/PipingProbabilityAssessmentInputUpdateExtensionsTest.cs =================================================================== diff -u --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/PipingProbabilityAssessmentInputUpdateExtensionsTest.cs (revision 0) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/PipingProbabilityAssessmentInputUpdateExtensionsTest.cs (revision 9d77e28eef1dda363f4854ba2011a0107588d82c) @@ -0,0 +1,156 @@ +// 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.Create; +using Application.Ringtoets.Storage.DbContext; +using Application.Ringtoets.Storage.Exceptions; +using Application.Ringtoets.Storage.TestUtil; +using Application.Ringtoets.Storage.Update; +using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Piping.Data; + +namespace Application.Ringtoets.Storage.Test.Update +{ + [TestFixture] + public class PipingProbabilityAssessmentInputUpdateExtensionsTest + { + [Test] + public void Update_WithoutContext_ArgumentNullException() + { + // Setup + var probabilityAssessmentInput = new PipingProbabilityAssessmentInput(); + + // Call + TestDelegate test = () => probabilityAssessmentInput.Update(new PersistenceRegistry(), null); + + // Assert + var paramName = Assert.Throws(test).ParamName; + Assert.AreEqual("context", paramName); + } + + [Test] + public void Update_WithoutPersistenceRegistry_ArgumentNullException() + { + // Setup + var probabilityAssessmentInput = new PipingProbabilityAssessmentInput(); + + // Call + TestDelegate test = () => + { + using (var ringtoetsEntities = new RingtoetsEntities()) + { + probabilityAssessmentInput.Update(null, ringtoetsEntities); + } + }; + + // Assert + var paramName = Assert.Throws(test).ParamName; + Assert.AreEqual("registry", paramName); + } + + [Test] + public void Update_ContextWithNoPipingProbabilityAssessmentInput_EntityNotFoundException() + { + // Setup + var probabilityAssessmentInput = new PipingProbabilityAssessmentInput(); + + // Call + TestDelegate test = () => + { + using (var ringtoetsEntities = new RingtoetsEntities()) + { + probabilityAssessmentInput.Update(new PersistenceRegistry(), ringtoetsEntities); + } + }; + + // Assert + var expectedMessage = String.Format("Het object 'PipingFailureMechanismMetaEntity' met id '{0}' is niet gevonden.", 0); + EntityNotFoundException exception = Assert.Throws(test); + Assert.AreEqual(expectedMessage, exception.Message); + } + + [Test] + public void Update_ContextWithNoPipingFailureMechanismWithId_EntityNotFoundException() + { + // Setup + MockRepository mocks = new MockRepository(); + var ringtoetsEntities = RingtoetsEntitiesHelper.CreateStub(mocks); + + mocks.ReplayAll(); + + var storageId = 1; + var probabilityAssessmentInput = new PipingProbabilityAssessmentInput + { + StorageId = storageId + }; + + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = 2 + }); + + // Call + TestDelegate test = () => probabilityAssessmentInput.Update(new PersistenceRegistry(), ringtoetsEntities); + + // Assert + var expectedMessage = String.Format("Het object 'PipingFailureMechanismMetaEntity' met id '{0}' is niet gevonden.", storageId); + EntityNotFoundException exception = Assert.Throws(test); + Assert.AreEqual(expectedMessage, exception.Message); + + mocks.VerifyAll(); + } + + [Test] + public void Update_ContextWithPipingFailureMechanism_PropertiesUpdated() + { + // Setup + MockRepository mocks = new MockRepository(); + var ringtoetsEntities = RingtoetsEntitiesHelper.CreateStub(mocks); + + mocks.ReplayAll(); + + double value = 0.64; + + var probabilityAssessmentInput = new PipingProbabilityAssessmentInput + { + StorageId = 1, + A = value + }; + + var pipingFailureMechanismMetaEntity = new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = probabilityAssessmentInput.StorageId, + A = Convert.ToDecimal(0.3) + }; + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(pipingFailureMechanismMetaEntity); + + // Call + probabilityAssessmentInput.Update(new PersistenceRegistry(), ringtoetsEntities); + + // Assert + Assert.AreEqual(Convert.ToDecimal(value), pipingFailureMechanismMetaEntity.A); + + mocks.VerifyAll(); + } + } +} \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/ProjectUpdateExtensionsTest.cs =================================================================== diff -u -rfe68c3f7cae5946b93d9e27eb532b176a6b26b84 -r9d77e28eef1dda363f4854ba2011a0107588d82c --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/ProjectUpdateExtensionsTest.cs (.../ProjectUpdateExtensionsTest.cs) (revision fe68c3f7cae5946b93d9e27eb532b176a6b26b84) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/ProjectUpdateExtensionsTest.cs (.../ProjectUpdateExtensionsTest.cs) (revision 9d77e28eef1dda363f4854ba2011a0107588d82c) @@ -243,6 +243,10 @@ CalculationsGroup = { StorageId = 23 + }, + PipingProbabilityAssessmentInput = + { + StorageId = 2 } }, GrassCoverErosionInwards = @@ -322,6 +326,10 @@ { FailureMechanismEntityId = 1 }); + ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(new PipingFailureMechanismMetaEntity + { + PipingFailureMechanismMetaEntityId = 2 + }); // Call project.Update(new PersistenceRegistry(), ringtoetsEntities);