Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableTotalAssemblyResult.cs =================================================================== diff -u -rb47ce984073ce70ee97fac650ffb22e8a82fb4d4 -r9c2c56fafb538c2367a09f52ff602d2bfba82f70 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableTotalAssemblyResult.cs (.../SerializableTotalAssemblyResult.cs) (revision b47ce984073ce70ee97fac650ffb22e8a82fb4d4) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableTotalAssemblyResult.cs (.../SerializableTotalAssemblyResult.cs) (revision 9c2c56fafb538c2367a09f52ff602d2bfba82f70) @@ -22,6 +22,7 @@ using System; using System.Xml.Serialization; using Ringtoets.AssemblyTool.IO.Model.DataTypes; +using Ringtoets.AssemblyTool.IO.Model.Helpers; namespace Ringtoets.AssemblyTool.IO.Model { @@ -44,19 +45,20 @@ /// The assembly result for failure mechanisms with a probability. /// The assembly result for failure mechanisms without a probability. /// The assembly result for the assessment section. - /// Thrown when is null or empty. - /// Thrown when any parameter except is null. + /// Thrown when any parameter is null. + /// Thrown when is invalid. public SerializableTotalAssemblyResult(string id, SerializableAssessmentProcess assessmentProcess, SerializableFailureMechanismAssemblyResult assemblyResultWithoutProbability, SerializableFailureMechanismAssemblyResult assemblyResultWithProbability, SerializableAssessmentSectionAssemblyResult assessmentSectionAssemblyResult) : this() { - if (string.IsNullOrEmpty(id)) + if (!IdValidator.Validate(id)) { - throw new ArgumentException($@"'{nameof(id)}' must have a value."); + throw new ArgumentException($@"'{nameof(id)}' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."); } + if (assessmentProcess == null) { throw new ArgumentNullException(nameof(assessmentProcess)); Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableTotalAssemblyResultTest.cs =================================================================== diff -u -ra30b67748bed77736f62b6b3c30c82649bb9cf4e -r9c2c56fafb538c2367a09f52ff602d2bfba82f70 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableTotalAssemblyResultTest.cs (.../SerializableTotalAssemblyResultTest.cs) (revision a30b67748bed77736f62b6b3c30c82649bb9cf4e) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableTotalAssemblyResultTest.cs (.../SerializableTotalAssemblyResultTest.cs) (revision 9c2c56fafb538c2367a09f52ff602d2bfba82f70) @@ -61,19 +61,35 @@ } [Test] - [TestCase(null)] + public void Constructor_IdNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => new SerializableTotalAssemblyResult(null, + new SerializableAssessmentProcess(), + new SerializableFailureMechanismAssemblyResult(), + new SerializableFailureMechanismAssemblyResult(), + new SerializableAssessmentSectionAssemblyResult()); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("id", exception.ParamName); + } + + [Test] + [TestCase(" ")] [TestCase("")] - public void Constructor_IdInvalid_ThrowsArgumentException(string id) + [TestCase(" InvalidId")] + public void Constructor_InvalidId_ThrowsArgumentNullException(string invalidId) { // Call - TestDelegate call = () => new SerializableTotalAssemblyResult(id, + TestDelegate call = () => new SerializableTotalAssemblyResult(invalidId, new SerializableAssessmentProcess(), new SerializableFailureMechanismAssemblyResult(), new SerializableFailureMechanismAssemblyResult(), new SerializableAssessmentSectionAssemblyResult()); // Assert - const string expectedMessage = "'id' must have a value."; + const string expectedMessage = "'id' must have a value and consist only of alphanumerical characters, '-', '_' or '.'."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); } @@ -143,7 +159,7 @@ // Setup const string id = "id"; - var assessmentProcess = new SerializableAssessmentProcess("process id", + var assessmentProcess = new SerializableAssessmentProcess("processId", new SerializableAssessmentSection()); var resultWithoutProbability = new SerializableFailureMechanismAssemblyResult(); var resultWithProbability = new SerializableFailureMechanismAssemblyResult();