public void GetAssessmentSection_AssessmentSectionFromActivityNull_ThrowsAssessmentSectionProviderException() { // Setup var mocks = new MockRepository(); var projectStorage = mocks.Stub <IStoreProject>(); mocks.ReplayAll(); using (var viewParent = new TestViewParentForm()) { var provider = new AssessmentSectionProvider(viewParent, projectStorage); DialogBoxHandler = (name, wnd) => { // Expect an activity dialog which is automatically closed }; // Call void Call() => provider.GetAssessmentSection("filePath"); // Assert Assert.Throws <AssessmentSectionProviderException>(Call); } mocks.VerifyAll(); }
public void Calculate_ValidPathEmptyCalculationList_NoLog() { // Setup var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase { FilePath = validFilePath }; HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(hydraulicBoundaryDatabase); var mocks = new MockRepository(); var assessmentSection = mocks.Stub <IAssessmentSection>(); assessmentSection.Stub(a => a.HydraulicBoundaryDatabase) .Return(hydraulicBoundaryDatabase); mocks.ReplayAll(); using (var viewParent = new TestViewParentForm()) { var guiService = new DuneLocationCalculationGuiService(viewParent); // Call void Call() => guiService.Calculate(Enumerable.Empty <DuneLocationCalculation>(), assessmentSection, 0.01, "1/100"); // Assert TestHelper.AssertLogMessagesCount(Call, 0); } mocks.VerifyAll(); }
public void CalculateWaveHeights_ValidPathOneCalculation_LogsMessages() { // Setup const string hydraulicLocationName = "name"; const string calculationIdentifier = "1/100"; var mocks = new MockRepository(); IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); var calculatorFactory = mocks.StrictMock <IHydraRingCalculatorFactory>(); calculatorFactory.Expect(cf => cf.CreateWaveHeightCalculator(Arg <HydraRingCalculationSettings> .Is.NotNull)) .WhenCalled(invocation => { HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( HydraulicBoundaryCalculationSettingsFactory.CreateSettings(assessmentSection.HydraulicBoundaryDatabase), (HydraRingCalculationSettings)invocation.Arguments[0]); }) .Return(new TestWaveHeightCalculator()); mocks.ReplayAll(); assessmentSection.HydraulicBoundaryDatabase.FilePath = validFilePath; HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(assessmentSection.HydraulicBoundaryDatabase); DialogBoxHandler = (name, wnd) => { // Expect an activity dialog which is automatically closed }; using (var viewParent = new TestViewParentForm()) using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call void Call() => guiService.CalculateWaveHeights(new[] { new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation(hydraulicLocationName)) }, assessmentSection, 0.01, calculationIdentifier); // Assert TestHelper.AssertLogMessages(Call, messages => { string[] msgs = messages.ToArray(); Assert.AreEqual(8, msgs.Length); string activityDescription = GetWaveHeightCalculationActivityDescription(hydraulicLocationName, calculationIdentifier); Assert.AreEqual($"{activityDescription} is gestart.", msgs[0]); CalculationServiceTestHelper.AssertValidationStartMessage(msgs[1]); CalculationServiceTestHelper.AssertValidationEndMessage(msgs[2]); CalculationServiceTestHelper.AssertCalculationStartMessage(msgs[3]); Assert.AreEqual($"Golfhoogte berekening voor locatie 'name' ({calculationIdentifier}) is niet geconvergeerd.", msgs[4]); StringAssert.StartsWith("Golfhoogte berekening is uitgevoerd op de tijdelijke locatie", msgs[5]); CalculationServiceTestHelper.AssertCalculationEndMessage(msgs[6]); Assert.AreEqual($"{activityDescription} is gelukt.", msgs[7]); }); } mocks.VerifyAll(); }
public void CalculateWaveHeights_ValidPathEmptyCalculationList_NoLog() { // Setup var mocks = new MockRepository(); IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); mocks.ReplayAll(); assessmentSection.HydraulicBoundaryDatabase.FilePath = validFilePath; HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(assessmentSection.HydraulicBoundaryDatabase); DialogBoxHandler = (name, wnd) => { // Expect an activity dialog which is automatically closed }; using (var viewParent = new TestViewParentForm()) { var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call void Call() => guiService.CalculateWaveHeights(Enumerable.Empty <HydraulicBoundaryLocationCalculation>(), assessmentSection, 0.01, "1/100"); // Assert TestHelper.AssertLogMessagesCount(Call, 0); } mocks.VerifyAll(); }
public void CalculateForSelectedButton_OneCalculationSelected_CalculateForSelectedCalculationAndKeepOriginalSelection() { // Setup var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase { FilePath = hydraulicBoundaryDatabaseFilePath }; HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(hydraulicBoundaryDatabase); var assessmentSection = mocks.Stub <IAssessmentSection>(); assessmentSection.Stub(a => a.Id).Return("1"); assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); assessmentSection.Stub(a => a.HydraulicBoundaryDatabase).Return(hydraulicBoundaryDatabase); assessmentSection.Stub(a => a.Attach(null)).IgnoreArguments(); assessmentSection.Stub(a => a.Detach(null)).IgnoreArguments(); var calculationsObserver = mocks.StrictMock <IObserver>(); var calculatorFactory = mocks.StrictMock <IHydraRingCalculatorFactory>(); calculatorFactory.Expect(cf => cf.CreateDunesBoundaryConditionsCalculator(null)) .IgnoreArguments() .Return(new TestDunesBoundaryConditionsCalculator()); mocks.ReplayAll(); IObservableEnumerable <DuneLocationCalculation> calculations = GenerateDuneLocationCalculations(); var failureMechanism = new DuneErosionFailureMechanism(); using (DuneLocationCalculationsView view = ShowDuneLocationCalculationsView(calculations, failureMechanism, assessmentSection)) { var dataGridView = (DataGridView)view.Controls.Find("dataGridView", true)[0]; object originalDataSource = dataGridView.DataSource; DataGridViewRowCollection rows = dataGridView.Rows; rows[0].Cells[calculateColumnIndex].Value = true; calculations.Attach(calculationsObserver); var buttonTester = new ButtonTester("CalculateForSelectedButton", testForm); using (var viewParent = new TestViewParentForm()) using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { view.CalculationGuiService = new DuneLocationCalculationGuiService(viewParent); // Call buttonTester.Click(); // Assert Assert.AreSame(originalDataSource, dataGridView.DataSource); Assert.IsTrue((bool)rows[0].Cells[calculateColumnIndex].Value); Assert.IsFalse((bool)rows[1].Cells[calculateColumnIndex].Value); } } }
public void ImportOn_MultipleSupportedImportInfos_ShowsDialogWithOptions(bool hasFileFilterGenerator) { // Setup const string importInfoAName = "nameA"; var importInfoA = new ImportInfo <object> { Name = importInfoAName, FileFilterGenerator = hasFileFilterGenerator ? new FileFilterGenerator("extensionA") : null }; const string importInfoBName = "nameB"; var importInfoB = new ImportInfo <object> { Name = importInfoBName, FileFilterGenerator = hasFileFilterGenerator ? new FileFilterGenerator("extensionB") : null }; var mockRepository = new MockRepository(); var inquiryHelper = mockRepository.Stub <IInquiryHelper>(); mockRepository.ReplayAll(); var listViewItems = new ListViewItem[0]; DialogBoxHandler = (name, wnd) => { using (new FormTester(name)) { var listView = (ListView) new ControlTester("listViewItemTypes").TheObject; listViewItems = listView.Items.OfType <ListViewItem>().ToArray(); } }; using (var form = new TestViewParentForm()) { var importHandler = new GuiImportHandler(form, Enumerable.Empty <ImportInfo>(), inquiryHelper); // Call importHandler.ImportOn(new object(), new ImportInfo[] { importInfoA, importInfoB }); } // Assert Assert.AreEqual(2, listViewItems.Length); string expectedItemNameA = hasFileFilterGenerator ? $"{importInfoA.Name} (*.{importInfoA.FileFilterGenerator.Extension})" : importInfoA.Name; Assert.AreEqual(expectedItemNameA, listViewItems[0].Name); string expectedItemNameB = hasFileFilterGenerator ? $"{importInfoB.Name} (*.{importInfoB.FileFilterGenerator.Extension})" : importInfoB.Name; Assert.AreEqual(expectedItemNameB, listViewItems[1].Name); mockRepository.VerifyAll(); }
public void ImportOn_SupportedImportInfoAndVerifyUpdatesUnsuccessful_ActivityNotCreated() { // Setup var generator = new FileFilterGenerator(); var targetObject = new object(); var mockRepository = new MockRepository(); var inquiryHelper = mockRepository.Stub <IInquiryHelper>(); inquiryHelper.Stub(ih => ih.GetSourceFileLocation(generator.Filter)).Return("/some/path"); var fileImporter = mockRepository.Stub <IFileImporter>(); mockRepository.ReplayAll(); var isVerifyUpdatedCalled = false; using (var form = new TestViewParentForm()) { var supportedImportInfo = new ImportInfo <object> { CreateFileImporter = (o, s) => { Assert.Fail("CreateFileImporter is not expected to be called when VerifyUpdates function returns false."); return(fileImporter); }, FileFilterGenerator = generator, VerifyUpdates = o => { Assert.AreSame(o, targetObject); isVerifyUpdatedCalled = true; return(false); } }; var importHandler = new GuiImportHandler(form, Enumerable.Empty <ImportInfo>(), inquiryHelper); // Call importHandler.ImportOn(targetObject, new ImportInfo[] { supportedImportInfo }); } // Assert Assert.IsTrue(isVerifyUpdatedCalled); mockRepository.VerifyAll(); }
public void GetAssessmentSection_ValidFilePath_ReturnsAssessmentSection() { // Setup using (var viewParent = new TestViewParentForm()) { var provider = new AssessmentSectionProvider(viewParent, new StorageSqLite()); string filePath = Path.Combine(testDataPath, "project.risk"); DialogBoxHandler = (name, wnd) => { // Expect an activity dialog which is automatically closed }; // Call AssessmentSection assessmentSection = provider.GetAssessmentSection(filePath); // Assert Assert.IsNotNull(assessmentSection); } }
public void ImportOn_InquiryHelperReturnsNoPath_ImportCancelledWithLogMessage() { // Setup var generator = new FileFilterGenerator(); var targetObject = new object(); var mockRepository = new MockRepository(); var inquiryHelper = mockRepository.Stub <IInquiryHelper>(); inquiryHelper.Expect(ih => ih.GetSourceFileLocation(generator.Filter)).Return(null); var fileImporter = mockRepository.Stub <IFileImporter>(); mockRepository.ReplayAll(); using (var form = new TestViewParentForm()) { var supportedImportInfo = new ImportInfo <object> { CreateFileImporter = (o, s) => { Assert.Fail("CreateFileImporter is not expected to be called when no file path is chosen."); return(fileImporter); }, FileFilterGenerator = generator, VerifyUpdates = o => true }; var importHandler = new GuiImportHandler(form, Enumerable.Empty <ImportInfo>(), inquiryHelper); // Call void Call() => importHandler.ImportOn(targetObject, new ImportInfo[] { supportedImportInfo }); // Assert TestHelper.AssertLogMessageIsGenerated(Call, "Importeren van gegevens is geannuleerd."); } mockRepository.VerifyAll(); }
public void ShowDialog_ActivityProgressDialog_MinimumSizeSet() { // Setup DialogBoxHandler = (name, wnd) => { var openedDialog = new FormTester(name); openedDialog.Close(); }; using (var dialogParent = new TestViewParentForm()) using (var dialog = new ActivityProgressDialog(dialogParent, Enumerable.Empty <Activity>())) { // Call dialog.ShowDialog(); // Assert Assert.AreEqual(520, dialog.MinimumSize.Width); Assert.AreEqual(150, dialog.MinimumSize.Height); } }
public void Constructor_ExpectedValue() { // Call using (var dialogParent = new TestViewParentForm()) using (var dialog = new ActivityProgressDialog(dialogParent, Enumerable.Empty <Activity>())) { // Assert Assert.IsInstanceOf <DialogBase>(dialog); Assert.IsNotNull(dialog.Icon); Assert.IsTrue(dialog.ShowIcon); Assert.AreEqual(0, dialog.MinimumSize.Width); // Set during load Assert.AreEqual(0, dialog.MinimumSize.Height); // Set during load Assert.AreEqual(FormBorderStyle.FixedDialog, dialog.FormBorderStyle); Assert.AreEqual(FormStartPosition.CenterParent, dialog.StartPosition); Assert.IsFalse(dialog.ShowInTaskbar); Assert.IsTrue(dialog.ControlBox); Assert.IsFalse(dialog.MaximizeBox); Assert.IsFalse(dialog.MinimizeBox); Assert.IsNull(dialog.CancelButton); } }
public void ImportHydraulicLocationConfigurationSettings_WithValidFilePath_RunsActivity() { // Setup string newHlcdFilePath = Path.Combine(testDataDirectory, "hlcdWithScenarioInformation.sqlite"); var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); DataImportHelper.ImportHydraulicBoundaryDatabase(assessmentSection, Path.Combine(testDataDirectory, "complete.sqlite")); HydraulicBoundaryDatabase hydraulicBoundaryDatabase = assessmentSection.HydraulicBoundaryDatabase; var mocks = new MockRepository(); var updateHandler = mocks.Stub <IHydraulicLocationConfigurationDatabaseUpdateHandler>(); mocks.ReplayAll(); DialogBoxHandler = (name, wnd) => { // Activity closes itself }; using (var viewParent = new TestViewParentForm()) { var importHandler = new HydraulicLocationConfigurationDatabaseImportHandler( viewParent, updateHandler, hydraulicBoundaryDatabase); // Call importHandler.ImportHydraulicLocationConfigurationSettings( hydraulicBoundaryDatabase.HydraulicLocationConfigurationSettings, newHlcdFilePath); } // Assert mocks.VerifyAll(); }
public void Calculate_ValidPathOneCalculation_LogsMessages() { // Setup var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase { FilePath = validFilePath, HydraulicLocationConfigurationSettings = { CanUsePreprocessor = true, UsePreprocessor = true, PreprocessorDirectory = validPreprocessorDirectory } }; HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(hydraulicBoundaryDatabase); const string calculationIdentifier = "1/100"; const string duneLocationName = "duneLocationName"; var mocks = new MockRepository(); var calculatorFactory = mocks.StrictMock <IHydraRingCalculatorFactory>(); calculatorFactory.Expect(cf => cf.CreateDunesBoundaryConditionsCalculator(Arg <HydraRingCalculationSettings> .Is.NotNull)) .WhenCalled(invocation => { HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( HydraulicBoundaryCalculationSettingsFactory.CreateSettings(hydraulicBoundaryDatabase), (HydraRingCalculationSettings)invocation.Arguments[0]); }) .Return(new TestDunesBoundaryConditionsCalculator()); var assessmentSection = mocks.Stub <IAssessmentSection>(); assessmentSection.Stub(a => a.HydraulicBoundaryDatabase) .Return(hydraulicBoundaryDatabase); mocks.ReplayAll(); using (var viewParent = new TestViewParentForm()) using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { var guiService = new DuneLocationCalculationGuiService(viewParent); // Call void Call() => guiService.Calculate(new[] { new DuneLocationCalculation(new TestDuneLocation(duneLocationName)) }, assessmentSection, 0.01, calculationIdentifier); // Assert TestHelper.AssertLogMessages(Call, messages => { string[] msgs = messages.ToArray(); Assert.AreEqual(8, msgs.Length); Assert.AreEqual($"Hydraulische belastingen berekenen voor locatie '{duneLocationName}' ({calculationIdentifier}) is gestart.", msgs[0]); CalculationServiceTestHelper.AssertValidationStartMessage(msgs[1]); CalculationServiceTestHelper.AssertValidationEndMessage(msgs[2]); CalculationServiceTestHelper.AssertCalculationStartMessage(msgs[3]); Assert.AreEqual($"Hydraulische belastingenberekening voor locatie '{duneLocationName}' ({calculationIdentifier}) is niet geconvergeerd.", msgs[4]); StringAssert.StartsWith("Hydraulische belastingenberekening is uitgevoerd op de tijdelijke locatie", msgs[5]); CalculationServiceTestHelper.AssertCalculationEndMessage(msgs[6]); Assert.AreEqual($"Hydraulische belastingen berekenen voor locatie '{duneLocationName}' ({calculationIdentifier}) is gelukt.", msgs[7]); }); } mocks.VerifyAll(); }
public void CalculateForSelectedButton_HydraulicBoundaryDatabaseWithUsePreprocessorFalse_CreateDunesBoundaryConditionsCalculatorCalledAsExpected() { // Setup const double targetProbability = 0.01; var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase { FilePath = hydraulicBoundaryDatabaseFilePath, HydraulicLocationConfigurationSettings = { CanUsePreprocessor = true, UsePreprocessor = false, PreprocessorDirectory = "InvalidPreprocessorDirectory" } }; HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(hydraulicBoundaryDatabase); var assessmentSection = mocks.Stub <IAssessmentSection>(); assessmentSection.Stub(a => a.Id).Return("1"); assessmentSection.Stub(a => a.FailureMechanismContribution) .Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); assessmentSection.Stub(a => a.HydraulicBoundaryDatabase).Return(hydraulicBoundaryDatabase); assessmentSection.Stub(a => a.Attach(null)).IgnoreArguments(); assessmentSection.Stub(a => a.Detach(null)).IgnoreArguments(); var calculatorFactory = mocks.StrictMock <IHydraRingCalculatorFactory>(); var dunesBoundaryConditionsCalculator = new TestDunesBoundaryConditionsCalculator(); calculatorFactory.Expect(cf => cf.CreateDunesBoundaryConditionsCalculator(Arg <HydraRingCalculationSettings> .Is.NotNull)) .WhenCalled(invocation => { HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( HydraulicBoundaryCalculationSettingsFactory.CreateSettings(hydraulicBoundaryDatabase), (HydraRingCalculationSettings)invocation.Arguments[0]); }) .Return(dunesBoundaryConditionsCalculator); mocks.ReplayAll(); var failureMechanism = new DuneErosionFailureMechanism(); using (var view = new DuneLocationCalculationsView(GenerateDuneLocationCalculations(), failureMechanism, assessmentSection, () => targetProbability, () => "1/100")) { testForm.Controls.Add(view); testForm.Show(); var dataGridView = (DataGridView)view.Controls.Find("dataGridView", true)[0]; DataGridViewRowCollection rows = dataGridView.Rows; rows[0].Cells[calculateColumnIndex].Value = true; var buttonTester = new ButtonTester("CalculateForSelectedButton", testForm); using (var viewParent = new TestViewParentForm()) using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { view.CalculationGuiService = new DuneLocationCalculationGuiService(viewParent); // Call buttonTester.Click(); // Assert DunesBoundaryConditionsCalculationInput dunesBoundaryConditionsCalculationInput = dunesBoundaryConditionsCalculator.ReceivedInputs.First(); Assert.AreEqual(1, dunesBoundaryConditionsCalculationInput.HydraulicBoundaryLocationId); Assert.AreEqual(StatisticsConverter.ProbabilityToReliability(targetProbability), dunesBoundaryConditionsCalculationInput.Beta); } } }
public void CalculateForSelectedButton_OneCalculationSelected_CalculateForSelectedCalculationAndLogsMessages() { // Setup var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase { FilePath = hydraulicBoundaryDatabaseFilePath }; HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(hydraulicBoundaryDatabase); var assessmentSection = mocks.Stub <IAssessmentSection>(); assessmentSection.Stub(a => a.Id).Return("1"); assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); assessmentSection.Stub(a => a.HydraulicBoundaryDatabase).Return(hydraulicBoundaryDatabase); assessmentSection.Stub(a => a.Attach(null)).IgnoreArguments(); assessmentSection.Stub(a => a.Detach(null)).IgnoreArguments(); var calculationsObserver = mocks.StrictMock <IObserver>(); var calculatorFactory = mocks.StrictMock <IHydraRingCalculatorFactory>(); calculatorFactory.Expect(cf => cf.CreateDunesBoundaryConditionsCalculator(null)) .IgnoreArguments() .Return(new TestDunesBoundaryConditionsCalculator()); mocks.ReplayAll(); IObservableEnumerable <DuneLocationCalculation> calculations = GenerateDuneLocationCalculations(); var failureMechanism = new DuneErosionFailureMechanism(); using (DuneLocationCalculationsView view = ShowDuneLocationCalculationsView(calculations, failureMechanism, assessmentSection)) { var dataGridView = (DataGridView)view.Controls.Find("dataGridView", true)[0]; DataGridViewRowCollection rows = dataGridView.Rows; rows[0].Cells[calculateColumnIndex].Value = true; calculations.Attach(calculationsObserver); var buttonTester = new ButtonTester("CalculateForSelectedButton", testForm); using (var viewParent = new TestViewParentForm()) using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { view.CalculationGuiService = new DuneLocationCalculationGuiService(viewParent); // Call void Call() => buttonTester.Click(); // Assert string expectedDuneLocationName = calculations.ElementAt(0).DuneLocation.Name; TestHelper.AssertLogMessages(Call, messages => { List <string> messageList = messages.ToList(); // Assert Assert.AreEqual(8, messageList.Count); Assert.AreEqual($"Hydraulische belastingen berekenen voor locatie '{expectedDuneLocationName}' (1/100) is gestart.", messageList[0]); CalculationServiceTestHelper.AssertValidationStartMessage(messageList[1]); CalculationServiceTestHelper.AssertValidationEndMessage(messageList[2]); CalculationServiceTestHelper.AssertCalculationStartMessage(messageList[3]); Assert.AreEqual($"Hydraulische belastingenberekening voor locatie '{expectedDuneLocationName}' (1/100) is niet geconvergeerd.", messageList[4]); StringAssert.StartsWith("Hydraulische belastingenberekening is uitgevoerd op de tijdelijke locatie", messageList[5]); CalculationServiceTestHelper.AssertCalculationEndMessage(messageList[6]); Assert.AreEqual($"Hydraulische belastingen berekenen voor locatie '{expectedDuneLocationName}' (1/100) is gelukt.", messageList[7]); }); } } }
public void ImportOn_SupportedImportInfoAndVerifyUpdatesSuccessful_ExpectedImportInfoFunctionsCalledAndActivityCreated() { // Setup const string filePath = "/some/path"; var generator = new FileFilterGenerator(); var targetObject = new object(); var mockRepository = new MockRepository(); var inquiryHelper = mockRepository.Stub <IInquiryHelper>(); inquiryHelper.Expect(ih => ih.GetSourceFileLocation(generator.Filter)).Return(filePath); var fileImporter = mockRepository.Stub <IFileImporter>(); mockRepository.ReplayAll(); const string dataDescription = "Random data"; var isCreateFileImporterCalled = false; var isVerifyUpdatedCalled = false; DialogBoxHandler = (name, wnd) => { // Activity closes itself }; using (var form = new TestViewParentForm()) { var supportedImportInfo = new ImportInfo <object> { Name = dataDescription, CreateFileImporter = (o, s) => { Assert.AreSame(o, targetObject); Assert.AreEqual(filePath, s); isCreateFileImporterCalled = true; return(fileImporter); }, FileFilterGenerator = generator, VerifyUpdates = o => { Assert.AreSame(o, targetObject); isVerifyUpdatedCalled = true; return(true); } }; var importHandler = new GuiImportHandler(form, Enumerable.Empty <ImportInfo>(), inquiryHelper); // Call void Call() => importHandler.ImportOn(targetObject, new ImportInfo[] { supportedImportInfo }); // Assert TestHelper.AssertLogMessagesAreGenerated(Call, new[] { $"Importeren van '{dataDescription}' is gestart.", $"Importeren van '{dataDescription}' is mislukt." }); } // Assert Assert.IsTrue(isCreateFileImporterCalled); Assert.IsTrue(isVerifyUpdatedCalled); mockRepository.VerifyAll(); }