Index: Core/Common/test/Core.Common.TestUtil.Test/TestHelperTest.cs =================================================================== diff -u -r74817f4dbb43aa0346f8b839e59370f786c5d452 -ra91af2b4cf186d4c53e839f6ce44b2ffc2895831 --- Core/Common/test/Core.Common.TestUtil.Test/TestHelperTest.cs (.../TestHelperTest.cs) (revision 74817f4dbb43aa0346f8b839e59370f786c5d452) +++ Core/Common/test/Core.Common.TestUtil.Test/TestHelperTest.cs (.../TestHelperTest.cs) (revision a91af2b4cf186d4c53e839f6ce44b2ffc2895831) @@ -94,6 +94,8 @@ path = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO); Assert.IsTrue(Directory.Exists(path)); + path = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.Service); + Assert.IsTrue(Directory.Exists(path)); path = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.HydraRing.IO); Assert.IsTrue(Directory.Exists(path)); Index: Core/Common/test/Core.Common.TestUtil/TestDataPath.cs =================================================================== diff -u -r5d503cf8885ced4799e5ad44242038d99e04b162 -ra91af2b4cf186d4c53e839f6ce44b2ffc2895831 --- Core/Common/test/Core.Common.TestUtil/TestDataPath.cs (.../TestDataPath.cs) (revision 5d503cf8885ced4799e5ad44242038d99e04b162) +++ Core/Common/test/Core.Common.TestUtil/TestDataPath.cs (.../TestDataPath.cs) (revision a91af2b4cf186d4c53e839f6ce44b2ffc2895831) @@ -72,6 +72,7 @@ public static class Common { public static readonly TestDataPath IO = System.IO.Path.Combine("Ringtoets", "Common", "test", "Ringtoets.Common.IO.Test"); + public static readonly TestDataPath Service = System.IO.Path.Combine("Ringtoets", "Common", "test", "Ringtoets.Common.Service.Test"); } public static class GrassCoverErosionInwards Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationServiceTest.cs =================================================================== diff -u -rc7d39e2c22a5df98a9f398cab98040a51faba283 -ra91af2b4cf186d4c53e839f6ce44b2ffc2895831 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationServiceTest.cs (.../DesignWaterLevelCalculationServiceTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationServiceTest.cs (.../DesignWaterLevelCalculationServiceTest.cs) (revision a91af2b4cf186d4c53e839f6ce44b2ffc2895831) @@ -100,6 +100,35 @@ } [Test] + public void Validate_ValidHydraulicBoundaryDatabaseWithoutSettings_LogsErrorAndReturnsFalse() + { + // Setup + const string calculationName = "calculationName"; + string notValidFilePath = Path.Combine(testDataPath, "HRD nosettings.sqlite"); + bool valid = false; + + var mockRepository = new MockRepository(); + ICalculationMessageProvider messageProviderStub = mockRepository.Stub(); + messageProviderStub.Stub(mp => mp.GetCalculationName(calculationName)).Return(calculationName); + mockRepository.ReplayAll(); + + // Call + Action call = () => valid = DesignWaterLevelCalculationService.Validate(calculationName, notValidFilePath, messageProviderStub); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(3, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", calculationName), msgs[0]); + StringAssert.StartsWith("Herstellen van de verbinding met de hydraulische randvoorwaardendatabase is mislukt. Fout bij het lezen van bestand", msgs[1]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", calculationName), msgs[2]); + }); + Assert.IsFalse(valid); + mockRepository.VerifyAll(); + } + + [Test] public void Calculate_ValidHydraulicBoundaryLocation_StartsCalculationWithRightParameters() { // Setup Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/HydraRingSettingsDatabaseHelperTest.cs =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/HydraRingSettingsDatabaseHelperTest.cs (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/HydraRingSettingsDatabaseHelperTest.cs (revision a91af2b4cf186d4c53e839f6ce44b2ffc2895831) @@ -0,0 +1,108 @@ +// 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.IO; +using Core.Common.IO.Exceptions; +using Core.Common.TestUtil; +using NUnit.Framework; +using Ringtoets.HydraRing.Calculation.Data; +using Ringtoets.HydraRing.Calculation.Data.Input; + +namespace Ringtoets.Common.Service.Test +{ + [TestFixture] + public class HydraRingSettingsDatabaseHelperTest + { + private static readonly string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.Service); + + [Test] + public void AssignSettingsFromDatabase_FileWithInvalidCharacters_ThrowsArgumentException() + { + // Call + TestDelegate test = () => HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(new TestHydraRingCalculationInput(), ">"); + + // Assert + Assert.Throws(test); + } + + [Test] + public void AssignSettingsFromDatabase_FileWithoutSettingsDatabase_ThrowsCriticalFileReadException() + { + // Call + TestDelegate test = () => HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(new TestHydraRingCalculationInput(), "NoConfig.sqlite"); + + // Assert + Assert.Throws(test); + } + + [Test] + public void AssignSettingsFromDatabase_FileWithEmptySettingsDatabase_DefaultsSettingsAdded() + { + // Setup + var input = new TestHydraRingCalculationInput(); + + // Call + HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(input, Path.Combine(testDataPath,"hrd.sqlite")); + + // Assert + Assert.NotNull(input.DesignTablesSetting); + Assert.NotNull(input.NumericsSettings); + Assert.NotNull(input.HydraulicModelsSetting); + } + } + + public class TestHydraRingCalculationInput : HydraRingCalculationInput { + public TestHydraRingCalculationInput() : base(2) {} + + public override HydraRingFailureMechanismType FailureMechanismType + { + get + { + return HydraRingFailureMechanismType.AssessmentLevel; + } + } + + public override int CalculationTypeId + { + get + { + return 1; + } + } + + public override int VariableId + { + get + { + return 2; + } + } + + public override HydraRingSection Section + { + get + { + return null; + } + } + } +} \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/Ringtoets.Common.Service.Test.csproj =================================================================== diff -u -rdc80ceebd52da19d841b46b5300695fd5c83e4a6 -ra91af2b4cf186d4c53e839f6ce44b2ffc2895831 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/Ringtoets.Common.Service.Test.csproj (.../Ringtoets.Common.Service.Test.csproj) (revision dc80ceebd52da19d841b46b5300695fd5c83e4a6) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/Ringtoets.Common.Service.Test.csproj (.../Ringtoets.Common.Service.Test.csproj) (revision a91af2b4cf186d4c53e839f6ce44b2ffc2895831) @@ -62,6 +62,7 @@ + @@ -88,6 +89,10 @@ {3bbfd65b-b277-4e50-ae6d-bd24c3434609} Core.Common.Base + + {E344867E-9AC9-44C8-88A5-8185681679A9} + Core.Common.IO + {F49BD8B2-332A-4C91-A196-8CCE0A2C7D98} Core.Common.Utils Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationServiceTest.cs =================================================================== diff -u -rc7d39e2c22a5df98a9f398cab98040a51faba283 -ra91af2b4cf186d4c53e839f6ce44b2ffc2895831 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationServiceTest.cs (.../WaveHeightCalculationServiceTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationServiceTest.cs (.../WaveHeightCalculationServiceTest.cs) (revision a91af2b4cf186d4c53e839f6ce44b2ffc2895831) @@ -100,6 +100,35 @@ } [Test] + public void Validate_ValidHydraulicBoundaryDatabaseWithoutSettings_LogsErrorAndReturnsFalse() + { + // Setup + const string calculationName = "calculationName"; + string validFilePath = Path.Combine(testDataPath, "HRD nosettings.sqlite"); + bool valid = false; + + var mockRepository = new MockRepository(); + ICalculationMessageProvider messageProviderStub = mockRepository.Stub(); + messageProviderStub.Stub(mp => mp.GetCalculationName(calculationName)).Return(calculationName); + mockRepository.ReplayAll(); + + // Call + Action call = () => valid = WaveHeightCalculationService.Validate(calculationName, validFilePath, messageProviderStub); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(3, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", calculationName), msgs[0]); + StringAssert.StartsWith("Herstellen van de verbinding met de hydraulische randvoorwaardendatabase is mislukt. Fout bij het lezen van bestand", msgs[1]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", calculationName), msgs[2]); + }); + Assert.IsFalse(valid); + mockRepository.VerifyAll(); + } + + [Test] public void Calculate_ValidHydraulicBoundaryLocation_StartsCalculationWithRightParameters() { // Setup Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/test-data/hrd.config.sqlite =================================================================== diff -u Binary files differ Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsCalculationServiceTest.cs =================================================================== diff -u -r25d6b191a8ffd5dce434ddd07650aa1b9a76e699 -ra91af2b4cf186d4c53e839f6ce44b2ffc2895831 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsCalculationServiceTest.cs (.../GrassCoverErosionInwardsCalculationServiceTest.cs) (revision 25d6b191a8ffd5dce434ddd07650aa1b9a76e699) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsCalculationServiceTest.cs (.../GrassCoverErosionInwardsCalculationServiceTest.cs) (revision a91af2b4cf186d4c53e839f6ce44b2ffc2895831) @@ -133,6 +133,51 @@ } [Test] + public void Validate_ValidHydraulicBoundaryDatabaseWithoutSettings_LogsValidationMessageAndReturnFalse() + { + // Setup + var grassCoverErosionInwardsFailureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + + var invalidFilePath = Path.Combine(testDataPath, "HRD nosettings.sqlite"); + + var mockRepository = new MockRepository(); + IAssessmentSection assessmentSectionStub = AssessmentSectionHelper.CreateAssessmentSectionStub(grassCoverErosionInwardsFailureMechanism, + mockRepository, + invalidFilePath); + mockRepository.ReplayAll(); + + const string name = ""; + + GrassCoverErosionInwardsCalculation calculation = new GrassCoverErosionInwardsCalculation + { + Name = name, + InputParameters = + { + HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "name", 2, 2), + DikeProfile = new DikeProfile(new Point2D(0, 0), new RoughnessPoint[0], new Point2D[0], + null, new DikeProfile.ConstructionProperties()) + } + }; + + // Call + bool isValid = false; + Action call = () => isValid = GrassCoverErosionInwardsCalculationService.Validate(calculation, assessmentSectionStub); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(3, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", name), msgs[0]); + StringAssert.StartsWith("Validatie mislukt: Fout bij het lezen van bestand", msgs[1]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", name), msgs[2]); + }); + Assert.IsFalse(isValid); + + mockRepository.VerifyAll(); + } + + [Test] public void Validate_NoDikeProfile_ReturnsTrue() { // Setup Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Service.Test/GrassCoverErosionOutwardsWaveConditionsCalculationServiceTest.cs =================================================================== diff -u -r25d6b191a8ffd5dce434ddd07650aa1b9a76e699 -ra91af2b4cf186d4c53e839f6ce44b2ffc2895831 --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Service.Test/GrassCoverErosionOutwardsWaveConditionsCalculationServiceTest.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationServiceTest.cs) (revision 25d6b191a8ffd5dce434ddd07650aa1b9a76e699) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Service.Test/GrassCoverErosionOutwardsWaveConditionsCalculationServiceTest.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationServiceTest.cs) (revision a91af2b4cf186d4c53e839f6ce44b2ffc2895831) @@ -120,6 +120,33 @@ } [Test] + public void Validate_ValidHydraulicBoundaryDatabaseWithoutSettings_LogsValidationMessageAndReturnFalse() + { + // Setup + GrassCoverErosionOutwardsWaveConditionsCalculation calculation = GetDefaultCalculation(); + string testFilePath = Path.Combine(testDataPath, "HRD nosettings.sqlite"); + + var isValid = true; + + using (new HydraRingCalculatorFactoryConfig()) + { + // Call + Action call = () => isValid = GrassCoverErosionOutwardsWaveConditionsCalculationService.Validate(calculation, testFilePath); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(3, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", calculation.Name), msgs[0]); + StringAssert.StartsWith("Validatie mislukt: Fout bij het lezen van bestand", msgs[1]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", calculation.Name), msgs[2]); + }); + Assert.IsFalse(isValid); + } + } + + [Test] public void Validate_NoHydraulicBoundaryLocation_LogsValidationMessageAndReturnFalse() { // Setup Index: Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/test-data/HydraRingCalculation/HRD nosettings.sqlite =================================================================== diff -u Binary files differ Index: Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsCalculationServiceBaseTest.cs =================================================================== diff -u -r25d6b191a8ffd5dce434ddd07650aa1b9a76e699 -ra91af2b4cf186d4c53e839f6ce44b2ffc2895831 --- Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsCalculationServiceBaseTest.cs (.../WaveConditionsCalculationServiceBaseTest.cs) (revision 25d6b191a8ffd5dce434ddd07650aa1b9a76e699) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsCalculationServiceBaseTest.cs (.../WaveConditionsCalculationServiceBaseTest.cs) (revision a91af2b4cf186d4c53e839f6ce44b2ffc2895831) @@ -116,6 +116,30 @@ } [Test] + public void Validate_ValidHydraulicBoundaryDatabaseWithoutSettings_LogsValidationMessageAndReturnFalse() + { + // Setup + string name = "test"; + bool isValid = false; + var dbFilePath = Path.Combine(testDataPath, "HRD nosettings.sqlite"); + + // Call + Action action = () => isValid = new WaveConditionsCalculationService().PublicValidateWaveConditionsInput(null, name, dbFilePath, string.Empty); + + // Assert + TestHelper.AssertLogMessages(action, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(3, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", name), msgs[0]); + StringAssert.StartsWith("Validatie mislukt: Fout bij het lezen van bestand", msgs[1]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", name), msgs[2]); + }); + + Assert.IsFalse(isValid); + } + + [Test] public void Validate_NoHydraulicBoundaryLocation_ReturnsFalseAndLogsValidationError() { // Setup Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Service.Test/StabilityStoneCoverWaveConditionsCalculationServiceTest.cs =================================================================== diff -u -r25d6b191a8ffd5dce434ddd07650aa1b9a76e699 -ra91af2b4cf186d4c53e839f6ce44b2ffc2895831 --- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Service.Test/StabilityStoneCoverWaveConditionsCalculationServiceTest.cs (.../StabilityStoneCoverWaveConditionsCalculationServiceTest.cs) (revision 25d6b191a8ffd5dce434ddd07650aa1b9a76e699) +++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Service.Test/StabilityStoneCoverWaveConditionsCalculationServiceTest.cs (.../StabilityStoneCoverWaveConditionsCalculationServiceTest.cs) (revision a91af2b4cf186d4c53e839f6ce44b2ffc2895831) @@ -110,6 +110,33 @@ } [Test] + public void Validate_ValidHydraulicBoundaryDatabaseWithoutSettings_LogsValidationMessageAndReturnFalse() + { + // Setup + StabilityStoneCoverWaveConditionsCalculation calculation = GetDefaultCalculation(); + var testFilePath = Path.Combine(testDataPath, "HRD nosettings.sqlite"); + + var isValid = true; + + using (new HydraRingCalculatorFactoryConfig()) + { + // Call + Action call = () => isValid = StabilityStoneCoverWaveConditionsCalculationService.Validate(calculation, testFilePath); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(3, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", calculation.Name), msgs[0]); + StringAssert.StartsWith("Validatie mislukt: Fout bij het lezen van bestand", msgs[1]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", calculation.Name), msgs[2]); + }); + Assert.IsFalse(isValid); + } + } + + [Test] public void Validate_NoHydraulicBoundaryLocation_LogsValidationMessageAndReturnFalse() { // Setup Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Service.Test/WaveImpactAsphaltCoverWaveConditionsCalculationServiceTest.cs =================================================================== diff -u -r25d6b191a8ffd5dce434ddd07650aa1b9a76e699 -ra91af2b4cf186d4c53e839f6ce44b2ffc2895831 --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Service.Test/WaveImpactAsphaltCoverWaveConditionsCalculationServiceTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationServiceTest.cs) (revision 25d6b191a8ffd5dce434ddd07650aa1b9a76e699) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Service.Test/WaveImpactAsphaltCoverWaveConditionsCalculationServiceTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationServiceTest.cs) (revision a91af2b4cf186d4c53e839f6ce44b2ffc2895831) @@ -120,6 +120,33 @@ } [Test] + public void Validate_ValidHydraulicBoundaryDatabaseWithoutSettings_LogsValidationMessageAndReturnFalse() + { + // Setup + WaveImpactAsphaltCoverWaveConditionsCalculation calculation = GetDefaultCalculation(); + string testFilePath = Path.Combine(testDataPath, "HRD nosettings.sqlite"); + + var isValid = true; + + using (new HydraRingCalculatorFactoryConfig()) + { + // Call + Action call = () => isValid = WaveImpactAsphaltCoverWaveConditionsCalculationService.Validate(calculation, testFilePath); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(3, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", calculation.Name), msgs[0]); + StringAssert.StartsWith("Validatie mislukt: Fout bij het lezen van bestand", msgs[1]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", calculation.Name), msgs[2]); + }); + Assert.IsFalse(isValid); + } + } + + [Test] public void Validate_NoHydraulicBoundaryLocation_LogsValidationMessageAndReturnFalse() { // Setup