From c04bb44da38996bb3dd364af3908db1acbbd0341 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Sat, 3 Mar 2018 13:25:42 -0600 Subject: [PATCH] fixed a composition bug and created a few tests --- .../Controls/ExternalToolsToolStripTests.cs | 49 +++++++++++++++++++ mRemoteNGTests/UI/Forms/FrmMainTests.cs | 16 ++++++ mRemoteNGTests/mRemoteNGTests.csproj | 2 + .../UI/Controls/ExternalToolsToolStrip.cs | 3 +- mRemoteV1/UI/Forms/frmMain.cs | 2 +- 5 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 mRemoteNGTests/UI/Controls/ExternalToolsToolStripTests.cs create mode 100644 mRemoteNGTests/UI/Forms/FrmMainTests.cs diff --git a/mRemoteNGTests/UI/Controls/ExternalToolsToolStripTests.cs b/mRemoteNGTests/UI/Controls/ExternalToolsToolStripTests.cs new file mode 100644 index 000000000..e50f6769d --- /dev/null +++ b/mRemoteNGTests/UI/Controls/ExternalToolsToolStripTests.cs @@ -0,0 +1,49 @@ +using System; +using mRemoteNG.Connection; +using mRemoteNG.Tools; +using mRemoteNG.UI.Controls; +using NSubstitute; +using NUnit.Framework; + +namespace mRemoteNGTests.UI.Controls +{ + public class ExternalToolsToolStripTests + { + private ExternalToolsToolStrip _externalToolsToolStrip; + + [SetUp] + public void Setup() + { + _externalToolsToolStrip = new ExternalToolsToolStrip(); + } + + [TearDown] + public void Teardown() + { + _externalToolsToolStrip.Dispose(); + } + + [Test] + public void SettingExternalToolsServiceToNullThrowsException() + { + Assert.Throws(() => _externalToolsToolStrip.ExternalToolsService = null); + } + + [Test] + public void AddExternalToolsToToolBarCreatesControlsForAllExternalTools() + { + var externaltoolsService = new ExternalToolsService(); + externaltoolsService.ExternalTools.Add(BuildExternalTool()); + externaltoolsService.ExternalTools.Add(BuildExternalTool()); + + _externalToolsToolStrip.ExternalToolsService = externaltoolsService; + _externalToolsToolStrip.AddExternalToolsToToolBar(); + Assert.That(_externalToolsToolStrip.Items.Count, Is.EqualTo(2)); + } + + private ExternalTool BuildExternalTool() + { + return new ExternalTool(Substitute.For()); + } + } +} diff --git a/mRemoteNGTests/UI/Forms/FrmMainTests.cs b/mRemoteNGTests/UI/Forms/FrmMainTests.cs new file mode 100644 index 000000000..d3d1988f4 --- /dev/null +++ b/mRemoteNGTests/UI/Forms/FrmMainTests.cs @@ -0,0 +1,16 @@ +using System.Threading; +using mRemoteNG.UI.Forms; +using NUnit.Framework; + +namespace mRemoteNGTests.UI.Forms +{ + public class FrmMainTests + { + [Test] + [Apartment(ApartmentState.STA)] + public void CanCreateFrmMain() + { + var frmMain = FrmMain.Default; + } + } +} diff --git a/mRemoteNGTests/mRemoteNGTests.csproj b/mRemoteNGTests/mRemoteNGTests.csproj index b8f75cbf9..b0c08af6d 100644 --- a/mRemoteNGTests/mRemoteNGTests.csproj +++ b/mRemoteNGTests/mRemoteNGTests.csproj @@ -204,6 +204,7 @@ + Form @@ -225,6 +226,7 @@ TextBoxExtensionsTestForm.cs + diff --git a/mRemoteV1/UI/Controls/ExternalToolsToolStrip.cs b/mRemoteV1/UI/Controls/ExternalToolsToolStrip.cs index ed11f0cae..00831153b 100644 --- a/mRemoteV1/UI/Controls/ExternalToolsToolStrip.cs +++ b/mRemoteV1/UI/Controls/ExternalToolsToolStrip.cs @@ -25,7 +25,8 @@ namespace mRemoteNG.UI.Controls set { value.ThrowIfNull("value"); - _externalToolsService.ExternalTools.CollectionUpdated -= ExternalToolsOnCollectionUpdated; + if (_externalToolsService != null) + _externalToolsService.ExternalTools.CollectionUpdated -= ExternalToolsOnCollectionUpdated; _externalToolsService = value; _externalToolsService.ExternalTools.CollectionUpdated += ExternalToolsOnCollectionUpdated; } diff --git a/mRemoteV1/UI/Forms/frmMain.cs b/mRemoteV1/UI/Forms/frmMain.cs index 6f857ec72..376b2c2fb 100644 --- a/mRemoteV1/UI/Forms/frmMain.cs +++ b/mRemoteV1/UI/Forms/frmMain.cs @@ -101,12 +101,12 @@ namespace mRemoteNG.UI.Forms _connectionInitiator.Adder = _panelAdder; _startup = new Startup(this, _windows); connectionTreeContextMenu.ShowWindowAction = _windows.Show; - _externalToolsToolStrip.ExternalToolsService = externalToolsService; InitializeComponent(); var externalAppsLoader = new ExternalAppsLoader(Runtime.MessageCollector, _externalToolsToolStrip, _connectionInitiator, externalToolsService); _settingsLoader = new SettingsLoader(this, Runtime.MessageCollector, _quickConnectToolStrip, _externalToolsToolStrip, _multiSshToolStrip, externalAppsLoader, _notificationAreaIconBuilder); + _externalToolsToolStrip.ExternalToolsService = externalToolsService; _externalToolsToolStrip.GetSelectedConnectionFunc = () => SelectedConnection; _quickConnectToolStrip.ConnectionInitiator = _connectionInitiator; CredentialRecordTypeConverter.CredentialRepositoryList = _credentialRepositoryList;