public void ImportOn_NoImportInfos_GivesMessageBox() { // Setup var mockRepository = new MockRepository(); var dialogParent = mockRepository.Stub <IViewParent>(); var inquiryHelper = mockRepository.Stub <IInquiryHelper>(); mockRepository.ReplayAll(); string messageBoxTitle = null, messageBoxText = null; DialogBoxHandler = (name, wnd) => { var messageBox = new MessageBoxTester(wnd); messageBoxText = messageBox.Text; messageBoxTitle = messageBox.Title; messageBox.ClickOk(); }; var importHandler = new GuiImportHandler(dialogParent, Enumerable.Empty <ImportInfo>(), inquiryHelper); // Call importHandler.ImportOn(3, Enumerable.Empty <ImportInfo>()); // Assert Assert.AreEqual("Fout", messageBoxTitle); Assert.AreEqual("Geen enkele 'Importer' is beschikbaar voor dit element.", messageBoxText); mockRepository.VerifyAll(); }
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(); }
/// <summary> /// Initializes a new instance of the <see cref="GuiCore"/> class. /// </summary> /// <param name="mainWindow">The main window.</param> /// <param name="projectStore">The project store.</param> /// <param name="projectMigrator">The project migrator.</param> /// <param name="projectFactory">The project factory.</param> /// <param name="fixedSettings">The fixed settings.</param> /// <exception cref="ArgumentNullException">Thrown when any parameter is <c>null</c>.</exception> public GuiCore(IMainWindow mainWindow, IStoreProject projectStore, IMigrateProject projectMigrator, IProjectFactory projectFactory, GuiCoreSettings fixedSettings) { if (mainWindow == null) { throw new ArgumentNullException(nameof(mainWindow)); } if (projectStore == null) { throw new ArgumentNullException(nameof(projectStore)); } if (projectMigrator == null) { throw new ArgumentNullException(nameof(projectMigrator)); } if (projectFactory == null) { throw new ArgumentNullException(nameof(projectFactory)); } if (fixedSettings == null) { throw new ArgumentNullException(nameof(fixedSettings)); } ProjectStore = projectStore; FixedSettings = fixedSettings; MainWindow = mainWindow; Plugins = new List <PluginBase>(); viewCommandHandler = new ViewCommandHandler(this, this, this); StorageCommands = new StorageCommandHandler(projectStore, projectMigrator, projectFactory, this, dialogBasedInquiryHelper, this); importCommandHandler = new GuiImportHandler(MainWindow, Plugins.SelectMany(p => p.GetImportInfos()) .Concat(MapImportInfoFactory.Create()), dialogBasedInquiryHelper); exportCommandHandler = new GuiExportHandler(MainWindow, Plugins.SelectMany(p => p.GetExportInfos())); updateCommandHandler = new GuiUpdateHandler(MainWindow, Plugins.SelectMany(p => p.GetUpdateInfos()), dialogBasedInquiryHelper); WindowsApplication.EnableVisualStyles(); ViewPropertyEditor.ViewCommands = ViewCommands; ProjectOpened += ApplicationProjectOpened; BeforeProjectOpened += ApplicationBeforeProjectOpened; projectObserver = new Observer(UpdateProjectData); applicationTitle = string.Format(CultureInfo.CurrentCulture, "{0} {1}", FixedSettings.ApplicationName, SettingsHelper.Instance.ApplicationVersion); SetTitle(); }
public void GetSupportedImportInfos_MultipleImportInfos_ReturnsEnumerationBasedOnTargetType() { // Setup var mocks = new MockRepository(); var dialogParent = mocks.Stub <IViewParent>(); var inquiryHelper = mocks.Stub <IInquiryHelper>(); mocks.ReplayAll(); var firstImportInfo = new ImportInfo <TestClassA> { Name = "1" }; var secondImportInfo = new ImportInfo <TestClassB> { Name = "2" }; var thirdImportInfo = new ImportInfo <TestClassC> { Name = "3" }; var fourthImportInfo = new ImportInfo <TestClassB> { Name = "4" }; var commandHandler = new GuiImportHandler(dialogParent, new ImportInfo[] { firstImportInfo, secondImportInfo, thirdImportInfo, fourthImportInfo }, inquiryHelper); // Call IEnumerable <ImportInfo> supportedImportInfos = commandHandler.GetSupportedImportInfos(new TestClassB()); // Assert var expectedImportInfos = new List <ImportInfo> { firstImportInfo, secondImportInfo, fourthImportInfo }; CollectionAssert.AreEqual(expectedImportInfos, supportedImportInfos, new ImportInfoNameComparer()); mocks.VerifyAll(); }
public void GetSupportedImportInfos_MultipleImportInfosForTargetType_ReturnsEnumerationBasedOnEnabledState( bool firstImportInfoEnabled, bool secondImportInfoEnabled) { // Setup var mocks = new MockRepository(); var dialogParent = mocks.Stub <IViewParent>(); var inquiryHelper = mocks.Stub <IInquiryHelper>(); mocks.ReplayAll(); var firstImportInfo = new ImportInfo <object> { Name = "1", IsEnabled = o => firstImportInfoEnabled }; var secondImportInfo = new ImportInfo <object> { Name = "2", IsEnabled = o => secondImportInfoEnabled }; var commandHandler = new GuiImportHandler(dialogParent, new ImportInfo[] { firstImportInfo, secondImportInfo }, inquiryHelper); // Call IEnumerable <ImportInfo> supportedImportInfos = commandHandler.GetSupportedImportInfos(new object()); // Assert var expectedImportInfos = new List <ImportInfo>(); if (firstImportInfoEnabled) { expectedImportInfos.Add(firstImportInfo); } if (secondImportInfoEnabled) { expectedImportInfos.Add(secondImportInfo); } CollectionAssert.AreEqual(expectedImportInfos, supportedImportInfos, new ImportInfoNameComparer()); mocks.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 GetSupportedImportInfos_NoImportInfos_ReturnsEmptyEnumeration() { // Setup var mocks = new MockRepository(); var dialogParent = mocks.Stub <IViewParent>(); var inquiryHelper = mocks.Stub <IInquiryHelper>(); mocks.ReplayAll(); var commandHandler = new GuiImportHandler(dialogParent, Enumerable.Empty <ImportInfo>(), inquiryHelper); // Call IEnumerable <ImportInfo> supportedImportInfos = commandHandler.GetSupportedImportInfos(new object()); // Assert CollectionAssert.IsEmpty(supportedImportInfos); mocks.VerifyAll(); }
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 GetSupportedImportInfos_NoImportInfosForTargetType_ReturnsEmptyEnumeration() { // Setup var mocks = new MockRepository(); var dialogParent = mocks.Stub <IViewParent>(); var inquiryHelper = mocks.Stub <IInquiryHelper>(); mocks.ReplayAll(); var commandHandler = new GuiImportHandler(dialogParent, new ImportInfo[] { new ImportInfo <TestClassA>(), new ImportInfo <TestClassB>() }, inquiryHelper); // Call IEnumerable <ImportInfo> supportedImportInfos = commandHandler.GetSupportedImportInfos(new TestClassC()); // Assert CollectionAssert.IsEmpty(supportedImportInfos); mocks.VerifyAll(); }
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(); }