Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.Designer.cs
===================================================================
diff -u -rc85651351f64578aefc6913576430aed66325500 -rf01130d610fadc513e82f78093100fdd55c4b173
--- Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision c85651351f64578aefc6913576430aed66325500)
+++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision f01130d610fadc513e82f78093100fdd55c4b173)
@@ -233,6 +233,15 @@
}
///
+ /// Looks up a localized string similar to Het XML-document dat de configuratie voor de berekeningen beschrijft bevat geen berekeningselementen.
+ ///
+ public static string PipingConfigurationReader_No_calculation_items_found {
+ get {
+ return ResourceManager.GetString("PipingConfigurationReader_No_calculation_items_found", resourceCulture);
+ }
+ }
+
+ ///
/// Looks up a localized string similar to Kritieke fout opgetreden bij het uitlezen van waardes uit kolommen in de database..
///
public static string PipingSoilProfileReader_Critical_Unexpected_value_on_column {
Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.resx
===================================================================
diff -u -rc85651351f64578aefc6913576430aed66325500 -rf01130d610fadc513e82f78093100fdd55c4b173
--- Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.resx (.../Resources.resx) (revision c85651351f64578aefc6913576430aed66325500)
+++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.resx (.../Resources.resx) (revision f01130d610fadc513e82f78093100fdd55c4b173)
@@ -294,4 +294,7 @@
{0}
Er is geen berekening configuratie geïmporteerd.
+
+ Het XML-document dat de configuratie voor de berekeningen beschrijft bevat geen berekeningselementen.
+
\ No newline at end of file
Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs
===================================================================
diff -u -r8d296ef98159086423790c4817260e9266436886 -rf01130d610fadc513e82f78093100fdd55c4b173
--- Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs (.../PipingConfigurationReader.cs) (revision 8d296ef98159086423790c4817260e9266436886)
+++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs (.../PipingConfigurationReader.cs) (revision f01130d610fadc513e82f78093100fdd55c4b173)
@@ -65,6 +65,8 @@
xmlDocument = LoadDocument(xmlFilePath);
ValidateToSchema(xmlDocument, xmlFilePath);
+
+ ValidateNotEmpty(xmlDocument, xmlFilePath);
}
///
@@ -152,6 +154,25 @@
return xmlSchema;
}
+ ///
+ /// Validates whether or not the provided XML document is empty.
+ ///
+ /// The XML document to validate.
+ /// The file path the XML document is loaded from.
+ /// Thrown when the provided XML document does not contain calculation items.
+ private static void ValidateNotEmpty(XDocument document, string xmlFilePath)
+ {
+ if (!document.Descendants()
+ .Any(d => d.Name == PipingConfigurationSchemaIdentifiers.CalculationElement
+ || d.Name == PipingConfigurationSchemaIdentifiers.FolderElement))
+ {
+ string message = new FileReaderErrorMessageBuilder(xmlFilePath)
+ .Build(Resources.PipingConfigurationReader_No_calculation_items_found);
+
+ throw new CriticalFileReadException(message);
+ }
+ }
+
private static IEnumerable ParseReadPipingCalculationItems(IEnumerable elements)
{
foreach (XElement element in elements)
Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Importers/PipingConfigurationImporterTest.cs
===================================================================
diff -u -r38d1c1735331bcf92ae5cd994d65751e678c5551 -rf01130d610fadc513e82f78093100fdd55c4b173
--- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Importers/PipingConfigurationImporterTest.cs (.../PipingConfigurationImporterTest.cs) (revision 38d1c1735331bcf92ae5cd994d65751e678c5551)
+++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Importers/PipingConfigurationImporterTest.cs (.../PipingConfigurationImporterTest.cs) (revision f01130d610fadc513e82f78093100fdd55c4b173)
@@ -85,7 +85,7 @@
// Setup
var calculationGroup = new CalculationGroup();
- string path = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Piping.IO, Path.Combine("PipingConfigurationReader", "validEmptyRoot.xml"));
+ string path = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Piping.IO, Path.Combine("PipingConfigurationReader", "validConfigurationNesting.xml"));
var importer = new PipingConfigurationImporter(path, calculationGroup);
importer.SetProgressChanged((description, step, steps) =>
{
Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Readers/PipingConfigurationReaderTest.cs
===================================================================
diff -u -r87f2a9ca76ec0a77b2dcc6bf69c6d9d8a3b29168 -rf01130d610fadc513e82f78093100fdd55c4b173
--- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Readers/PipingConfigurationReaderTest.cs (.../PipingConfigurationReaderTest.cs) (revision 87f2a9ca76ec0a77b2dcc6bf69c6d9d8a3b29168)
+++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Readers/PipingConfigurationReaderTest.cs (.../PipingConfigurationReaderTest.cs) (revision f01130d610fadc513e82f78093100fdd55c4b173)
@@ -228,7 +228,7 @@
public void Constructor_FileInUse_ThrowCriticalFileReadException()
{
// Setup
- string filePath = Path.Combine(testDirectoryPath, "validEmptyRoot.xml");
+ string filePath = Path.Combine(testDirectoryPath, "validConfigurationNesting.xml");
using (new FileStream(filePath, FileMode.Open))
{
@@ -277,17 +277,19 @@
}
[Test]
- public void Read_ValidConfigurationWithEmptyRoot_ReturnEmptyReadPipingCalculationItemsCollection()
+ public void Constructor_FileInvalidBasedOnEmptyRoot_ThrowCriticalFileReadException()
{
// Setup
- string filePath = Path.Combine(testDirectoryPath, "validEmptyRoot.xml");
- var pipingConfigurationReader = new PipingConfigurationReader(filePath);
+ string filePath = Path.Combine(testDirectoryPath, "invalidEmptyRoot.xml");
// Call
- IEnumerable readPipingCalculationItems = pipingConfigurationReader.Read();
+ TestDelegate call = () => new PipingConfigurationReader(filePath);
// Assert
- CollectionAssert.IsEmpty(readPipingCalculationItems);
+ string expectedMessage = $"Fout bij het lezen van bestand '{filePath}': het XML-document dat de configuratie" +
+ " voor de berekeningen beschrijft bevat geen berekeningselementen.";
+ var exception = Assert.Throws(call);
+ Assert.AreEqual(expectedMessage, exception.Message);
}
[Test]
Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/test-data/PipingConfigurationReader/invalidEmptyRoot.xml
===================================================================
diff -u
--- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/test-data/PipingConfigurationReader/invalidEmptyRoot.xml (revision 0)
+++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/test-data/PipingConfigurationReader/invalidEmptyRoot.xml (revision f01130d610fadc513e82f78093100fdd55c4b173)
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
Fisheye: Tag f01130d610fadc513e82f78093100fdd55c4b173 refers to a dead (removed) revision in file `Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/test-data/PipingConfigurationReader/validEmptyRoot.xml'.
Fisheye: No comparison available. Pass `N' to diff?