public void CreateUpdateItem_CanUpdateOn_CausesUpdateToStartWhenClicked()
        {
            // Setup
            var commandHandler       = mocks.StrictMock <IApplicationFeatureCommands>();
            var importCommandHandler = mocks.StrictMock <IImportCommandHandler>();
            var exportCommandHandler = mocks.StrictMock <IExportCommandHandler>();
            var updateCommandHandler = mocks.StrictMock <IUpdateCommandHandler>();
            var viewCommands         = mocks.StrictMock <IViewCommands>();
            var nodeData             = new object();

            updateCommandHandler.Expect(ch => ch.CanUpdateOn(nodeData)).Return(true);
            updateCommandHandler.Expect(ch => ch.UpdateOn(nodeData));

            mocks.ReplayAll();

            var contextMenuFactory = new GuiContextMenuItemFactory(commandHandler,
                                                                   importCommandHandler,
                                                                   exportCommandHandler,
                                                                   updateCommandHandler,
                                                                   viewCommands,
                                                                   nodeData);

            ToolStripItem item = contextMenuFactory.CreateUpdateItem();

            // Call
            item.PerformClick();

            // Assert
            mocks.VerifyAll();
        }
        public void CreatePropertiesItem_Always_ItemWithPropertiesSet(bool hasPropertyInfoForNodeData)
        {
            // Setup
            var commandHandler       = mocks.StrictMock <IApplicationFeatureCommands>();
            var importCommandHandler = mocks.StrictMock <IImportCommandHandler>();
            var exportCommandHandler = mocks.StrictMock <IExportCommandHandler>();
            var updateCommandHandler = mocks.StrictMock <IUpdateCommandHandler>();
            var viewCommands         = mocks.StrictMock <IViewCommands>();
            var nodeData             = new object();

            commandHandler.Expect(ch => ch.CanShowPropertiesFor(nodeData)).Return(hasPropertyInfoForNodeData);

            var contextMenuFactory = new GuiContextMenuItemFactory(commandHandler,
                                                                   importCommandHandler,
                                                                   exportCommandHandler,
                                                                   updateCommandHandler,
                                                                   viewCommands,
                                                                   nodeData);

            mocks.ReplayAll();

            // Call
            ToolStripItem item = contextMenuFactory.CreatePropertiesItem();

            // Assert
            Assert.AreEqual("Ei&genschappen", item.Text);
            Assert.AreEqual("Toon de eigenschappen in het Eigenschappenpaneel.", item.ToolTipText);
            TestHelper.AssertImagesAreEqual(Resources.PropertiesHS, item.Image);
            Assert.AreEqual(hasPropertyInfoForNodeData, item.Enabled);

            mocks.VerifyAll();
        }
        public void CreateImportItemWithAllParameters_InvalidTextParameter_ThrowArgumentException(string text)
        {
            // Setup
            const string toolTip = "Import tooltip";
            Image        image   = Resources.ImportIcon;

            var commandHandler       = mocks.StrictMock <IApplicationFeatureCommands>();
            var importCommandHandler = mocks.StrictMock <IImportCommandHandler>();
            var exportCommandHandler = mocks.StrictMock <IExportCommandHandler>();
            var updateCommandHandler = mocks.StrictMock <IUpdateCommandHandler>();
            var viewCommands         = mocks.StrictMock <IViewCommands>();
            var nodeData             = new object();

            mocks.ReplayAll();

            var contextMenuFactory = new GuiContextMenuItemFactory(commandHandler,
                                                                   importCommandHandler,
                                                                   exportCommandHandler,
                                                                   updateCommandHandler,
                                                                   viewCommands,
                                                                   nodeData);

            // Call
            void Call() => contextMenuFactory.CreateImportItem(text, toolTip, image, Enumerable.Empty <ImportInfo>());

            // Assert
            var exception = TestHelper.AssertThrowsArgumentExceptionAndTestMessage <ArgumentException>(Call, "Text should be set.");

            Assert.AreEqual("text", exception.ParamName);

            mocks.VerifyAll();
        }
        public void CreateUpdateItem_Always_ItemWithPropertiesSet(bool canUpdateOn)
        {
            // Setup
            var commandHandler       = mocks.StrictMock <IApplicationFeatureCommands>();
            var importCommandHandler = mocks.StrictMock <IImportCommandHandler>();
            var exportCommandHandler = mocks.StrictMock <IExportCommandHandler>();
            var updateCommandHandler = mocks.StrictMock <IUpdateCommandHandler>();
            var viewCommands         = mocks.StrictMock <IViewCommands>();
            var nodeData             = new object();

            updateCommandHandler.Expect(ch => ch.CanUpdateOn(nodeData)).Return(canUpdateOn);

            mocks.ReplayAll();

            var contextMenuFactory = new GuiContextMenuItemFactory(commandHandler,
                                                                   importCommandHandler,
                                                                   exportCommandHandler,
                                                                   updateCommandHandler,
                                                                   viewCommands,
                                                                   nodeData);

            // Call
            ToolStripItem item = contextMenuFactory.CreateUpdateItem();

            // Assert
            Assert.AreEqual("&Bijwerken...", item.Text);
            Assert.AreEqual("Werk de geïmporteerde gegevens bij met nieuwe gegevens vanuit een bestand.", item.ToolTipText);
            TestHelper.AssertImagesAreEqual(Resources.RefreshIcon, item.Image);
            Assert.AreEqual(canUpdateOn, item.Enabled);

            mocks.VerifyAll();
        }
        public void CreateImportItemWithAllParameters_ImageParameterNull_ThrowArgumentNullException()
        {
            // Setup
            const string text    = "Import";
            const string toolTip = "Import tooltip";

            var commandHandler       = mocks.StrictMock <IApplicationFeatureCommands>();
            var importCommandHandler = mocks.StrictMock <IImportCommandHandler>();
            var exportCommandHandler = mocks.StrictMock <IExportCommandHandler>();
            var updateCommandHandler = mocks.StrictMock <IUpdateCommandHandler>();
            var viewCommands         = mocks.StrictMock <IViewCommands>();
            var nodeData             = new object();

            mocks.ReplayAll();

            var contextMenuFactory = new GuiContextMenuItemFactory(commandHandler,
                                                                   importCommandHandler,
                                                                   exportCommandHandler,
                                                                   updateCommandHandler,
                                                                   viewCommands,
                                                                   nodeData);

            // Call
            void Call() => contextMenuFactory.CreateImportItem(text, toolTip, null, Enumerable.Empty <ImportInfo>());

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("image", exception.ParamName);

            mocks.VerifyAll();
        }
        public void CreateImportItemWithImportInfosParameter_SupportedImportInfo_CausesImportToStartWhenClicked()
        {
            // Setup
            var commandHandler       = mocks.StrictMock <IApplicationFeatureCommands>();
            var importCommandHandler = mocks.StrictMock <IImportCommandHandler>();
            var exportCommandHandler = mocks.StrictMock <IExportCommandHandler>();
            var updateCommandHandler = mocks.StrictMock <IUpdateCommandHandler>();
            var viewCommands         = mocks.StrictMock <IViewCommands>();
            var nodeData             = new object();

            ImportInfo[] importInfos =
            {
                new ImportInfo()
            };

            importCommandHandler.Expect(ich => ich.ImportOn(nodeData, importInfos));

            mocks.ReplayAll();

            var contextMenuFactory = new GuiContextMenuItemFactory(commandHandler,
                                                                   importCommandHandler,
                                                                   exportCommandHandler,
                                                                   updateCommandHandler,
                                                                   viewCommands,
                                                                   nodeData);

            ToolStripItem item = contextMenuFactory.CreateImportItem(importInfos);

            // Call
            item.PerformClick();

            // Assert
            mocks.VerifyAll();
        }
        public void CreateExportItem_Always_ItemWithPropertiesSet(bool hasExportersForNodeData)
        {
            // Setup
            var commandHandler       = mocks.StrictMock <IApplicationFeatureCommands>();
            var importCommandHandler = mocks.StrictMock <IImportCommandHandler>();
            var exportCommandHandler = mocks.StrictMock <IExportCommandHandler>();
            var updateCommandHandler = mocks.StrictMock <IUpdateCommandHandler>();
            var viewCommands         = mocks.StrictMock <IViewCommands>();
            var nodeData             = new object();

            exportCommandHandler.Expect(ch => ch.CanExportFrom(nodeData)).Return(hasExportersForNodeData);

            mocks.ReplayAll();

            var contextMenuFactory = new GuiContextMenuItemFactory(commandHandler,
                                                                   importCommandHandler,
                                                                   exportCommandHandler,
                                                                   updateCommandHandler,
                                                                   viewCommands,
                                                                   nodeData);

            // Call
            ToolStripItem item = contextMenuFactory.CreateExportItem();

            // Assert
            Assert.AreEqual("&Exporteren...", item.Text);
            Assert.AreEqual("Exporteer de gegevens naar een bestand.", item.ToolTipText);
            TestHelper.AssertImagesAreEqual(Resources.ExportIcon, item.Image);
            Assert.AreEqual(hasExportersForNodeData, item.Enabled);

            mocks.VerifyAll();
        }
        public void CreateOpenItem_Always_ItemWithPropertiesSet(bool canOpenView)
        {
            // Setup
            var commandHandler       = mocks.StrictMock <IApplicationFeatureCommands>();
            var importCommandHandler = mocks.StrictMock <IImportCommandHandler>();
            var exportCommandHandler = mocks.StrictMock <IExportCommandHandler>();
            var updateCommandHandler = mocks.StrictMock <IUpdateCommandHandler>();
            var viewCommands         = mocks.StrictMock <IViewCommands>();
            var nodeData             = new object();

            viewCommands.Expect(ch => ch.CanOpenViewFor(nodeData)).Return(canOpenView);

            mocks.ReplayAll();

            var contextMenuFactory = new GuiContextMenuItemFactory(commandHandler,
                                                                   importCommandHandler,
                                                                   exportCommandHandler,
                                                                   updateCommandHandler,
                                                                   viewCommands,
                                                                   nodeData);

            // Call
            ToolStripItem item = contextMenuFactory.CreateOpenItem();

            // Assert
            Assert.AreEqual("&Openen", item.Text);
            Assert.AreEqual("Open de gegevens in een nieuw documentvenster.", item.ToolTipText);
            TestHelper.AssertImagesAreEqual(Resources.OpenIcon, item.Image);
            Assert.AreEqual(canOpenView, item.Enabled);

            mocks.VerifyAll();
        }
        public void CreateImportItemWithAllParameters_Always_ItemWithPropertiesSet(bool hasImportersForNodeData)
        {
            // Setup
            const string text    = "Import";
            const string toolTip = "Import tooltip";
            Image        image   = Resources.ImportIcon;

            var commandHandler       = mocks.StrictMock <IApplicationFeatureCommands>();
            var importCommandHandler = mocks.StrictMock <IImportCommandHandler>();
            var exportCommandHandler = mocks.StrictMock <IExportCommandHandler>();
            var updateCommandHandler = mocks.StrictMock <IUpdateCommandHandler>();
            var viewCommands         = mocks.StrictMock <IViewCommands>();
            var nodeData             = new object();

            mocks.ReplayAll();

            ImportInfo[] importInfos = hasImportersForNodeData
                                           ? new[]
            {
                new ImportInfo()
            }
                                           : new ImportInfo[0];

            var contextMenuFactory = new GuiContextMenuItemFactory(commandHandler,
                                                                   importCommandHandler,
                                                                   exportCommandHandler,
                                                                   updateCommandHandler,
                                                                   viewCommands,
                                                                   nodeData);

            // Call
            ToolStripItem item = contextMenuFactory.CreateImportItem(text, toolTip, image, importInfos);

            // Assert
            Assert.AreEqual(text, item.Text);
            Assert.AreEqual(toolTip, item.ToolTipText);
            TestHelper.AssertImagesAreEqual(image, item.Image);
            Assert.AreEqual(hasImportersForNodeData, item.Enabled);

            mocks.VerifyAll();
        }
        public void CreateImportItemWithTextualParameters_SupportedImportInfo_CausesImportToStartWhenClicked()
        {
            // Setup
            const string text    = "Import";
            const string toolTip = "Import tooltip";
            Image        image   = Resources.ImportIcon;

            var commandHandler       = mocks.StrictMock <IApplicationFeatureCommands>();
            var importCommandHandler = mocks.StrictMock <IImportCommandHandler>();
            var exportCommandHandler = mocks.StrictMock <IExportCommandHandler>();
            var updateCommandHandler = mocks.StrictMock <IUpdateCommandHandler>();
            var viewCommands         = mocks.StrictMock <IViewCommands>();
            var nodeData             = new object();

            ImportInfo[] importInfos =
            {
                new ImportInfo()
            };

            importCommandHandler.Expect(ich => ich.GetSupportedImportInfos(nodeData)).Return(importInfos);
            importCommandHandler.Expect(ich => ich.ImportOn(nodeData, importInfos));

            mocks.ReplayAll();

            var contextMenuFactory = new GuiContextMenuItemFactory(commandHandler,
                                                                   importCommandHandler,
                                                                   exportCommandHandler,
                                                                   updateCommandHandler,
                                                                   viewCommands,
                                                                   nodeData);

            ToolStripItem item = contextMenuFactory.CreateImportItem(text, toolTip, image);

            // Call
            item.PerformClick();

            // Assert
            mocks.VerifyAll();
        }
        public void CreateImportItemWithImportInfosParameter_Always_ItemWithPropertiesSet(bool hasImportersForNodeData)
        {
            // Setup
            var commandHandler       = mocks.StrictMock <IApplicationFeatureCommands>();
            var importCommandHandler = mocks.StrictMock <IImportCommandHandler>();
            var exportCommandHandler = mocks.StrictMock <IExportCommandHandler>();
            var updateCommandHandler = mocks.StrictMock <IUpdateCommandHandler>();
            var viewCommands         = mocks.StrictMock <IViewCommands>();
            var nodeData             = new object();

            mocks.ReplayAll();

            ImportInfo[] importInfos = hasImportersForNodeData
                                           ? new[]
            {
                new ImportInfo()
            }
                                           : new ImportInfo[0];

            var contextMenuFactory = new GuiContextMenuItemFactory(commandHandler,
                                                                   importCommandHandler,
                                                                   exportCommandHandler,
                                                                   updateCommandHandler,
                                                                   viewCommands,
                                                                   nodeData);

            // Call
            ToolStripItem item = contextMenuFactory.CreateImportItem(importInfos);

            // Assert
            Assert.AreEqual("&Importeren...", item.Text);
            Assert.AreEqual("Importeer de gegevens vanuit een bestand.", item.ToolTipText);
            TestHelper.AssertImagesAreEqual(Resources.ImportIcon, item.Image);
            Assert.AreEqual(hasImportersForNodeData, item.Enabled);

            mocks.VerifyAll();
        }