Index: Riskeer/Common/src/Riskeer.Common.Forms/Views/FailureMechanismResultView.cs =================================================================== diff -u -r2ba01760465d876044dc832ed6e023385d616086 -rc370b3c3bbc7c598f347a3f48a2dd0567dc18581 --- Riskeer/Common/src/Riskeer.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision 2ba01760465d876044dc832ed6e023385d616086) +++ Riskeer/Common/src/Riskeer.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision c370b3c3bbc7c598f347a3f48a2dd0567dc18581) @@ -140,7 +140,6 @@ DataGridViewControl.CellFormatting += HandleCellStyling; UpdateInternalViewData(); - UpdateFailureMechanismAssemblyControls(); } /// @@ -183,11 +182,12 @@ UpdateDataGridViewDataSource(); UpdateAssemblyData(); UpdateProbabilityResultTypeCombobox(); + UpdateFailureMechanismAssemblyControls(); } private void UpdateProbabilityResultTypeCombobox() { - probabilityResultTypeComboBox.Enabled = FailureMechanism.Sections.Any(); + probabilityResultTypeComboBox.Enabled = HasSections(); } private void RefreshDataGrid() @@ -217,11 +217,16 @@ private void UpdateFailureMechanismAssemblyControls() { - failureMechanismAssemblyProbabilityTextBox.Enabled = IsManualAssembly() && FailureMechanism.Sections.Any(); - failureMechanismAssemblyProbabilityTextBox.ReadOnly = !IsManualAssembly(); + failureMechanismAssemblyProbabilityTextBox.Enabled = IsManualAssembly() && HasSections(); + failureMechanismAssemblyProbabilityTextBox.ReadOnly = !IsManualAssembly() && !HasSections(); failureMechanismAssemblyProbabilityTextBox.Refresh(); } + private bool HasSections() + { + return FailureMechanism.Sections.Any(); + } + private void UpdateAssemblyData() { ClearErrorMessage(); @@ -374,8 +379,13 @@ failureMechanismAssemblyProbabilityTextBox.Text = ProbabilityFormattingHelper.FormatWithDiscreteNumbers(probability); FailureMechanismAssemblyResult assemblyResult = FailureMechanism.AssemblyResult; - if (assemblyResult.IsManualProbability()) + bool hasManualProbability = assemblyResult.IsManualProbability(); + if (hasManualProbability && !HasSections()) { + SetErrorMessage("Om een oordeel te kunnen invoeren moet voor het faalmechanisme een vakindeling zijn geimporteerd."); + } + else if (hasManualProbability) + { SetErrorMessage(FailureMechanismAssemblyResultValidationHelper.GetValidationError(assemblyResult)); } } Index: Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs =================================================================== diff -u -r2ba01760465d876044dc832ed6e023385d616086 -rc370b3c3bbc7c598f347a3f48a2dd0567dc18581 --- Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs (.../FailureMechanismResultViewTest.cs) (revision 2ba01760465d876044dc832ed6e023385d616086) +++ Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs (.../FailureMechanismResultViewTest.cs) (revision c370b3c3bbc7c598f347a3f48a2dd0567dc18581) @@ -828,6 +828,11 @@ ManualFailureMechanismAssemblyProbability = 0.1 } }; + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1"); + FailureMechanismTestHelper.SetSections(failureMechanism, new[] + { + section + }); using (TestFailureMechanismResultView view = ShowFailureMechanismResultView(failureMechanism.SectionResults, failureMechanism, assessmentSection, (fm, ass) => throw new AssemblyException(exceptionMessage))) { @@ -850,7 +855,32 @@ mocks.VerifyAll(); } + + [Test] + public void FailureMechanismResultViewWithoutSectionsAndProbabilityTypeManual_ReturnsCorrectError() + { + // Setup + const string expectedErrorMessage = "Om een oordeel te kunnen invoeren moet voor het faalmechanisme een vakindeling zijn geimporteerd."; + var failureMechanism = new TestFailureMechanism + { + AssemblyResult = + { + ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.Manual + } + }; + // Call + using (TestFailureMechanismResultView view = ShowFailureMechanismResultView(failureMechanism.SectionResults, failureMechanism)) + { + ErrorProvider errorProvider = GetErrorProvider(view); + TextBox failureMechanismAssemblyProbabilityTextBox = GetFailureMechanismAssemblyProbabilityTextBox(); + string errorMessage = errorProvider.GetError(failureMechanismAssemblyProbabilityTextBox); + + // Assert + Assert.AreEqual(expectedErrorMessage, errorMessage); + } + } + [Test] [TestCase(true)] [TestCase(false)] @@ -903,7 +933,7 @@ } [Test] - public void FailureMechanismResultView_WithoutSections_FailureMechanismAssemblyProbabilityTextBoxDisabled() + public void FailureMechanismResultView_WithoutSections_FailureMechanismAssemblyProbabilityTextBoxCorrectState() { // Setup var failureMechanism = new TestFailureMechanism(); @@ -915,14 +945,21 @@ TextBox textBox = GetFailureMechanismAssemblyProbabilityTextBox(); CollectionAssert.IsEmpty(failureMechanism.Sections); Assert.IsFalse(textBox.Enabled); + Assert.IsTrue(textBox.ReadOnly); } } [Test] - public void FailureMechanismResultView_WithSections_FailureMechanismAssemblyProbabilityTextBoxEnabled() + public void FailureMechanismResultView_WithSections_FailureMechanismAssemblyProbabilityTextBoxCorrectState() { // Setup - var failureMechanism = new TestFailureMechanism(); + var failureMechanism = new TestFailureMechanism + { + AssemblyResult = + { + ProbabilityResultType = FailureMechanismAssemblyProbabilityResultType.Manual + } + }; using (ShowFailureMechanismResultView(failureMechanism.SectionResults, failureMechanism)) { @@ -941,6 +978,7 @@ // Assert Assert.IsTrue(textBox.Enabled); + Assert.IsFalse(textBox.ReadOnly); } } @@ -1020,6 +1058,11 @@ ManualFailureMechanismAssemblyProbability = manualProbability } }; + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1"); + FailureMechanismTestHelper.SetSections(failureMechanism, new[] + { + section + }); failureMechanism.AssemblyResult.Attach(observer); using (TestFailureMechanismResultView view = ShowFailureMechanismResultView(failureMechanism.SectionResults, failureMechanism)) @@ -1066,6 +1109,11 @@ ManualFailureMechanismAssemblyProbability = manualProbability } }; + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1"); + FailureMechanismTestHelper.SetSections(failureMechanism, new[] + { + section + }); failureMechanism.AssemblyResult.Attach(observer); using (TestFailureMechanismResultView view = ShowFailureMechanismResultView(failureMechanism.SectionResults, failureMechanism))