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();