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>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0"/>
|
<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="NUnit" Version="3.13.3"/>
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2"/>
|
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2"/>
|
||||||
<PackageReference Include="NUnit.Analyzers" Version="3.6.1"/>
|
<PackageReference Include="NUnit.Analyzers" Version="3.6.1"/>
|
||||||
<PackageReference Include="coverlet.collector" Version="3.2.0"/>
|
<PackageReference Include="coverlet.collector" Version="3.2.0"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\VPLink.Common\VPLink.Common.csproj"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</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