Index: Core/Common/test/Core.Common.Gui.Test/Commands/GuiImportHandlerTest.cs =================================================================== diff -u -r8eb717ca45b6518cccfef85e481e0da52ce1df4e -r0652e34fa7946d2bd466f9331b3daa728804d109 --- Core/Common/test/Core.Common.Gui.Test/Commands/GuiImportHandlerTest.cs (.../GuiImportHandlerTest.cs) (revision 8eb717ca45b6518cccfef85e481e0da52ce1df4e) +++ Core/Common/test/Core.Common.Gui.Test/Commands/GuiImportHandlerTest.cs (.../GuiImportHandlerTest.cs) (revision 0652e34fa7946d2bd466f9331b3daa728804d109) @@ -282,16 +282,22 @@ } [Test] - public void ImportOn_SupportedImportInfoAvailableVerifyUpdatesSuccesful_CreateFileImporterCalled() + public void ImportOn_SupportedImportInfoAvailableVerifyUpdatesSuccessful_ExpectedImportInfoFunctionsCalledActivityCreated() { // Setup + const string filePath = "/some/path"; var filter = new FileFilterGenerator(); + var targetObject = new object(); + var mockRepository = new MockRepository(); var inquiryHelper = mockRepository.Stub(); - inquiryHelper.Expect(ih => ih.GetSourceFileLocation(filter)).Return("/some/path"); - IFileImporter fileImporterStub = CreateStubFileImporter(mockRepository); + inquiryHelper.Expect(ih => ih.GetSourceFileLocation(filter)).Return(filePath); + var fileImporter = mockRepository.Stub(); mockRepository.ReplayAll(); + var isCreateFileImporterCalled = false; + var isVerifyUpdatedCalled = false; + DialogBoxHandler = (name, wnd) => { // Activity closes itself @@ -301,58 +307,129 @@ { var importHandler = new GuiImportHandler(form, new ImportInfo[] { - new ImportInfo + new ImportInfo { - CreateFileImporter = (d, s) => fileImporterStub, + CreateFileImporter = (o, s) => + { + Assert.AreSame(o, targetObject); + Assert.AreEqual(filePath, s); + isCreateFileImporterCalled = true; + return fileImporter; + }, FileFilter = filter, - VerifyUpdates = d => true + VerifyUpdates = o => + { + Assert.AreSame(o, targetObject); + isVerifyUpdatedCalled = true; + return true; + } } }, inquiryHelper); // Call - importHandler.ImportOn(3.2); + importHandler.ImportOn(targetObject); } // Assert + Assert.IsTrue(isCreateFileImporterCalled); + Assert.IsTrue(isVerifyUpdatedCalled); mockRepository.VerifyAll(); } [Test] - public void ImportOn_SupportedImportInfoAvailableVerifyUpdatesUnsuccesful_FileImporterNotCreated() + public void ImportOn_MultipleSupportedImportInfoAvailableVerifyUpdatesUnsuccesful_ActivityNotCreated() { // Setup var filter = new FileFilterGenerator(); + var targetObject = new object(); + var mockRepository = new MockRepository(); var inquiryHelper = mockRepository.Stub(); - inquiryHelper.Expect(ih => ih.GetSourceFileLocation(filter)).Return("/some/path"); + inquiryHelper.Stub(ih => ih.GetSourceFileLocation(filter)).Return("/some/path"); + var fileImporter = mockRepository.Stub(); mockRepository.ReplayAll(); + var isVerifyUpdatedCalled = false; + using (var form = new Form()) { var importHandler = new GuiImportHandler(form, new ImportInfo[] { - new ImportInfo + new ImportInfo { + CreateFileImporter = (o, s) => + { + Assert.Fail("CreateFileImporter is not expected to be called when VerifyUpdates function returns false."); + return fileImporter; + }, FileFilter = filter, - VerifyUpdates = d => false + VerifyUpdates = o => + { + Assert.AreSame(o, targetObject); + isVerifyUpdatedCalled = true; + return false; + } } }, inquiryHelper); // Call - importHandler.ImportOn(3.2); + importHandler.ImportOn(targetObject); } // Assert + Assert.IsTrue(isVerifyUpdatedCalled); mockRepository.VerifyAll(); } - private static IFileImporter CreateStubFileImporter(MockRepository mockRepository) + [Test] + public void ImportOn_MultipleSupportedImportInfoAvailable_ShowsDialogWithOptions() { - var fileImporterStub = mockRepository.Stub(); - fileImporterStub.Expect(fi => fi.Import()); - fileImporterStub.Expect(fi => fi.DoPostImport()); - fileImporterStub.Expect(fi => fi.SetProgressChanged(null)).IgnoreArguments(); - return fileImporterStub; + // Setup + const string importInfoAName = "nameA"; + var importInfoA = new ImportInfo + { + Name = importInfoAName + }; + const string importInfoBName = "nameB"; + var importInfoB = new ImportInfo + { + Name = importInfoBName + }; + + var mockRepository = new MockRepository(); + var inquiryHelper = mockRepository.Stub(); + mockRepository.ReplayAll(); + + DialogBoxHandler = (name, wnd) => + { + var formTester = new FormTester(name); + var listView = (ListView) new ControlTester("listViewItemTypes").TheObject; + try + { + Assert.AreEqual(2, listView.Items.Count); + Assert.AreEqual(importInfoAName, listView.Items[0].Name); + Assert.AreEqual(importInfoBName, listView.Items[1].Name); + } + finally + { + formTester.Close(); + } + }; + + using (var form = new Form()) + { + var importHandler = new GuiImportHandler(form, new ImportInfo[] + { + importInfoA, + importInfoB + }, inquiryHelper); + + // Call + importHandler.ImportOn(new object()); + } + + // Assert + mockRepository.VerifyAll(); } } } \ No newline at end of file Index: Core/Common/test/Core.Common.Gui.Test/Commands/GuiUpdateHandlerTest.cs =================================================================== diff -u -r8eb717ca45b6518cccfef85e481e0da52ce1df4e -r0652e34fa7946d2bd466f9331b3daa728804d109 --- Core/Common/test/Core.Common.Gui.Test/Commands/GuiUpdateHandlerTest.cs (.../GuiUpdateHandlerTest.cs) (revision 8eb717ca45b6518cccfef85e481e0da52ce1df4e) +++ Core/Common/test/Core.Common.Gui.Test/Commands/GuiUpdateHandlerTest.cs (.../GuiUpdateHandlerTest.cs) (revision 0652e34fa7946d2bd466f9331b3daa728804d109) @@ -99,10 +99,10 @@ var commandHandler = new GuiUpdateHandler(dialogParent, Enumerable.Empty(), inquiryHelper); // Call - bool isImportPossible = commandHandler.CanUpdateOn(new object()); + bool isUpdatePossible = commandHandler.CanUpdateOn(new object()); // Assert - Assert.IsFalse(isImportPossible); + Assert.IsFalse(isUpdatePossible); mocks.VerifyAll(); } @@ -123,10 +123,10 @@ }, inquiryHelper); // Call - bool isImportPossible = commandHandler.CanUpdateOn(target); + bool isUpdatePossible = commandHandler.CanUpdateOn(target); // Assert - Assert.IsTrue(isImportPossible); + Assert.IsTrue(isUpdatePossible); mocks.VerifyAll(); } @@ -149,10 +149,10 @@ }, inquiryHelper); // Call - bool isImportPossible = commandHandler.CanUpdateOn(target); + bool isUpdatePossible = commandHandler.CanUpdateOn(target); // Assert - Assert.IsFalse(isImportPossible); + Assert.IsFalse(isUpdatePossible); mocks.VerifyAll(); } @@ -179,15 +179,15 @@ }, inquiryHelper); // Call - bool isImportPossible = commandHandler.CanUpdateOn(target); + bool isUpdatePossible = commandHandler.CanUpdateOn(target); // Assert - Assert.IsTrue(isImportPossible); + Assert.IsTrue(isUpdatePossible); mocks.VerifyAll(); } [Test] - public void CanUpdateOn_HasMultipleUpdateInfosForTargetThatCannotBeUsedForImporting_ReturnFalse() + public void CanUpdateOn_HasMultipleUpdateInfosForTargetThatCannotBeUsedForUpdating_ReturnFalse() { // Setup var target = new object(); @@ -209,10 +209,10 @@ }, inquiryHelper); // Call - bool isImportPossible = commandHandler.CanUpdateOn(target); + bool isUpdatePossible = commandHandler.CanUpdateOn(target); // Assert - Assert.IsFalse(isImportPossible); + Assert.IsFalse(isUpdatePossible); mocks.VerifyAll(); } @@ -236,10 +236,10 @@ messageBox.ClickOk(); }; - var importHandler = new GuiUpdateHandler(mainWindow, Enumerable.Empty(), inquiryHelper); + var updateHandler = new GuiUpdateHandler(mainWindow, Enumerable.Empty(), inquiryHelper); // Call - importHandler.UpdateOn(3); + updateHandler.UpdateOn(3); // Assert Assert.AreEqual("Fout", messageBoxTitle); @@ -267,13 +267,13 @@ messageBox.ClickOk(); }; - var importHandler = new GuiUpdateHandler(mainWindow, new UpdateInfo[] + var updateHandler = new GuiUpdateHandler(mainWindow, new UpdateInfo[] { new UpdateInfo() }, inquiryHelper); // Call - importHandler.UpdateOn(string.Empty); + updateHandler.UpdateOn(string.Empty); // Assert Assert.AreEqual("Fout", messageBoxTitle); @@ -282,77 +282,153 @@ } [Test] - public void UpdateOn_SupportedUpdateInfoAvailableVerifyUpdatesSuccesful_CreateFileImporterCalled() + public void UpdateOn_SupportedUpdateInfoAvailableVerifyUpdatesSuccesful_ExpectedUpdateInfoFunctionsCalledActivityCreated() { // Setup + const string filePath = "/some/path"; var filter = new FileFilterGenerator(); + var targetObject = new object(); + var mockRepository = new MockRepository(); var inquiryHelper = mockRepository.Stub(); - inquiryHelper.Expect(ih => ih.GetSourceFileLocation(filter)).Return("/some/path"); - IFileImporter fileImporterStub = CreateStubFileImporter(mockRepository); + inquiryHelper.Expect(ih => ih.GetSourceFileLocation(filter)).Return(filePath); + IFileImporter fileImporter = mockRepository.Stub(); mockRepository.ReplayAll(); + var isCreateFileImporterCalled = false; + var isVerifyUpdatedCalled = false; + DialogBoxHandler = (name, wnd) => { // Activity closes itself }; using (var form = new Form()) { - var importHandler = new GuiUpdateHandler(form, new UpdateInfo[] + var updateHandler = new GuiUpdateHandler(form, new UpdateInfo[] { - new UpdateInfo + new UpdateInfo { - CreateFileImporter = (d, s) => fileImporterStub, + CreateFileImporter = (o, s) => + { + Assert.AreSame(o, targetObject); + Assert.AreEqual(filePath, s); + isCreateFileImporterCalled = true; + return fileImporter; + }, FileFilter = filter, - VerifyUpdates = d => true + VerifyUpdates = o => + { + Assert.AreSame(o, targetObject); + isVerifyUpdatedCalled = true; + return true; + } } }, inquiryHelper); // Call - importHandler.UpdateOn(3.2); + updateHandler.UpdateOn(targetObject); } // Assert + Assert.IsTrue(isCreateFileImporterCalled); + Assert.IsTrue(isVerifyUpdatedCalled); mockRepository.VerifyAll(); } [Test] - public void UpdateOn_SupportedUpdateInfoAvailableVerifyUpdatesUnsuccesful_FileImporterNotCreated() + public void UpdateOn_SupportedUpdateInfoAvailableVerifyUpdatesUnsuccesful_ActivityNotCreated() { // Setup var filter = new FileFilterGenerator(); + var targetObject = new object(); var mockRepository = new MockRepository(); var inquiryHelper = mockRepository.Stub(); inquiryHelper.Expect(ih => ih.GetSourceFileLocation(filter)).Return("/some/path"); + var fileImporter = mockRepository.Stub(); mockRepository.ReplayAll(); + var isVerifyUpdatedCalled = false; + using (var form = new Form()) { - var importHandler = new GuiUpdateHandler(form, new UpdateInfo[] + var updateHandler = new GuiUpdateHandler(form, new UpdateInfo[] { - new UpdateInfo + new UpdateInfo { + CreateFileImporter = (o, s) => + { + Assert.Fail("CreateFileImporter is not expected to be called when VerifyUpdates function returns false."); + return fileImporter; + }, FileFilter = filter, - VerifyUpdates = d => false + VerifyUpdates = o => + { + Assert.AreSame(o, targetObject); + isVerifyUpdatedCalled = true; + return false; + } } }, inquiryHelper); // Call - importHandler.UpdateOn(3.2); + updateHandler.UpdateOn(targetObject); } // Assert + Assert.IsTrue(isVerifyUpdatedCalled); mockRepository.VerifyAll(); } - private static IFileImporter CreateStubFileImporter(MockRepository mockRepository) + [Test] + public void UpdateOn_MultipleSupportedUpdateInfoAvailable_ShowsDialogWithOptions() { - var fileImporterStub = mockRepository.Stub(); - fileImporterStub.Expect(fi => fi.Import()); - fileImporterStub.Expect(fi => fi.DoPostImport()); - fileImporterStub.Expect(fi => fi.SetProgressChanged(null)).IgnoreArguments(); - return fileImporterStub; + // Setup + const string updateInfoAName = "nameA"; + var updateInfoA = new UpdateInfo + { + Name = updateInfoAName + }; + const string updateInfoBName = "nameB"; + var updateInfoB = new UpdateInfo + { + Name = updateInfoBName + }; + + var mockRepository = new MockRepository(); + var inquiryHelper = mockRepository.Stub(); + mockRepository.ReplayAll(); + + DialogBoxHandler = (name, wnd) => + { + var formTester = new FormTester(name); + var listView = (ListView)new ControlTester("listViewItemTypes").TheObject; + try + { + Assert.AreEqual(2, listView.Items.Count); + Assert.AreEqual(updateInfoAName, listView.Items[0].Name); + Assert.AreEqual(updateInfoBName, listView.Items[1].Name); + } + finally + { + formTester.Close(); + } + }; + + using (var form = new Form()) + { + var updateHandler = new GuiUpdateHandler(form, new UpdateInfo[] + { + updateInfoA, + updateInfoB + }, inquiryHelper); + + // Call + updateHandler.UpdateOn(new object()); + } + + // Assert + mockRepository.VerifyAll(); } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.TestUtil/TestStochasticSoilModelUpdateModelStrategy.cs =================================================================== diff -u -re1a8e98d60853beefbdb8c84e70f14165680ad7b -r0652e34fa7946d2bd466f9331b3daa728804d109 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.TestUtil/TestStochasticSoilModelUpdateModelStrategy.cs (.../TestStochasticSoilModelUpdateModelStrategy.cs) (revision e1a8e98d60853beefbdb8c84e70f14165680ad7b) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.TestUtil/TestStochasticSoilModelUpdateModelStrategy.cs (.../TestStochasticSoilModelUpdateModelStrategy.cs) (revision 0652e34fa7946d2bd466f9331b3daa728804d109) @@ -27,11 +27,31 @@ namespace Ringtoets.Piping.IO.TestUtil { + /// + /// Implementation of a which can be used for + /// testing. + /// public class TestStochasticSoilModelUpdateModelStrategy : IStochasticSoilModelUpdateModelStrategy { + /// + /// Gets a value which indicates whether has + /// been called. + /// public bool Updated { get; private set; } + + /// + /// Gets the models that were passed to as the read models. + /// public StochasticSoilModel[] ReadModels { get; private set; } + + /// + /// Gets the file path that was passed to . + /// public string FilePath { get; private set; } + + /// + /// Gets or sets the instances that will be returned by . + /// public IEnumerable UpdatedInstances { get; set; } = Enumerable.Empty(); public IEnumerable UpdateModelWithImportedData(StochasticSoilModelCollection targetCollection,