Index: Riskeer/Common/src/Riskeer.Common.Service/HydraulicBoundaryDataConnectionValidator.cs =================================================================== diff -u -r7a68fbcefe7f73fa6f0a05b536dd2abc166a8105 -rddb6a57a735ac1222a0139e01dd3b57fb2e950ca --- Riskeer/Common/src/Riskeer.Common.Service/HydraulicBoundaryDataConnectionValidator.cs (.../HydraulicBoundaryDataConnectionValidator.cs) (revision 7a68fbcefe7f73fa6f0a05b536dd2abc166a8105) +++ Riskeer/Common/src/Riskeer.Common.Service/HydraulicBoundaryDataConnectionValidator.cs (.../HydraulicBoundaryDataConnectionValidator.cs) (revision ddb6a57a735ac1222a0139e01dd3b57fb2e950ca) @@ -39,6 +39,8 @@ /// The hydraulic boundary location to validate for. /// An error message if a problem was found; null in case no problems were found. /// Thrown when any parameter is null. + /// Thrown when is not part of + /// . public static string Validate(HydraulicBoundaryData hydraulicBoundaryData, HydraulicBoundaryLocation hydraulicBoundaryLocation) { if (hydraulicBoundaryData == null) @@ -57,7 +59,7 @@ } string validationProblem = HydraulicBoundaryDataHelper.ValidateFilesForCalculation( - hydraulicBoundaryData.FilePath, + hydraulicBoundaryData.GetHydraulicBoundaryDatabaseForLocation(hydraulicBoundaryLocation).FilePath, hydraulicBoundaryData.HydraulicLocationConfigurationDatabase.FilePath, hydraulicBoundaryData.HydraulicLocationConfigurationDatabase.UsePreprocessorClosure); Index: Riskeer/Common/test/Riskeer.Common.Service.Test/HydraulicBoundaryDataConnectionValidatorTest.cs =================================================================== diff -u -r5ed6320f359270c612c45b2d32d9a5d5c3c99f35 -rddb6a57a735ac1222a0139e01dd3b57fb2e950ca --- Riskeer/Common/test/Riskeer.Common.Service.Test/HydraulicBoundaryDataConnectionValidatorTest.cs (.../HydraulicBoundaryDataConnectionValidatorTest.cs) (revision 5ed6320f359270c612c45b2d32d9a5d5c3c99f35) +++ Riskeer/Common/test/Riskeer.Common.Service.Test/HydraulicBoundaryDataConnectionValidatorTest.cs (.../HydraulicBoundaryDataConnectionValidatorTest.cs) (revision ddb6a57a735ac1222a0139e01dd3b57fb2e950ca) @@ -70,16 +70,52 @@ } [Test] + public void Validate_HydraulicBoundaryLocationNotPartOfLinkedHydraulicBoundaryData_ThrowsArgumentException() + { + // Setup + var hydraulicBoundaryData = new HydraulicBoundaryData + { + HydraulicLocationConfigurationDatabase = + { + FilePath = Path.Combine(testDataPath, "hlcd.sqlite") + } + }; + + // Call + void Call() => HydraulicBoundaryDataConnectionValidator.Validate(hydraulicBoundaryData, new TestHydraulicBoundaryLocation()); + + // Assert + string message = Assert.Throws(Call).Message; + Assert.AreEqual("'hydraulicBoundaryLocation' is not part of 'hydraulicBoundaryData'.", message); + } + + [Test] public void Validate_HydraulicBoundaryDataLinkedToNotExistingDatabaseFile_ReturnsErrorMessage() { // Setup + var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); + var hydraulicBoundaryData = new HydraulicBoundaryData { - FilePath = "I_do_not_exist.sqlite" + HydraulicLocationConfigurationDatabase = + { + FilePath = Path.Combine(testDataPath, "hlcd.sqlite") + }, + HydraulicBoundaryDatabases = + { + new HydraulicBoundaryDatabase + { + FilePath = "I_do_not_exist.sqlite", + Locations = + { + hydraulicBoundaryLocation + } + } + } }; // Call - string message = HydraulicBoundaryDataConnectionValidator.Validate(hydraulicBoundaryData, new TestHydraulicBoundaryLocation()); + string message = HydraulicBoundaryDataConnectionValidator.Validate(hydraulicBoundaryData, hydraulicBoundaryLocation); // Assert const string expectedMessage = "Herstellen van de verbinding met de hydraulische belastingendatabase is mislukt. Fout bij het lezen van bestand 'I_do_not_exist.sqlite': het bestand bestaat niet."; @@ -90,18 +126,30 @@ public void Validate_HydraulicBoundaryDataLinkedToExistingDatabaseFileWithoutSettings_ReturnsErrorMessage() { // Setup + var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); + string invalidSettingsSchemaPath = Path.Combine(testDataPath, "invalidSettingsSchema"); var hydraulicBoundaryData = new HydraulicBoundaryData { - FilePath = Path.Combine(invalidSettingsSchemaPath, "complete.sqlite"), HydraulicLocationConfigurationDatabase = { FilePath = Path.Combine(invalidSettingsSchemaPath, "hlcd.sqlite") + }, + HydraulicBoundaryDatabases = + { + new HydraulicBoundaryDatabase + { + FilePath = Path.Combine(invalidSettingsSchemaPath, "complete.sqlite"), + Locations = + { + hydraulicBoundaryLocation + } + } } }; // Call - string message = HydraulicBoundaryDataConnectionValidator.Validate(hydraulicBoundaryData, new TestHydraulicBoundaryLocation()); + string message = HydraulicBoundaryDataConnectionValidator.Validate(hydraulicBoundaryData, hydraulicBoundaryLocation); // Assert const string expectedMessage = "Herstellen van de verbinding met de hydraulische belastingendatabase is mislukt. De rekeninstellingen database heeft niet het juiste schema."; @@ -112,19 +160,31 @@ public void Validate_UsePreprocessorClosureTrueWithoutPreprocessorClosureDatabase_ReturnsMessageWithError() { // Setup + var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); + string withoutPreprocessorClosurePath = Path.Combine(testDataPath, "withoutPreprocessorClosure"); var hydraulicBoundaryData = new HydraulicBoundaryData { - FilePath = Path.Combine(withoutPreprocessorClosurePath, "complete.sqlite"), HydraulicLocationConfigurationDatabase = { FilePath = Path.Combine(withoutPreprocessorClosurePath, "hlcd.sqlite"), UsePreprocessorClosure = true + }, + HydraulicBoundaryDatabases = + { + new HydraulicBoundaryDatabase + { + FilePath = Path.Combine(withoutPreprocessorClosurePath, "complete.sqlite"), + Locations = + { + hydraulicBoundaryLocation + } + } } }; // Call - string message = HydraulicBoundaryDataConnectionValidator.Validate(hydraulicBoundaryData, new TestHydraulicBoundaryLocation()); + string message = HydraulicBoundaryDataConnectionValidator.Validate(hydraulicBoundaryData, hydraulicBoundaryLocation); // Assert string preprocessorClosureFilePath = Path.Combine(testDataPath, "withoutPreprocessorClosure", "hlcd_preprocClosure.sqlite"); @@ -138,18 +198,30 @@ public void Validate_HydraulicBoundaryDataLinkedToValidDatabaseFile_ReturnsNull(bool usePreprocessorClosure) { // Setup + var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); + var hydraulicBoundaryData = new HydraulicBoundaryData { - FilePath = Path.Combine(testDataPath, "complete.sqlite"), HydraulicLocationConfigurationDatabase = { FilePath = Path.Combine(testDataPath, "hlcd.sqlite"), UsePreprocessorClosure = usePreprocessorClosure + }, + HydraulicBoundaryDatabases = + { + new HydraulicBoundaryDatabase + { + FilePath = Path.Combine(testDataPath, "complete.sqlite"), + Locations = + { + hydraulicBoundaryLocation + } + } } }; // Call - string message = HydraulicBoundaryDataConnectionValidator.Validate(hydraulicBoundaryData, new TestHydraulicBoundaryLocation()); + string message = HydraulicBoundaryDataConnectionValidator.Validate(hydraulicBoundaryData, hydraulicBoundaryLocation); // Assert Assert.IsNull(message);