Index: Application/Riskeer/src/Application.Riskeer/App.xaml.cs =================================================================== diff -u -rb41da4f0fb44af1cd286c3d77668280497ec8199 -r356d30ff0493a3b0174f61aadbca0cbbf1f8d962 --- Application/Riskeer/src/Application.Riskeer/App.xaml.cs (.../App.xaml.cs) (revision b41da4f0fb44af1cd286c3d77668280497ec8199) +++ Application/Riskeer/src/Application.Riskeer/App.xaml.cs (.../App.xaml.cs) (revision 356d30ff0493a3b0174f61aadbca0cbbf1f8d962) @@ -131,7 +131,7 @@ SupportEmailAddressUrl = "https://www.helpdeskwater.nl/onderwerpen/applicaties-modellen/applicaties-per/omgevings/omgevings/riskeer/contact/vraag-ringtoets/", SupportPhoneNumberUrl = "https://www.helpdeskwater.nl/secundaire-navigatie/contact/", ManualFilePath = "Gebruikershandleiding Riskeer 21.1.1.pdf", - OnNewProjectCreatedAction = (g, project) => new AssessmentSectionFromFileHandler(g.ActiveParentWindow, g.DocumentViewController).AddAssessmentSectionFromFile((RiskeerProject) project) + OnNewProjectCreatedAction = (g, project) => new AssessmentSectionFromFileHandler(g.ActiveParentWindow, g.DocumentViewController).GetAssessmentSectionFromFile((RiskeerProject) project) }; var mainWindow = new MainWindow(); Index: Riskeer/Integration/src/Riskeer.Integration.Plugin/Handlers/AssessmentSectionFromFileHandler.cs =================================================================== diff -u -r77da36c3f350a8b9ffe4c419ce00843569271f24 -r356d30ff0493a3b0174f61aadbca0cbbf1f8d962 --- Riskeer/Integration/src/Riskeer.Integration.Plugin/Handlers/AssessmentSectionFromFileHandler.cs (.../AssessmentSectionFromFileHandler.cs) (revision 77da36c3f350a8b9ffe4c419ce00843569271f24) +++ Riskeer/Integration/src/Riskeer.Integration.Plugin/Handlers/AssessmentSectionFromFileHandler.cs (.../AssessmentSectionFromFileHandler.cs) (revision 356d30ff0493a3b0174f61aadbca0cbbf1f8d962) @@ -79,27 +79,39 @@ this.viewController = viewController; } - public void AddAssessmentSectionFromFile(RiskeerProject project) + public void DoPostHandleActions(AssessmentSection assessmentSection) { - if (project == null) + if (assessmentSection == null) { - throw new ArgumentNullException(nameof(project)); + throw new ArgumentNullException(nameof(assessmentSection)); } - if (!TryReadSourceFiles()) - { - return; - } + viewController.OpenViewForData(assessmentSection); + } - AssessmentSection assessmentSection = GetAssessmentSectionFromDialog(); - if (assessmentSection == null) + public AssessmentSection GetAssessmentSectionFromFile(RiskeerProject project) + { + if (project == null) { - return; + throw new ArgumentNullException(nameof(project)); } - SetAssessmentSectionToProject(project, assessmentSection); + TryReadSourceFiles(); + return GetAssessmentSectionFromDialog(); } + #region Set AssessmentSection to Project + + private static void SetFailureMechanismsValueN(AssessmentSection assessmentSection, int n) + { + var roundedN = (RoundedDouble) n; + assessmentSection.GrassCoverErosionInwards.GeneralInput.N = roundedN; + assessmentSection.GrassCoverErosionOutwards.GeneralInput.N = roundedN; + assessmentSection.HeightStructures.GeneralInput.N = roundedN; + } + + #endregion + #region Dialog private AssessmentSection GetAssessmentSectionFromDialog() @@ -129,32 +141,6 @@ #endregion - #region Set AssessmentSection to Project - - private static void SetFailureMechanismsValueN(AssessmentSection assessmentSection, int n) - { - var roundedN = (RoundedDouble) n; - assessmentSection.GrassCoverErosionInwards.GeneralInput.N = roundedN; - assessmentSection.GrassCoverErosionOutwards.GeneralInput.N = roundedN; - assessmentSection.HeightStructures.GeneralInput.N = roundedN; - } - - private void SetAssessmentSectionToProject(RiskeerProject riskeerProject, AssessmentSection assessmentSection) - { - assessmentSection.Name = GetUniqueForAssessmentSectionName(riskeerProject.AssessmentSections, assessmentSection.Name); - riskeerProject.AssessmentSections.Add(assessmentSection); - riskeerProject.NotifyObservers(); - - viewController.OpenViewForData(assessmentSection); - } - - private static string GetUniqueForAssessmentSectionName(IEnumerable assessmentSections, string baseName) - { - return NamingHelper.GetUniqueName(assessmentSections, baseName, a => a.Name); - } - - #endregion - #region Create AssessmentSection /// @@ -297,17 +283,15 @@ ProbabilityFormattingHelper.Format(signalingNorm), normValidityRange.ToString(FormattableConstants.ShowAtLeastOneDecimal, CultureInfo.CurrentCulture)); - log.Error(message, exception); + throw new CriticalFileValidationException(message, exception); } - - return null; } #endregion #region Validators - private bool TryReadSourceFiles() + private void TryReadSourceFiles() { ReadAssessmentSectionSettings(); @@ -318,16 +302,8 @@ catch (CriticalFileValidationException exception) { MessageBox.Show(exception.Message, BaseResources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); - log.Error(exception.Message, exception.InnerException); - return false; + throw; } - catch (CriticalFileReadException exception) - { - log.Error(exception.Message, exception.InnerException); - return false; - } - - return true; } /// Index: Riskeer/Integration/src/Riskeer.Integration.Plugin/Handlers/IAssessmentSectionFromFileHandler.cs =================================================================== diff -u -r77da36c3f350a8b9ffe4c419ce00843569271f24 -r356d30ff0493a3b0174f61aadbca0cbbf1f8d962 --- Riskeer/Integration/src/Riskeer.Integration.Plugin/Handlers/IAssessmentSectionFromFileHandler.cs (.../IAssessmentSectionFromFileHandler.cs) (revision 77da36c3f350a8b9ffe4c419ce00843569271f24) +++ Riskeer/Integration/src/Riskeer.Integration.Plugin/Handlers/IAssessmentSectionFromFileHandler.cs (.../IAssessmentSectionFromFileHandler.cs) (revision 356d30ff0493a3b0174f61aadbca0cbbf1f8d962) @@ -21,24 +21,25 @@ using System; using Core.Common.Base.Data; -using Riskeer.Common.Data.AssessmentSection; +using Riskeer.Integration.Data; namespace Riskeer.Integration.Plugin.Handlers { /// - /// Interface for handling adding to a . + /// Interface for handling adding to a . /// /// The type of project. public interface IAssessmentSectionFromFileHandler where TProject : IProject { /// - /// Displays available objects to the user and asks to select one. - /// The selected , if any, will be added to the . + /// Displays available objects to the user and asks to select one. + /// The selected , if any, will be returned. /// - /// The project to add the to. + /// The project to add the to. + /// The selected . /// Thrown when /// is null. - void AddAssessmentSectionFromFile(TProject project); + AssessmentSection GetAssessmentSectionFromFile(TProject project); } } \ No newline at end of file Index: Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/AssessmentSectionFromFileHandlerTest.cs =================================================================== diff -u -r77da36c3f350a8b9ffe4c419ce00843569271f24 -r356d30ff0493a3b0174f61aadbca0cbbf1f8d962 --- Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/AssessmentSectionFromFileHandlerTest.cs (.../AssessmentSectionFromFileHandlerTest.cs) (revision 77da36c3f350a8b9ffe4c419ce00843569271f24) +++ Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/AssessmentSectionFromFileHandlerTest.cs (.../AssessmentSectionFromFileHandlerTest.cs) (revision 356d30ff0493a3b0174f61aadbca0cbbf1f8d962) @@ -26,18 +26,18 @@ using System.Windows.Forms; using Core.Common.Base.Data; using Core.Common.Base.Geometry; +using Core.Common.Base.IO; using Core.Common.Base.TestUtil.Geometry; using Core.Common.Controls.DataGrid; using Core.Common.TestUtil; using Core.Gui.Forms.ViewHost; -using log4net.Core; using NUnit.Extensions.Forms; using NUnit.Framework; using Rhino.Mocks; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Contribution; -using Riskeer.Common.Forms.Helpers; using Riskeer.Common.Forms.TestUtil; +using Riskeer.Common.IO.Exceptions; using Riskeer.Integration.Data; using Riskeer.Integration.Forms.Dialogs; using Riskeer.Integration.Plugin.Handlers; @@ -54,7 +54,7 @@ { // Setup var mockRepository = new MockRepository(); - var viewController = mockRepository.StrictMock(); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); // Call @@ -71,7 +71,7 @@ { // Setup var mockRepository = new MockRepository(); - var parentDialog = mockRepository.StrictMock(); + var parentDialog = mockRepository.Stub(); mockRepository.ReplayAll(); // Call @@ -88,8 +88,8 @@ { // Setup var mockRepository = new MockRepository(); - var parentDialog = mockRepository.StrictMock(); - var viewController = mockRepository.StrictMock(); + var parentDialog = mockRepository.Stub(); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); // Call @@ -101,18 +101,18 @@ } [Test] - public void AddAssessmentSectionFromFile_ProjectNull_ThrowsArgumentNullException() + public void GetAssessmentSectionFromFile_ProjectNull_ThrowsArgumentNullException() { // Setup var mockRepository = new MockRepository(); - var parentDialog = mockRepository.StrictMock(); - var viewController = mockRepository.StrictMock(); + var parentDialog = mockRepository.Stub(); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); // Call - void Call() => assessmentSectionFromFileHandler.AddAssessmentSectionFromFile(null); + void Call() => assessmentSectionFromFileHandler.GetAssessmentSectionFromFile(null); // Assert var exception = Assert.Throws(Call); @@ -121,12 +121,12 @@ } [Test] - public void AddAssessmentSectionFromFile_InvalidDirectory_LogsWarningProjectNotUpdated() + public void GetAssessmentSectionFromFile_InvalidDirectory_ThrowsExceptionProjectNotUpdated() { // Setup var mockRepository = new MockRepository(); - var parentDialog = mockRepository.StrictMock(); - var viewController = mockRepository.StrictMock(); + var parentDialog = mockRepository.Stub(); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); @@ -137,22 +137,23 @@ var project = new RiskeerProject(); // Call - void Action() => assessmentSectionFromFileHandler.AddAssessmentSectionFromFile(project); + void Action() => assessmentSectionFromFileHandler.GetAssessmentSectionFromFile(project); // Assert var expectedMessage = $"De map met specificaties voor trajecten '{pathToNonExistingFolder}' is niet gevonden."; - TestHelper.AssertLogMessageIsGenerated(Action, expectedMessage); + var exception = Assert.Throws(Action); + Assert.AreEqual(expectedMessage, exception.Message); Assert.IsEmpty(project.AssessmentSections); mockRepository.VerifyAll(); } [Test] - public void AddAssessmentSectionFromFile_validDirectoryWithEmptyShapeFile_LogsWarningProjectNotUpdated() + public void GetAssessmentSectionFromFile_validDirectoryWithEmptyShapeFile_ThrowsExceptionWarningProjectNotUpdated() { // Setup var mockRepository = new MockRepository(); - var parentDialog = mockRepository.StrictMock(); - var viewController = mockRepository.StrictMock(); + var parentDialog = mockRepository.Stub(); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); @@ -171,23 +172,24 @@ var project = new RiskeerProject(); // Call - void Action() => assessmentSectionFromFileHandler.AddAssessmentSectionFromFile(project); + void Action() => assessmentSectionFromFileHandler.GetAssessmentSectionFromFile(project); // Assert const string expectedMessage = "Er kunnen geen trajecten gelezen worden uit het shapebestand."; - TestHelper.AssertLogMessageIsGenerated(Action, expectedMessage); + var exception = Assert.Throws(Action); + Assert.AreEqual(expectedMessage, exception.Message); Assert.AreEqual(expectedMessage, messageText); Assert.IsEmpty(project.AssessmentSections); mockRepository.VerifyAll(); } [Test] - public void AddAssessmentSectionFromFile_ValidDirectoryUserClicksCancel_ProjectNotUpdated() + public void GetAssessmentSectionFromFile_ValidDirectoryUserClicksCancel_ProjectNotUpdated() { // Setup var mockRepository = new MockRepository(); var parentDialog = mockRepository.Stub(); - var viewController = mockRepository.StrictMock(); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); @@ -204,21 +206,21 @@ var project = new RiskeerProject(); // Call - assessmentSectionFromFileHandler.AddAssessmentSectionFromFile(project); + AssessmentSection assessmentSection = assessmentSectionFromFileHandler.GetAssessmentSectionFromFile(project); // Assert + Assert.IsNull(assessmentSection); Assert.IsEmpty(project.AssessmentSections); mockRepository.VerifyAll(); } [Test] - public void AddAssessmentSectionFromFile_ValidDirectoryOkClicked_SetsFirstReadAssessmentSection() + public void GetAssessmentSectionFromFile_ValidDirectoryOkClicked_ReturnsFirstReadAssessmentSection() { // Setup var mockRepository = new MockRepository(); var parentDialog = mockRepository.Stub(); - var viewController = mockRepository.StrictMock(); - viewController.Expect(dvc => dvc.OpenViewForData(null)).IgnoreArguments().Return(true); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); @@ -238,102 +240,53 @@ var project = new RiskeerProject(); // Call - assessmentSectionFromFileHandler.AddAssessmentSectionFromFile(project); + AssessmentSection assessmentSection = assessmentSectionFromFileHandler.GetAssessmentSectionFromFile(project); // Assert Assert.AreEqual(3, rowCount); - AssessmentSection assessmentSection = project.AssessmentSections.FirstOrDefault(); - Assert.IsNotNull(assessmentSection); AssertAssessmentSection(TestAssessmentSection1_2(true), assessmentSection); mockRepository.VerifyAll(); } [Test] - public void AddAssessmentSectionFromFile_ValidDirectoryOkClickedForDuplicateAssessmentSection_SetsFirstReadAssessmentSectionWithUniqueName() + public void GetAssessmentSectionFromFile_ValidDirectoryLowLimitSelectedOkClicked_ReturnsFirstReadAssessmentSectionWithLowLimit() { // Setup var mockRepository = new MockRepository(); var parentDialog = mockRepository.Stub(); - var viewController = mockRepository.StrictMock(); - viewController.Expect(dvc => dvc.OpenViewForData(null)).IgnoreArguments().Return(true); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); string pathValidFolder = Path.Combine(testDataPath, "ValidShapeFile"); SetShapeFileDirectory(assessmentSectionFromFileHandler, pathValidFolder); - var project = new RiskeerProject(); - project.AssessmentSections.Add(TestAssessmentSection1_2(true)); - string expectedAssessmentSectionName = NamingHelper.GetUniqueName(project.AssessmentSections, "Traject 1-2", a => a.Name); - - var signallingValueRadioButtonSelected = false; DialogBoxHandler = (name, wnd) => { var selectionDialog = (ReferenceLineMetaSelectionDialog) new FormTester(name).TheObject; - var signallingValueRadioButton = (RadioButton) new RadioButtonTester("SignallingValueRadioButton", selectionDialog).TheObject; - signallingValueRadioButtonSelected = signallingValueRadioButton.Checked; - new ButtonTester("Ok", selectionDialog).Click(); - }; - - // Call - assessmentSectionFromFileHandler.AddAssessmentSectionFromFile(project); - - // Assert - Assert.IsTrue(signallingValueRadioButtonSelected); - Assert.AreEqual(2, project.AssessmentSections.Count); - AssessmentSection assessmentSection = project.AssessmentSections[1]; - Assert.IsNotNull(assessmentSection); - - AssessmentSection expectedAssessmentSection = TestAssessmentSection1_2(true); - expectedAssessmentSection.Name = expectedAssessmentSectionName; - AssertAssessmentSection(expectedAssessmentSection, assessmentSection); - mockRepository.VerifyAll(); - } - - [Test] - public void AddAssessmentSectionFromFile_ValidDirectoryLowLimitSelectedOkClicked_SetsFirstReadAssessmentSectionWithLowLimit() - { - // Setup - var mockRepository = new MockRepository(); - var parentDialog = mockRepository.Stub(); - var viewController = mockRepository.StrictMock(); - viewController.Expect(dvc => dvc.OpenViewForData(null)).IgnoreArguments().Return(true); - mockRepository.ReplayAll(); - - var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); - - string pathValidFolder = Path.Combine(testDataPath, "ValidShapeFile"); - SetShapeFileDirectory(assessmentSectionFromFileHandler, pathValidFolder); - - DialogBoxHandler = (name, wnd) => - { - var selectionDialog = (ReferenceLineMetaSelectionDialog) new FormTester(name).TheObject; var lowLimitValueRadioButton = (RadioButton) new RadioButtonTester("LowLimitValueRadioButton", selectionDialog).TheObject; lowLimitValueRadioButton.Checked = true; new ButtonTester("Ok", selectionDialog).Click(); }; var project = new RiskeerProject(); - + // Call - assessmentSectionFromFileHandler.AddAssessmentSectionFromFile(project); + AssessmentSection assessmentSection = assessmentSectionFromFileHandler.GetAssessmentSectionFromFile(project); // Assert - AssessmentSection assessmentSection = project.AssessmentSections.FirstOrDefault(); - Assert.IsNotNull(assessmentSection); AssertAssessmentSection(TestAssessmentSection1_2(false), assessmentSection); mockRepository.VerifyAll(); } [Test] - public void AddAssessmentSectionFromFile_SecondRowSelectedOkClicked_SetsSecondReadAssessmentSection() + public void GetAssessmentSectionFromFile_SecondRowSelectedOkClicked_ReturnsSecondReadAssessmentSection() { // Setup var mockRepository = new MockRepository(); var parentDialog = mockRepository.Stub(); - var viewController = mockRepository.StrictMock(); - viewController.Expect(dvc => dvc.OpenViewForData(null)).IgnoreArguments().Return(true); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); @@ -356,24 +309,21 @@ var project = new RiskeerProject(); // Call - assessmentSectionFromFileHandler.AddAssessmentSectionFromFile(project); + AssessmentSection assessmentSection = assessmentSectionFromFileHandler.GetAssessmentSectionFromFile(project); // Assert Assert.AreEqual(3, rowCount); - AssessmentSection assessmentSection = project.AssessmentSections.FirstOrDefault(); - Assert.IsNotNull(assessmentSection); AssertAssessmentSection(TestAssessmentSection2_1(), assessmentSection); mockRepository.VerifyAll(); } [Test] - public void AddAssessmentSectionFromFile_ThirdRowSelectedOkClicked_SetsThirdReadAssessmentSection() + public void GetAssessmentSectionFromFile_ThirdRowSelectedOkClicked_ReturnsThirdReadAssessmentSection() { // Setup var mockRepository = new MockRepository(); var parentDialog = mockRepository.Stub(); - var viewController = mockRepository.StrictMock(); - viewController.Expect(dvc => dvc.OpenViewForData(null)).IgnoreArguments().Return(true); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); @@ -393,26 +343,26 @@ var project = new RiskeerProject(); + AssessmentSection assessmentSection = null; + // Call - void Call() => assessmentSectionFromFileHandler.AddAssessmentSectionFromFile(project); + void Call() => assessmentSection = assessmentSectionFromFileHandler.GetAssessmentSectionFromFile(project); // Assert const string expectedMessage = "Er zijn geen instellingen gevonden voor het geselecteerde traject. Standaardinstellingen zullen gebruikt worden."; TestHelper.AssertLogMessageIsGenerated(Call, expectedMessage); - AssessmentSection assessmentSection = project.AssessmentSections.FirstOrDefault(); Assert.IsNotNull(assessmentSection); AssertAssessmentSection(TestAssessmentSection3_3(), assessmentSection); mockRepository.VerifyAll(); } [Test] - public void AddAssessmentSectionFromFile_ShapeWithoutPointsOkClicked_LogsAndSetsAssessmentSectionWithoutReferenceLine() + public void GetAssessmentSectionFromFile_ShapeWithoutPointsOkClicked_LogsAndReturnsAssessmentSectionWithoutReferenceLine() { // Setup var mockRepository = new MockRepository(); var parentDialog = mockRepository.Stub(); - var viewController = mockRepository.StrictMock(); - viewController.Expect(dvc => dvc.OpenViewForData(null)).IgnoreArguments().Return(true); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); @@ -432,13 +382,14 @@ var project = new RiskeerProject(); + AssessmentSection assessmentSection = null; + // Call - void Call() => assessmentSectionFromFileHandler.AddAssessmentSectionFromFile(project); + void Call() => assessmentSection = assessmentSectionFromFileHandler.GetAssessmentSectionFromFile(project); // Assert const string expectedMessage = "Het importeren van de referentielijn is mislukt."; TestHelper.AssertLogMessageIsGenerated(Call, expectedMessage); - AssessmentSection assessmentSection = project.AssessmentSections.FirstOrDefault(); Assert.IsNotNull(assessmentSection); AssessmentSection expectedAssessmentSection = TestAssessmentSection1_2(true); @@ -450,12 +401,12 @@ [Test] [SetCulture("nl-NL")] - public void AddAssessmentSectionFromFile_ShapeWithInvalidNorm_LogsAndProjectNotUpdated() + public void GetAssessmentSectionFromFile_ShapeWithInvalidNorm_ThrowsCriticalFileValidationExceptionAndProjectNotUpdated() { // Setup var mockRepository = new MockRepository(); var parentDialog = mockRepository.Stub(); - var viewController = mockRepository.StrictMock(); + var viewController = mockRepository.Stub(); mockRepository.ReplayAll(); var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); @@ -476,21 +427,56 @@ var project = new RiskeerProject(); // Call - void Call() => assessmentSectionFromFileHandler.AddAssessmentSectionFromFile(project); + void Call() => assessmentSectionFromFileHandler.GetAssessmentSectionFromFile(project); // Assert const string expectedMessage = "Het traject kan niet aangemaakt worden met een ondergrens van 1/9.999.999 en een signaleringswaarde van 1/8.888.888. " + "De waarde van de ondergrens en signaleringswaarde moet in het bereik [0,000001, 0,1] liggen en " + "de ondergrens moet gelijk zijn aan of groter zijn dan de signaleringswaarde."; - TestHelper.AssertLogMessagesWithLevelAndLoggedExceptions(Call, tuples => - { - Tuple tuple = tuples.Single(); - Assert.AreEqual(expectedMessage, tuple.Item1); - Assert.AreEqual(Level.Error, tuple.Item2); - Assert.IsInstanceOf(tuple.Item3); - }); + var exception = Assert.Throws(Call); + Assert.AreEqual(expectedMessage, exception.Message); + Assert.IsInstanceOf(exception.InnerException); CollectionAssert.IsEmpty(project.AssessmentSections); + mockRepository.VerifyAll(); + } + [Test] + public void DoPostHandleActions_AssessmentSectionNull_ThrowsArgumentNullException() + { + // Setup + var mockRepository = new MockRepository(); + var parentDialog = mockRepository.Stub(); + var viewController = mockRepository.Stub(); + mockRepository.ReplayAll(); + + var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); + + // Call + void Call() => assessmentSectionFromFileHandler.DoPostHandleActions(null); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("assessmentSection", exception.ParamName); + } + + [Test] + public void DoPostHandleActions_WithAssessmentSection_OpensViewForAssessmentSection() + { + // Setup + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + + var mockRepository = new MockRepository(); + var parentDialog = mockRepository.Stub(); + var viewController = mockRepository.StrictMock(); + viewController.Expect(dvc => dvc.OpenViewForData(assessmentSection)).Return(true); + mockRepository.ReplayAll(); + + var assessmentSectionFromFileHandler = new AssessmentSectionFromFileHandler(parentDialog, viewController); + + // Call + assessmentSectionFromFileHandler.DoPostHandleActions(assessmentSection); + + // Assert mockRepository.VerifyAll(); }