Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanismSectionCollection.cs
===================================================================
diff -u -ra30b67748bed77736f62b6b3c30c82649bb9cf4e -r5a7fbd8f43c609641b0a1398e2cab204a46542bf
--- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanismSectionCollection.cs (.../SerializableFailureMechanismSectionCollection.cs) (revision a30b67748bed77736f62b6b3c30c82649bb9cf4e)
+++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanismSectionCollection.cs (.../SerializableFailureMechanismSectionCollection.cs) (revision 5a7fbd8f43c609641b0a1398e2cab204a46542bf)
@@ -21,6 +21,7 @@
using System;
using System.Xml.Serialization;
+using Ringtoets.AssemblyTool.IO.Model.Helpers;
namespace Ringtoets.AssemblyTool.IO.Model
{
@@ -40,8 +41,8 @@
///
/// The unique ID of the sections.
/// The failure mechanism the sections belong to.
- /// Thrown when is null or empty.
- /// Thrown when parameter is null.
+ /// Thrown when any parameter is null.
+ /// Thrown when is invalid.
public SerializableFailureMechanismSectionCollection(string id,
SerializableFailureMechanism failureMechanism)
: this(id)
@@ -59,8 +60,8 @@
///
/// The unique ID of the sections.
/// The total assembly result the sections belong to.
- /// Thrown when is null or empty.
- /// Thrown when parameter is null.
+ /// Thrown when any parameter is null.
+ /// Thrown when is invalid.
public SerializableFailureMechanismSectionCollection(string id,
SerializableTotalAssemblyResult totalAssemblyResult)
: this(id)
@@ -77,12 +78,13 @@
/// Creates a new instance of .
///
/// The unique ID of the sections.
- /// Thrown when is null or empty.
+ /// Thrown when is null.
+ /// Thrown when is invalid.
private SerializableFailureMechanismSectionCollection(string id)
{
- 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 '.'.");
}
Id = id;
Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismSectionCollectionTest.cs
===================================================================
diff -u -ra30b67748bed77736f62b6b3c30c82649bb9cf4e -r5a7fbd8f43c609641b0a1398e2cab204a46542bf
--- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismSectionCollectionTest.cs (.../SerializableFailureMechanismSectionCollectionTest.cs) (revision a30b67748bed77736f62b6b3c30c82649bb9cf4e)
+++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismSectionCollectionTest.cs (.../SerializableFailureMechanismSectionCollectionTest.cs) (revision 5a7fbd8f43c609641b0a1398e2cab204a46542bf)
@@ -55,16 +55,29 @@
}
[Test]
- [TestCase(null)]
+ public void ConstructorWithFailureMechanism_IdNull_ThrowsArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => new SerializableFailureMechanismSectionCollection(null,
+ new SerializableFailureMechanism());
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("id", exception.ParamName);
+ }
+
+ [Test]
+ [TestCase(" ")]
[TestCase("")]
- public void ConstructorWithFailureMechanism_IdInvalid_ThrowsArgumentException(string id)
+ [TestCase(" InvalidId")]
+ public void ConstructorWithFailureMechanism_InvalidId_ThrowsArgumentNullException(string invalidId)
{
// Call
- TestDelegate call = () => new SerializableFailureMechanismSectionCollection(id,
+ TestDelegate call = () => new SerializableFailureMechanismSectionCollection(invalidId,
new SerializableFailureMechanism());
// 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);
}
@@ -84,36 +97,49 @@
public void ConstructorWithFailureMechanism_WithValidData_ReturnsExpectedValues()
{
// Setup
- const string id = "section id";
+ const string id = "collectionId";
var random = new Random(39);
- var failureMechanism = new SerializableFailureMechanism("fm id",
+ var failureMechanism = new SerializableFailureMechanism("failureMechanismId",
new SerializableTotalAssemblyResult(),
random.NextEnumValue(),
random.NextEnumValue(),
new SerializableFailureMechanismAssemblyResult());
// Call
- var sections = new SerializableFailureMechanismSectionCollection(id,
- failureMechanism);
+ var collection = new SerializableFailureMechanismSectionCollection(id,
+ failureMechanism);
// Assert
- Assert.AreEqual(id, sections.Id);
- Assert.AreEqual(failureMechanism.Id, sections.FailureMechanismId);
- Assert.IsNull(sections.TotalAssemblyResultId);
+ Assert.AreEqual(id, collection.Id);
+ Assert.AreEqual(failureMechanism.Id, collection.FailureMechanismId);
+ Assert.IsNull(collection.TotalAssemblyResultId);
}
[Test]
- [TestCase(null)]
+ public void ConstructorWithTotalAssemblyResult_IdNull_ThrowsArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => new SerializableFailureMechanismSectionCollection(null,
+ new SerializableTotalAssemblyResult());
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("id", exception.ParamName);
+ }
+
+ [Test]
+ [TestCase(" ")]
[TestCase("")]
- public void ConstructorWithTotalAssemblyResult_IdInvalid_ThrowsArgumentException(string id)
+ [TestCase(" InvalidId")]
+ public void ConstructorWithTotalAssemblyResult_InvalidId_ThrowsArgumentNullException(string invalidId)
{
// Call
- TestDelegate call = () => new SerializableFailureMechanismSectionCollection(id,
+ TestDelegate call = () => new SerializableFailureMechanismSectionCollection(invalidId,
new SerializableTotalAssemblyResult());
// 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);
}
@@ -133,22 +159,22 @@
public void ConstructorWithTotalAssemblyResult_WithValidData_ReturnsExpectedValues()
{
// Setup
- const string id = "section id";
+ const string id = "collectionId";
- var totalAssemblyResult = new SerializableTotalAssemblyResult("result id",
+ var totalAssemblyResult = new SerializableTotalAssemblyResult("resultId",
new SerializableAssessmentProcess(),
new SerializableFailureMechanismAssemblyResult(),
new SerializableFailureMechanismAssemblyResult(),
new SerializableAssessmentSectionAssemblyResult());
// Call
- var sections = new SerializableFailureMechanismSectionCollection(id,
- totalAssemblyResult);
+ var collection = new SerializableFailureMechanismSectionCollection(id,
+ totalAssemblyResult);
// Assert
- Assert.AreEqual(id, sections.Id);
- Assert.AreEqual(totalAssemblyResult.Id, sections.TotalAssemblyResultId);
- Assert.IsNull(sections.FailureMechanismId);
+ Assert.AreEqual(id, collection.Id);
+ Assert.AreEqual(totalAssemblyResult.Id, collection.TotalAssemblyResultId);
+ Assert.IsNull(collection.FailureMechanismId);
}
}
}
\ No newline at end of file