Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/SoilProfile/StochasticSoilModelReaderTest.cs =================================================================== diff -u -rda8e78c538a77ceea5a0709122e9e28ef573507b -rc0bfe8e2e80f2b7430009493647a04c5c75cfcd3 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/SoilProfile/StochasticSoilModelReaderTest.cs (.../StochasticSoilModelReaderTest.cs) (revision da8e78c538a77ceea5a0709122e9e28ef573507b) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/SoilProfile/StochasticSoilModelReaderTest.cs (.../StochasticSoilModelReaderTest.cs) (revision c0bfe8e2e80f2b7430009493647a04c5c75cfcd3) @@ -33,6 +33,8 @@ public class StochasticSoilModelReaderTest { private readonly string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, nameof(StochasticSoilModelReader)); + private readonly string constraintsReaderTestDataPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, nameof(SoilDatabaseConstraintsReader)); + private readonly string versionReaderTestDataPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, nameof(SoilDatabaseVersionReader)); [Test] public void Constructor_NonExistingPath_ThrowsCriticalFileReadException() @@ -111,7 +113,7 @@ public void Initialize_IncorrectVersion_ThrowsCriticalFileReadException() { // Setup - string dbFile = Path.Combine(testDataPath, "incorrectVersion.soil"); + string dbFile = Path.Combine(versionReaderTestDataPath, "incorrectVersion.soil"); using (var reader = new StochasticSoilModelReader(dbFile)) { @@ -130,5 +132,48 @@ Assert.IsTrue(TestHelper.CanOpenFileForWrite(dbFile)); } + + [Test] + public void Initialize_InvalidSchemaThatPassesVersionValidation_ThrowsCriticalFileReadException() + { + // Setup + string dbFile = Path.Combine(constraintsReaderTestDataPath, "missingStochasticSoilModelTable.soil"); + + using (var reader = new StochasticSoilModelReader(dbFile)) + { + // Call + TestDelegate test = () => reader.Initialize(); + + // Assert + var exception = Assert.Throws(test); + + string expectedMessage = new FileReaderErrorMessageBuilder(dbFile).Build( + "Kan geen ondergrondmodellen lezen. Mogelijk bestaat de 'StochasticSoilModel' tabel niet."); + Assert.AreEqual(expectedMessage, exception.Message); + } + + Assert.IsTrue(TestHelper.CanOpenFileForWrite(dbFile)); + } + + [Test] + public void Initialize_NonUniqueSoilModelNames_ThrowsCriticalFileReadException() + { + // Setup + string dbFile = Path.Combine(constraintsReaderTestDataPath, "nonUniqueSoilModelNames.soil"); + + using (var reader = new StochasticSoilModelReader(dbFile)) + { + // Call + TestDelegate test = () => reader.Initialize(); + + // Assert + var exception = Assert.Throws(test); + + string expectedMessage = new FileReaderErrorMessageBuilder(dbFile).Build("Namen van ondergrondmodellen zijn niet uniek."); + Assert.AreEqual(expectedMessage, exception.Message); + } + + Assert.IsTrue(TestHelper.CanOpenFileForWrite(dbFile)); + } } } \ No newline at end of file