mirror of https://github.com/oliverbooth/VPLink
tests: add preliminary relay tests
This commit is contained in:
parent
742322236a
commit
2925de0329
|
@ -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<IBotConfiguration>();
|
||||
configuration.AnnounceAvatarEvents.Returns(true);
|
||||
configuration.AnnounceBots.Returns(false);
|
||||
configuration.RelayBotMessages.Returns(false);
|
||||
|
||||
_configurationService = Substitute.For<IConfigurationService>();
|
||||
_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);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -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<IDiscordConfiguration>();
|
||||
configuration.Token.Returns("DISCORD_TOKEN");
|
||||
configuration.ChannelId.Returns(1234567890UL);
|
||||
|
||||
_configurationService = Substitute.For<IConfigurationService>();
|
||||
_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));
|
||||
});
|
||||
}
|
||||
}
|
|
@ -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<RelayedMessage> _vpMessageReceived = new();
|
||||
private readonly Subject<RelayedMessage> _discordMessageReceived = new();
|
||||
private IVirtualParadiseMessageService _vpMessageService = null!;
|
||||
private IDiscordMessageService _discordMessageService = null!;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_discordMessageService = Substitute.For<IDiscordMessageService>();
|
||||
_discordMessageService.Configure().SendMessageAsync(Arg.Any<RelayedMessage>()).Returns(Task.CompletedTask);
|
||||
|
||||
_vpMessageService = Substitute.For<IVirtualParadiseMessageService>();
|
||||
_vpMessageService.Configure().OnMessageReceived.Returns(_vpMessageReceived.AsObservable());
|
||||
|
||||
_discordMessageService = Substitute.For<IDiscordMessageService>();
|
||||
_discordMessageService.Configure().OnMessageReceived.Returns(_discordMessageReceived.AsObservable());
|
||||
|
||||
_discordMessageReceived.SubscribeAsync(_vpMessageService.SendMessageAsync);
|
||||
_vpMessageReceived.SubscribeAsync(_discordMessageService.SendMessageAsync);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void VirtualParadiseMessage_ShouldRelay_ToDiscordService()
|
||||
{
|
||||
var observer = Substitute.For<IObserver<RelayedMessage>>();
|
||||
_vpMessageReceived.Subscribe(observer);
|
||||
|
||||
const string author = "Admin";
|
||||
const string message = "Hello, world!";
|
||||
|
||||
_vpMessageReceived.OnNext(new RelayedMessage(author, message));
|
||||
|
||||
observer.Received(1).OnNext(Arg.Is<RelayedMessage>(m => m.Author == author && m.Content == message));
|
||||
_discordMessageService.Received(1)
|
||||
.SendMessageAsync(Arg.Is<RelayedMessage>(m => m.Author == author && m.Content == message));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DiscordMessage_ShouldRelay_ToVirtualParadiseService()
|
||||
{
|
||||
var observer = Substitute.For<IObserver<RelayedMessage>>();
|
||||
_discordMessageReceived.Subscribe(observer);
|
||||
|
||||
const string author = "Admin";
|
||||
const string message = "Hello, world!";
|
||||
|
||||
_discordMessageReceived.OnNext(new RelayedMessage(author, message));
|
||||
|
||||
observer.Received(1).OnNext(Arg.Is<RelayedMessage>(m => m.Author == author && m.Content == message));
|
||||
_vpMessageService.Received(1).SendMessageAsync(Arg.Is<RelayedMessage>(m => m.Author == author && m.Content == message));
|
||||
}
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
namespace VPLink.Tests;
|
||||
|
||||
public class Tests
|
||||
{
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Test1()
|
||||
{
|
||||
Assert.Pass();
|
||||
}
|
||||
}
|
|
@ -11,10 +11,15 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0"/>
|
||||
<PackageReference Include="NSubstitute" Version="5.0.0"/>
|
||||
<PackageReference Include="NUnit" Version="3.13.3"/>
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2"/>
|
||||
<PackageReference Include="NUnit.Analyzers" Version="3.6.1"/>
|
||||
<PackageReference Include="coverlet.collector" Version="3.2.0"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\VPLink.Common\VPLink.Common.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -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<IVirtualParadiseConfiguration>();
|
||||
configuration.Username.Returns("Admin");
|
||||
configuration.Password.Returns("Password1234");
|
||||
configuration.World.Returns("Blizzard");
|
||||
configuration.BotName.Returns("VPLink");
|
||||
|
||||
_configurationService = Substitute.For<IConfigurationService>();
|
||||
_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"));
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue