Skip to content

Commit

Permalink
unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
k3ldar committed Jan 13, 2024
1 parent b6b6ca6 commit 24402f3
Show file tree
Hide file tree
Showing 12 changed files with 325 additions and 39 deletions.
36 changes: 36 additions & 0 deletions src/GCATests/Mocks/MockGSendContext.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using System;

using GSendShared;
using GSendShared.Abstractions;

namespace GSendTests.Mocks
{
internal class MockGSendContext : IGSendContext
{
public MockGSendContext()
{
}

public MockGSendContext(IServiceProvider serviceProvider)
: this()
{
ServiceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
}

public IServiceProvider ServiceProvider { get; set; }

public bool IsClosing => throw new NotImplementedException();

public IGSendSettings Settings => throw new NotImplementedException();

public void CloseContext()
{
throw new NotImplementedException();
}

public void ShowMachine(IMachine machine)
{
throw new NotImplementedException();
}
}
}
17 changes: 15 additions & 2 deletions src/GCATests/Mocks/MockSenderPluginHost.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;

using GSendControls.Abstractions;

using GSendShared;
using GSendShared.Models;
using GSendShared.Plugins;
Expand All @@ -16,11 +18,22 @@ public MockSenderPluginHost()

}

public MockSenderPluginHost(IGSendContext gSendContext)
{
GSendContext = gSendContext ?? throw new ArgumentNullException(nameof(gSendContext));
}

public MockSenderPluginHost(IPluginMenu parentMenu)
{
_parent = parentMenu;
}

public MockSenderPluginHost(IPluginMenu parentMenu, IGSendContext gSendContext)
: this(gSendContext)
{
_parent = parentMenu;
}

public IMachine Machine { get; set; }

public List<string> Messages { get; } = new();
Expand All @@ -39,7 +52,7 @@ IPluginMenu IPluginHost.GetMenu(MenuParent menuParent)

public void AddMenu(IPluginMenu pluginMenu)
{

}

public void AddMessage(InformationType informationType, string message)
Expand Down Expand Up @@ -89,6 +102,6 @@ public void AddControl(IPluginControl pluginControl)
throw new NotImplementedException();
}

public IGSendContext GSendContext => throw new NotImplementedException();
public IGSendContext GSendContext { get; set; }
}
}
6 changes: 6 additions & 0 deletions src/GCATests/Mocks/MockServiceProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

using PluginManager.Abstractions;

using Shared.Classes;

namespace GSendTests.Mocks
{
internal class MockServiceProvider : IServiceProvider
Expand All @@ -27,6 +29,10 @@ public object GetService(Type serviceType)
{
return new MockPluginClassesService();
}
else if (serviceType.Equals(typeof(IRunProgram)))
{
return new MockRunProgram();
}
}

return null;
Expand Down
75 changes: 75 additions & 0 deletions src/GCATests/Plugins/HelpMenuTests/BugsAndIdeasMenuTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
using System;
using System.Diagnostics.CodeAnalysis;

using GSendControls.Plugins.InternalPlugins.HelpMenu;

using GSendShared.Plugins;

