Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs
===================================================================
diff -u -r602252658dcfe6cacca8ea7257323e560b9d1418 -r39fd57c75e24d3a6170b010861ed6ab47d1f2f42
--- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision 602252658dcfe6cacca8ea7257323e560b9d1418)
+++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision 39fd57c75e24d3a6170b010861ed6ab47d1f2f42)
@@ -1,4 +1,4 @@
-// Copyright (C) Stichting Deltares 2017. All rights reserved.
+// Copyright (C) Stichting Deltares 2017. All rights reserved.
//
// This file is part of Ringtoets.
//
@@ -167,6 +167,13 @@
}
///
+ /// Determines if the failure mechanism has section assembly results that are manually overwritten.
+ ///
+ /// true if the failure mechanism has section assembly results that are manually overwritten,
+ /// false otherwise.
+ protected abstract bool HasManualAssemblyResults();
+
+ ///
/// Updates the data source of the data grid view with the current known failure mechanism section results.
///
private void UpdateDataGridViewDataSource()
@@ -201,6 +208,11 @@
{
FailureMechanismAssemblyResultControl.SetError(e.Message);
}
+
+ if (HasManualAssemblyResults())
+ {
+ FailureMechanismAssemblyResultControl.SetWarning("Toetsoordeel is (deels) gebaseerd op handmatig overschreven toetsoordelen.");
+ }
}
private void InitializeFailureMechanismAssemblyResultPanel()
Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs
===================================================================
diff -u -r6db413e69ecbda9e1be48e269f8fa1a16fff1275 -r39fd57c75e24d3a6170b010861ed6ab47d1f2f42
--- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs (.../FailureMechanismResultViewTest.cs) (revision 6db413e69ecbda9e1be48e269f8fa1a16fff1275)
+++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs (.../FailureMechanismResultViewTest.cs) (revision 39fd57c75e24d3a6170b010861ed6ab47d1f2f42)
@@ -353,6 +353,65 @@
}
[Test]
+ public void GivenFailureMechanismResultsView_WhenHasManualAssemblyResultsTrueDuringUpdate_ThenWarningSet()
+ {
+ // Given
+ TestFailureMechanismSectionResult sectionResult = FailureMechanismSectionResultTestFactory.CreateFailureMechanismSectionResult();
+
+ var sectionResults = new ObservableList
+ {
+ sectionResult
+ };
+
+ using (TestFailureMechanismResultView view = ShowFailureMechanismResultsView(sectionResults))
+ {
+ // Precondition
+ TestAssemblyResultControl resultControl = GetFailureMechanismAssemblyCategoryGroupControl();
+ ErrorProvider warningProvider = GetWarningProvider(resultControl);
+ Assert.IsEmpty(warningProvider.GetError(resultControl));
+
+ // When
+ view.HasManualSectionAssemblyResults = true;
+ sectionResult.NotifyObservers();
+
+ // Then
+ Assert.AreEqual("Toetsoordeel is (deels) gebaseerd op handmatig overschreven toetsoordelen.", warningProvider.GetError(resultControl));
+ }
+ }
+
+ [Test]
+ public void GivenFailureMechanismResultsView_WhenExceptionThrownAndHasManualAssemblyResultsTrueDuringUpdate_ThenMessagesSet()
+ {
+ // Given
+ TestFailureMechanismSectionResult sectionResult = FailureMechanismSectionResultTestFactory.CreateFailureMechanismSectionResult();
+
+ var sectionResults = new ObservableList
+ {
+ sectionResult
+ };
+
+ using (TestFailureMechanismResultView view = ShowFailureMechanismResultsView(sectionResults))
+ {
+ // Precondition
+ TestAssemblyResultControl resultControl = GetFailureMechanismAssemblyCategoryGroupControl();
+ ErrorProvider errorProvider = GetErrorProvider(resultControl);
+ Assert.IsEmpty(errorProvider.GetError(resultControl));
+
+ ErrorProvider warningProvider = GetWarningProvider(resultControl);
+ Assert.IsEmpty(warningProvider.GetError(resultControl));
+
+ // When
+ view.HasManualSectionAssemblyResults = true;
+ view.ThrowExceptionOnUpdate = true;
+ sectionResult.NotifyObservers();
+
+ // Then
+ Assert.AreEqual("Message", errorProvider.GetError(resultControl));
+ Assert.AreEqual("Toetsoordeel is (deels) gebaseerd op handmatig overschreven toetsoordelen.", warningProvider.GetError(resultControl));
+ }
+ }
+
+ [Test]
public void GivenFailureMechanismResultsView_WhenFailureMechanismAssemblyControlUpdated_ThenDataCleared()
{
// Given
@@ -377,7 +436,7 @@
}
[Test]
- public void GivenFailureMechanismResultsViewWithFailureMechanismAssemblyError_WhenNoExceptionThrownDuringUpdate_ThenErrorCleared()
+ public void GivenFailureMechanismResultsViewWithMessages_WhenNoExceptionThrownAndManualSectionAssemblyResultsFalseDuringUpdate_ThenMessagesCleared()
{
// Given
TestFailureMechanismSectionResult sectionResult = FailureMechanismSectionResultTestFactory.CreateFailureMechanismSectionResult();
@@ -390,19 +449,25 @@
using (TestFailureMechanismResultView view = ShowFailureMechanismResultsView(sectionResults))
{
view.ThrowExceptionOnUpdate = true;
+ view.HasManualSectionAssemblyResults = true;
sectionResult.NotifyObservers();
// Precondition
TestAssemblyResultControl resultControl = GetFailureMechanismAssemblyCategoryGroupControl();
ErrorProvider errorProvider = GetErrorProvider(resultControl);
Assert.AreEqual("Message", errorProvider.GetError(resultControl));
+ ErrorProvider warningProvider = GetWarningProvider(resultControl);
+ Assert.AreEqual("Toetsoordeel is (deels) gebaseerd op handmatig overschreven toetsoordelen.", warningProvider.GetError(resultControl));
+
// When
view.ThrowExceptionOnUpdate = false;
+ view.HasManualSectionAssemblyResults = false;
sectionResult.NotifyObservers();
// Then
Assert.IsEmpty(errorProvider.GetError(resultControl));
+ Assert.IsEmpty(warningProvider.GetError(resultControl));
}
}
@@ -490,6 +555,11 @@
return TypeUtils.GetField(resultControl, "errorProvider");
}
+ private static ErrorProvider GetWarningProvider(TestAssemblyResultControl resultControl)
+ {
+ return TypeUtils.GetField(resultControl, "warningProvider");
+ }
+
private static TestAssemblyResultControl GetFailureMechanismAssemblyCategoryGroupControl()
{
return (TestAssemblyResultControl) new ControlTester("AssemblyResultControl").TheObject;
@@ -517,6 +587,8 @@
public bool AssemblyResultControlUpdated { get; set; }
+ public bool HasManualSectionAssemblyResults { private get; set; }
+
protected override FailureMechanismSectionResultRow CreateFailureMechanismSectionResultRow(
FailureMechanismSectionResult sectionResult)
{
@@ -537,6 +609,11 @@
AssemblyResultControlUpdated = true;
}
+
+ protected override bool HasManualAssemblyResults()
+ {
+ return HasManualSectionAssemblyResults;
+ }
}
private class TestAssemblyResultControl : AssemblyResultControl {}