Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanismSections.cs =================================================================== diff -u -rb0b566f39d1154e82c2cc098318ad18bf70342e8 -rc484779318d146c81093706412e60860ee423295 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanismSections.cs (.../SerializableFailureMechanismSections.cs) (revision b0b566f39d1154e82c2cc098318ad18bf70342e8) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanismSections.cs (.../SerializableFailureMechanismSections.cs) (revision c484779318d146c81093706412e60860ee423295) @@ -43,19 +43,47 @@ /// Thrown when any parameter is null. public SerializableFailureMechanismSections(string id, SerializableFailureMechanism failureMechanism) + : this(id) { - if (id == null) + if (failureMechanism == null) { - throw new ArgumentNullException(nameof(id)); + throw new ArgumentNullException(nameof(failureMechanism)); } - if (failureMechanism == null) + FailureMechanismId = failureMechanism.Id; + } + + /// + /// Creates a new instance of . + /// + /// The unique ID of the sections. + /// The total assembly result the sections belong to. + /// Thrown when any parameter is null. + public SerializableFailureMechanismSections(string id, + SerializableTotalAssemblyResult totalAssemblyResult) + : this(id) + { + if (totalAssemblyResult == null) { - throw new ArgumentNullException(nameof(failureMechanism)); + throw new ArgumentNullException(nameof(totalAssemblyResult)); } + TotalAssemblyResultId = totalAssemblyResult.Id; + } + + /// + /// Creates a new instance of . + /// + /// The unique ID of the sections. + /// Thrown when is null. + private SerializableFailureMechanismSections(string id) + { + if (id == null) + { + throw new ArgumentNullException(nameof(id)); + } + Id = id; - FailureMechanismId = failureMechanism.Id; } /// @@ -69,5 +97,11 @@ /// [XmlAttribute(AssemblyXmlIdentifiers.FailureMechanismIdRef)] public string FailureMechanismId { get; set; } + + /// + /// Gets or sets the ID of the parent total assembly result. + /// + [XmlAttribute(AssemblyXmlIdentifiers.TotalAssemblyResultIdRef)] + public string TotalAssemblyResultId { get; set; } } } \ No newline at end of file Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableAssemblyTest.cs =================================================================== diff -u -r5e2248b589fcb4b39e7ff664cd11a200b08daa28 -rc484779318d146c81093706412e60860ee423295 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableAssemblyTest.cs (.../SerializableAssemblyTest.cs) (revision 5e2248b589fcb4b39e7ff664cd11a200b08daa28) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableAssemblyTest.cs (.../SerializableAssemblyTest.cs) (revision c484779318d146c81093706412e60860ee423295) @@ -237,7 +237,7 @@ }, new SerializableFailureMechanismSectionAssemblyResult(SerializableAssemblyMethod.WBI0A1, SerializableAssessmentLevel.CombinedAssessment, SerializableFailureMechanismSectionCategoryGroup.IIIv)); - var sections2 = new SerializableFailureMechanismSections("vakindeling_gecombineerd", failureMechanism1); + var sections2 = new SerializableFailureMechanismSections("vakindeling_gecombineerd", totalAssemblyResult); var section2 = new SerializableFailureMechanismSection("vak_gecombineerd_1", sections2, 0.12, Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismSectionsTest.cs =================================================================== diff -u -rc37e7aa9fdd38a0476335e056b33c583486ed1af -rc484779318d146c81093706412e60860ee423295 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismSectionsTest.cs (.../SerializableFailureMechanismSectionsTest.cs) (revision c37e7aa9fdd38a0476335e056b33c583486ed1af) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismSectionsTest.cs (.../SerializableFailureMechanismSectionsTest.cs) (revision c484779318d146c81093706412e60860ee423295) @@ -42,15 +42,18 @@ Assert.IsInstanceOf(sections); Assert.IsNull(sections.Id); Assert.IsNull(sections.FailureMechanismId); + Assert.IsNull(sections.TotalAssemblyResultId); SerializableAttributeTestHelper.AssertXmlAttributeAttribute( nameof(SerializableFailureMechanismSections.Id), "VakindelingID"); SerializableAttributeTestHelper.AssertXmlAttributeAttribute( nameof(SerializableFailureMechanismSections.FailureMechanismId), "ToetsspoorIDRef"); + SerializableAttributeTestHelper.AssertXmlAttributeAttribute( + nameof(SerializableFailureMechanismSections.TotalAssemblyResultId), "VeiligheidsoordeelIDRef"); } [Test] - public void Constructor_IdNull_ThrowsArgumentNullException() + public void ConstructorWithFailureMechanism_IdNull_ThrowsArgumentNullException() { // Call TestDelegate call = () => new SerializableFailureMechanismSections(null, @@ -62,19 +65,19 @@ } [Test] - public void Constructor_FailureMechanismNull_ThrowsArgumentNullException() + public void ConstructorWithFailureMechanism_FailureMechanismNull_ThrowsArgumentNullException() { // Call TestDelegate call = () => new SerializableFailureMechanismSections("id", - null); + (SerializableFailureMechanism) null); // Assert var exception = Assert.Throws(call); Assert.AreEqual("failureMechanism", exception.ParamName); } [Test] - public void Constructor_WithValidData_ReturnsExpectedValues() + public void ConstructorWithFailureMechanism_WithValidData_ReturnsExpectedValues() { // Setup const string id = "section id"; @@ -93,6 +96,53 @@ // Assert Assert.AreEqual(id, sections.Id); Assert.AreEqual(failureMechanism.Id, sections.FailureMechanismId); + Assert.IsNull(sections.TotalAssemblyResultId); } + + [Test] + public void ConstructorWithTotalAssemblyResult_IdNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => new SerializableFailureMechanismSections(null, + new SerializableTotalAssemblyResult()); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("id", exception.ParamName); + } + + [Test] + public void ConstructorWithTotalAssemblyResult_FailureMechanismNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => new SerializableFailureMechanismSections("id", + (SerializableTotalAssemblyResult) null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("totalAssemblyResult", exception.ParamName); + } + + [Test] + public void ConstructorWithTotalAssemblyResult_WithValidData_ReturnsExpectedValues() + { + // Setup + const string id = "section id"; + + var totalAssemblyResult = new SerializableTotalAssemblyResult("result id", + new SerializableAssessmentProcess(), + new SerializableFailureMechanismAssemblyResult(), + new SerializableFailureMechanismAssemblyResult(), + new SerializableAssessmentSectionAssemblyResult()); + + // Call + var sections = new SerializableFailureMechanismSections(id, + totalAssemblyResult); + + // Assert + Assert.AreEqual(id, sections.Id); + Assert.AreEqual(totalAssemblyResult.Id, sections.TotalAssemblyResultId); + Assert.IsNull(sections.FailureMechanismId); + } } } \ No newline at end of file