using GSendTests.Mocks;

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace GSendTests.Plugins.HelpMenuTests
{
[TestClass]
[ExcludeFromCodeCoverage]
public sealed class BugsAndIdeasMenuTests
{
[TestMethod]
public void Construct_BugsAndIdeasMenuItem_Success()
{
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
BugsAndIdeasMenu sut = new(parentMenu, new MockRunProgram());
Assert.IsNotNull(sut);
Assert.IsNull(sut.MenuImage);
Assert.AreEqual(MenuType.MenuItem, sut.MenuType);
Assert.IsNotNull(sut.ParentMenu);
Assert.AreSame(parentMenu, sut.ParentMenu);
Assert.AreEqual("Bugs and Ideas", sut.Text);
Assert.AreEqual(2, sut.Index);
Assert.IsFalse(sut.ReceiveClientMessages);
Assert.IsFalse(sut.GetShortcut([], out string grpName, out string shrtCutName));
Assert.IsNull(grpName);
Assert.IsNull(shrtCutName);
Assert.IsFalse(sut.IsChecked());
Assert.IsTrue(sut.IsEnabled());
Assert.IsTrue(sut.IsVisible());
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_ParentNull_Throws_ArgumentNullException()
{
new BugsAndIdeasMenu(null, new MockRunProgram());
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_RunProgramNull_Throws_ArgumentNullException()
{
new BugsAndIdeasMenu(new MockPluginMenu("test", MenuType.MenuItem, null), null);
}

[TestMethod]
public void UpdateHost_DoesNotCrash_Success()
{
HelpMenuItem sut = new(new MockPluginMenu("test", MenuType.MenuItem, null), new MockRunProgram());
Assert.IsNotNull(sut);
sut.UpdateHost<BugsAndIdeasMenu>(null);
}

[TestMethod]
public void Clicked_RunsHomePageUsingShellExecute_Success()
{
MockRunProgram mockRunProgram = new();
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
BugsAndIdeasMenu sut = new(parentMenu, mockRunProgram);
sut.Clicked();
Assert.AreEqual("https://github.com/k3ldar/GSendPro/issues", mockRunProgram.ProgramName);
Assert.IsNull(mockRunProgram.Parameters);
Assert.IsTrue(mockRunProgram.UseShellExecute);
Assert.IsFalse(mockRunProgram.WaitForFinish);
Assert.AreEqual(500, mockRunProgram.TimeoutMilliseconds);
}
}
}
79 changes: 79 additions & 0 deletions src/GCATests/Plugins/HelpMenuTests/HelpMenuItemTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using GSendControls.Plugins.InternalPlugins.HelpMenu;

using GSendShared.Plugins;

using GSendTests.Mocks;

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace GSendTests.Plugins.HelpMenuTests
{
[TestClass]
[ExcludeFromCodeCoverage]
public sealed class HelpMenuItemTests
{
[TestMethod]
public void Construct_HelpMenuItem_Success()
{
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
HelpMenuItem sut = new(parentMenu, new MockRunProgram());
Assert.IsNotNull(sut);
Assert.IsNull(sut.MenuImage);
Assert.AreEqual(MenuType.MenuItem, sut.MenuType);
Assert.IsNotNull(sut.ParentMenu);
Assert.AreSame(parentMenu, sut.ParentMenu);
Assert.AreEqual("Help", sut.Text);
Assert.AreEqual(0, sut.Index);
Assert.IsFalse(sut.ReceiveClientMessages);
Assert.IsFalse(sut.GetShortcut([], out string grpName, out string shrtCutName));
Assert.IsNull(grpName);
Assert.IsNull(shrtCutName);
Assert.IsFalse(sut.IsChecked());
Assert.IsTrue(sut.IsEnabled());
Assert.IsTrue(sut.IsVisible());
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_ParentNull_Throws_ArgumentNullException()
{
new HelpMenuItem(null, new MockRunProgram());
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_RunProgramNull_Throws_ArgumentNullException()
{
new HelpMenuItem(new MockPluginMenu("test", MenuType.MenuItem, null), null);
}

[TestMethod]
public void UpdateHost_DoesNotCrash_Success()
{
HelpMenuItem sut = new(new MockPluginMenu("test", MenuType.MenuItem, null), new MockRunProgram());
Assert.IsNotNull(sut);
sut.UpdateHost<HelpMenuItem>(null);
}

[TestMethod]
public void Clicked_RunsHomePageUsingShellExecute_Success()
{
MockRunProgram mockRunProgram = new();
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
HelpMenuItem sut = new(parentMenu, mockRunProgram);
sut.Clicked();
Assert.AreEqual("https://www.gsend.pro/help", mockRunProgram.ProgramName);
Assert.IsNull(mockRunProgram.Parameters);
Assert.IsTrue(mockRunProgram.UseShellExecute);
Assert.IsFalse(mockRunProgram.WaitForFinish);
Assert.AreEqual(500, mockRunProgram.TimeoutMilliseconds);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,10 @@
using GSendControls.Plugins.InternalPlugins.HelpMenu;

using GSendShared.Plugins;

using GSendTests.Mocks;

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace GSendTests.Shared.Plugins
namespace GSendTests.Plugins.HelpMenuTests
{
[TestClass]
[ExcludeFromCodeCoverage]
Expand All @@ -21,7 +19,8 @@ public class HelpMenuPluginTests
public void HelpMenuPlugin_ConstructValidInstance_Success()
{
IPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
MockSenderPluginHost pluginHost = new(parentMenu);
MockGSendContext gSendContext = new(new MockServiceProvider());
MockSenderPluginHost pluginHost = new(parentMenu, gSendContext);
HelpMenuPlugin sut = new();
sut.Initialize(pluginHost);

Expand All @@ -43,7 +42,7 @@ public void HelpMenuPlugin_ConstructValidInstance_Success()
public void HelpMenuItem_ConstructValidInstance_Success()
{
IPluginMenu parent = new MockPluginMenu("help", MenuType.MenuItem, null);
HelpMenuItem sut = new(parent);
HelpMenuItem sut = new(parent, new MockRunProgram());

Assert.IsNotNull(sut);
Assert.AreEqual("Help", sut.Text);
Expand Down Expand Up @@ -82,7 +81,7 @@ public void SeperatorMenuItem_ConstructValidInstance_Success()
public void BugsAndIdeasMenuItem_ConstructValidInstance_Success()
{
IPluginMenu parent = new MockPluginMenu("help", MenuType.MenuItem, null);
BugsAndIdeasMenu sut = new(parent);
BugsAndIdeasMenu sut = new(parent, new MockRunProgram());
Assert.IsNotNull(sut);
Assert.AreEqual("Bugs and Ideas", sut.Text);
Assert.AreEqual(2, sut.Index);
Expand All @@ -101,7 +100,7 @@ public void BugsAndIdeasMenuItem_ConstructValidInstance_Success()
public void HomePageMenuItem_ConstructValidInstance_Success()
{
IPluginMenu parent = new MockPluginMenu("help", MenuType.MenuItem, null);
HomePageMenu sut = new(parent);
HomePageMenu sut = new(parent, new MockRunProgram());
Assert.IsNotNull(sut);
Assert.AreEqual("Home Page", sut.Text);
Assert.AreEqual(4, sut.Index);
Expand Down
76 changes: 76 additions & 0 deletions src/GCATests/Plugins/HelpMenuTests/HomePageMenuTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
using System;
using System.Diagnostics.CodeAnalysis;

using GSendControls.Plugins.InternalPlugins.HelpMenu;
using GSendControls.Plugins.InternalPlugins.SearchMenu;

using GSendShared.Plugins;

using GSendTests.Mocks;

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace GSendTests.Plugins.HelpMenuTests
{
[TestClass]
[ExcludeFromCodeCoverage]
public sealed class HomePageMenuTests
{
[TestMethod]
public void Construct_HomePageMenuItem_Success()
{
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
HomePageMenu sut = new(parentMenu, new MockRunProgram());
Assert.IsNotNull(sut);
Assert.IsNull(sut.MenuImage);
Assert.AreEqual(MenuType.MenuItem, sut.MenuType);
Assert.IsNotNull(sut.ParentMenu);
Assert.AreSame(parentMenu, sut.ParentMenu);
Assert.AreEqual("Home Page", sut.Text);
Assert.AreEqual(4, sut.Index);
Assert.IsFalse(sut.ReceiveClientMessages);
Assert.IsFalse(sut.GetShortcut([], out string grpName, out string shrtCutName));
Assert.IsNull(grpName);
Assert.IsNull(shrtCutName);
Assert.IsFalse(sut.IsChecked());
Assert.IsTrue(sut.IsEnabled());
Assert.IsTrue(sut.IsVisible());
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_ParentNull_Throws_ArgumentNullException()
{
new HomePageMenu(null, new MockRunProgram());
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Construct_InvalidParam_RunProgramNull_Throws_ArgumentNullException()
{
new HomePageMenu(new MockPluginMenu("test", MenuType.MenuItem, null), null);
}

[TestMethod]
public void UpdateHost_DoesNotCrash_Success()
{
HomePageMenu sut = new(new MockPluginMenu("test", MenuType.MenuItem, null), new MockRunProgram());
Assert.IsNotNull(sut);
sut.UpdateHost<FindMenuItem>(null);
}

[TestMethod]
public void Clicked_RunsHomePageUsingShellExecute_Success()
{
MockRunProgram mockRunProgram = new();
MockPluginMenu parentMenu = new MockPluginMenu("test", MenuType.MenuItem, null);
HomePageMenu sut = new(parentMenu, mockRunProgram);
sut.Clicked();
Assert.AreEqual("https://www.gsend.pro/", mockRunProgram.ProgramName);
Assert.IsNull(mockRunProgram.Parameters);
Assert.IsTrue(mockRunProgram.UseShellExecute);
Assert.IsFalse(mockRunProgram.WaitForFinish);
Assert.AreEqual(500, mockRunProgram.TimeoutMilliseconds);
}
}
}
2 changes: 1 addition & 1 deletion src/GCATests/Shared/Plugins/ServerMenuPluginTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public void SeperatorMenuItem_ConstructValidInstance_Success()
public void HomePageMenuItem_ConstructValidInstance_Success()
{
IPluginMenu parent = new MockPluginMenu("help", MenuType.MenuItem, null);
HomePageMenu sut = new(parent);
HomePageMenu sut = new(parent, new MockRunProgram());
Assert.IsNotNull(sut);
Assert.AreEqual("Home Page", sut.Text);
Assert.AreEqual(4, sut.Index);
Expand Down
Loading

0 comments on commit 24402f3

Please sign in to comment.