コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
ファイル: GuiCore.cs プロジェクト: Deltares/Riskeer
        /// <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();
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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();
        }
コード例 #6
0
        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();
        }
コード例 #7
0
        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();
        }
コード例 #8
0
        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();
        }
コード例 #9
0
        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();
        }
コード例 #10
0
        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();
        }