diff --git a/VPLink.Tests/BotConfigurationTests.cs b/VPLink.Tests/BotConfigurationTests.cs new file mode 100644 index 0000000..5239270 --- /dev/null +++ b/VPLink.Tests/BotConfigurationTests.cs @@ -0,0 +1,35 @@ +using NSubstitute; +using NSubstitute.Extensions; +using VPLink.Common.Configuration; +using VPLink.Common.Services; + +namespace VPLink.Tests; + +public class BotConfigurationTests +{ + private IConfigurationService _configurationService = null!; + + [SetUp] + public void Setup() + { + var configuration = Substitute.For(); + configuration.AnnounceAvatarEvents.Returns(true); + configuration.AnnounceBots.Returns(false); + configuration.RelayBotMessages.Returns(false); + + _configurationService = Substitute.For(); + _configurationService.Configure().BotConfiguration.Returns(configuration); + } + + [Test] + public void BotConfiguration_ShouldReturnCorrectValues_GivenDefaultConfig() + { + IBotConfiguration configuration = _configurationService.BotConfiguration; + Assert.Multiple(() => + { + Assert.That(configuration.AnnounceAvatarEvents, Is.True); + Assert.That(configuration.AnnounceBots, Is.False); + Assert.That(configuration.RelayBotMessages, Is.False); + }); + } +} diff --git a/VPLink.Tests/DiscordConfigurationTests.cs b/VPLink.Tests/DiscordConfigurationTests.cs new file mode 100644 index 0000000..50bfefe --- /dev/null +++ b/VPLink.Tests/DiscordConfigurationTests.cs @@ -0,0 +1,33 @@ +using NSubstitute; +using NSubstitute.Extensions; +using VPLink.Common.Configuration; +using VPLink.Common.Services; + +namespace VPLink.Tests; + +public class DiscordConfigurationTests +{ + private IConfigurationService _configurationService = null!; + + [SetUp] + public void Setup() + { + var configuration = Substitute.For(); + configuration.Token.Returns("DISCORD_TOKEN"); + configuration.ChannelId.Returns(1234567890UL); + + _configurationService = Substitute.For(); + _configurationService.Configure().DiscordConfiguration.Returns(configuration); + } + + [Test] + public void DiscordConfiguration_ShouldReturnCorrectValues_GivenDefaultConfig() + { + IDiscordConfiguration configuration = _configurationService.DiscordConfiguration; + Assert.Multiple(() => + { + Assert.That(configuration.Token, Is.EqualTo("DISCORD_TOKEN")); + Assert.That(configuration.ChannelId, Is.EqualTo(1234567890UL)); + }); + } +} diff --git a/VPLink.Tests/RelayTests.cs b/VPLink.Tests/RelayTests.cs new file mode 100644 index 0000000..68a3ee1 --- /dev/null +++ b/VPLink.Tests/RelayTests.cs @@ -0,0 +1,64 @@ +using System.Reactive.Linq; +using System.Reactive.Subjects; +using NSubstitute; +using NSubstitute.Extensions; +using VPLink.Common.Data; +using VPLink.Common.Services; +using VpSharp.Extensions; + +namespace VPLink.Tests; + +public class RelayTests +{ + private readonly Subject _vpMessageReceived = new(); + private readonly Subject _discordMessageReceived = new(); + private IVirtualParadiseMessageService _vpMessageService = null!; + private IDiscordMessageService _discordMessageService = null!; + + [SetUp] + public void Setup() + { + _discordMessageService = Substitute.For(); + _discordMessageService.Configure().SendMessageAsync(Arg.Any()).Returns(Task.CompletedTask); + + _vpMessageService = Substitute.For(); + _vpMessageService.Configure().OnMessageReceived.Returns(_vpMessageReceived.AsObservable()); + + _discordMessageService = Substitute.For(); + _discordMessageService.Configure().OnMessageReceived.Returns(_discordMessageReceived.AsObservable()); + + _discordMessageReceived.SubscribeAsync(_vpMessageService.SendMessageAsync); + _vpMessageReceived.SubscribeAsync(_discordMessageService.SendMessageAsync); + } + + [Test] + public void VirtualParadiseMessage_ShouldRelay_ToDiscordService() + { + var observer = Substitute.For>(); + _vpMessageReceived.Subscribe(observer); + + const string author = "Admin"; + const string message = "Hello, world!"; + + _vpMessageReceived.OnNext(new RelayedMessage(author, message)); + + observer.Received(1).OnNext(Arg.Is(m => m.Author == author && m.Content == message)); + _discordMessageService.Received(1) + .SendMessageAsync(Arg.Is(m => m.Author == author && m.Content == message)); + } + + [Test] + public void DiscordMessage_ShouldRelay_ToVirtualParadiseService() + { + var observer = Substitute.For>(); + _discordMessageReceived.Subscribe(observer); + + const string author = "Admin"; + const string message = "Hello, world!"; + + _discordMessageReceived.OnNext(new RelayedMessage(author, message)); + + observer.Received(1).OnNext(Arg.Is(m => m.Author == author && m.Content == message)); + _vpMessageService.Received(1).SendMessageAsync(Arg.Is(m => m.Author == author && m.Content == message)); + } +} diff --git a/VPLink.Tests/UnitTest1.cs b/VPLink.Tests/UnitTest1.cs deleted file mode 100644 index e27f1e1..0000000 --- a/VPLink.Tests/UnitTest1.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace VPLink.Tests; - -public class Tests -{ - [SetUp] - public void Setup() - { - } - - [Test] - public void Test1() - { - Assert.Pass(); - } -} diff --git a/VPLink.Tests/VPLink.Tests.csproj b/VPLink.Tests/VPLink.Tests.csproj index 226d57f..fd7977f 100644 --- a/VPLink.Tests/VPLink.Tests.csproj +++ b/VPLink.Tests/VPLink.Tests.csproj @@ -11,10 +11,15 @@ + + + + + diff --git a/VPLink.Tests/VirtualParadiseConfigurationTests.cs b/VPLink.Tests/VirtualParadiseConfigurationTests.cs new file mode 100644 index 0000000..c24f280 --- /dev/null +++ b/VPLink.Tests/VirtualParadiseConfigurationTests.cs @@ -0,0 +1,37 @@ +using NSubstitute; +using NSubstitute.Extensions; +using VPLink.Common.Configuration; +using VPLink.Common.Services; + +namespace VPLink.Tests; + +public class VirtualParadiseConfigurationTests +{ + private IConfigurationService _configurationService = null!; + + [SetUp] + public void Setup() + { + var configuration = Substitute.For(); + configuration.Username.Returns("Admin"); + configuration.Password.Returns("Password1234"); + configuration.World.Returns("Blizzard"); + configuration.BotName.Returns("VPLink"); + + _configurationService = Substitute.For(); + _configurationService.Configure().VirtualParadiseConfiguration.Returns(configuration); + } + + [Test] + public void DiscordConfiguration_ShouldReturnCorrectValues_GivenDefaultConfig() + { + IVirtualParadiseConfiguration configuration = _configurationService.VirtualParadiseConfiguration; + Assert.Multiple(() => + { + Assert.That(configuration.Username, Is.EqualTo("Admin")); + Assert.That(configuration.Password, Is.EqualTo("Password1234")); + Assert.That(configuration.World, Is.EqualTo("Blizzard")); + Assert.That(configuration.BotName, Is.EqualTo("VPLink")); + }); + } +}