Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanism.cs =================================================================== diff -u -ra30b67748bed77736f62b6b3c30c82649bb9cf4e -r687840aefa58fd0ebd096f2a600ae0c36caadd76 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanism.cs (.../SerializableFailureMechanism.cs) (revision a30b67748bed77736f62b6b3c30c82649bb9cf4e) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanism.cs (.../SerializableFailureMechanism.cs) (revision 687840aefa58fd0ebd096f2a600ae0c36caadd76) @@ -23,6 +23,7 @@ using System.Xml.Serialization; using Ringtoets.AssemblyTool.IO.Model.DataTypes; using Ringtoets.AssemblyTool.IO.Model.Enums; +using Ringtoets.AssemblyTool.IO.Model.Helpers; using Ringtoets.AssemblyTool.IO.Properties; namespace Ringtoets.AssemblyTool.IO.Model @@ -49,18 +50,17 @@ /// The type of the failure mechanism. /// The group of the failure mechanism. /// The total failure mechanism assembly result. - /// Thrown when is null or empty. - /// Thrown when - /// or is null. + /// Thrown when any parameter is null. + /// Thrown when is invalid. public SerializableFailureMechanism(string id, SerializableTotalAssemblyResult totalAssemblyResult, SerializableFailureMechanismType failureMechanismType, SerializableFailureMechanismGroup failureMechanismGroup, SerializableFailureMechanismAssemblyResult failureMechanismAssemblyResult) : 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 (totalAssemblyResult == null) Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismTest.cs =================================================================== diff -u -ra30b67748bed77736f62b6b3c30c82649bb9cf4e -r687840aefa58fd0ebd096f2a600ae0c36caadd76 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismTest.cs (.../SerializableFailureMechanismTest.cs) (revision a30b67748bed77736f62b6b3c30c82649bb9cf4e) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismTest.cs (.../SerializableFailureMechanismTest.cs) (revision 687840aefa58fd0ebd096f2a600ae0c36caadd76) @@ -65,22 +65,41 @@ } [Test] - [TestCase(null)] + public void Constructor_IdNull_ThrowsArgumentNullException() + { + // Setup + var random = new Random(39); + + // Call + TestDelegate call = () => new SerializableFailureMechanism(null, + new SerializableTotalAssemblyResult(), + random.NextEnumValue(), + random.NextEnumValue(), + new SerializableFailureMechanismAssemblyResult()); + + // 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) { // Setup var random = new Random(39); // Call - TestDelegate call = () => new SerializableFailureMechanism(id, + TestDelegate call = () => new SerializableFailureMechanism(invalidId, new SerializableTotalAssemblyResult(), random.NextEnumValue(), random.NextEnumValue(), new SerializableFailureMechanismAssemblyResult()); // 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); } @@ -124,8 +143,8 @@ public void Constructor_WithValidData_ReturnsExpectedValues() { // Setup - const string id = "section id"; - const string totalResultId = "section id"; + const string id = "sectionId"; + const string totalResultId = "totalResultId"; var random = new Random(39); var type = random.NextEnumValue();