tests: add tests
This commit is contained in:
@@ -5,3 +5,4 @@ dotnet_diagnostic.CA2201.severity = none
|
|||||||
dotnet_diagnostic.CA2007.severity = none
|
dotnet_diagnostic.CA2007.severity = none
|
||||||
dotnet_diagnostic.CA1303.severity = none
|
dotnet_diagnostic.CA1303.severity = none
|
||||||
dotnet_diagnostic.CA1031.severity = none
|
dotnet_diagnostic.CA1031.severity = none
|
||||||
|
dotnet_diagnostic.CA1034.severity = none
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using WebSocket = System.Net.WebSockets.WebSocket;
|
||||||
|
|
||||||
namespace StevesBot.Worker.Tests.Integration.Infrastructure;
|
namespace StevesBot.Worker.Tests.Integration.Infrastructure;
|
||||||
|
|
||||||
# pragma warning disable CA1001
|
# pragma warning disable CA1001
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
using System.Text;
|
|
||||||
|
|
||||||
using WebSocket = StevesBot.Worker.WebSockets.WebSocket;
|
using WebSocket = StevesBot.Worker.WebSockets.WebSocket;
|
||||||
|
|
||||||
namespace StevesBot.Worker.Tests.Integration;
|
namespace StevesBot.Worker.Tests.Integration;
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
namespace StevesBot.Worker.Tests.Unit;
|
||||||
|
|
||||||
|
public class DiscordEventTypesTests
|
||||||
|
{
|
||||||
|
[Theory]
|
||||||
|
[MemberData(nameof(TestData))]
|
||||||
|
public void Event_WhenCalled_ItShouldReturnCorrectValue(string eventType, string expectedValue)
|
||||||
|
{
|
||||||
|
eventType.Should().Be(expectedValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TheoryData<string, string> TestData => new()
|
||||||
|
{
|
||||||
|
{ DiscordEventTypes.Ready, "READY" },
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
namespace StevesBot.Worker.Tests.Unit;
|
||||||
|
|
||||||
|
public class DiscordIntentsTests
|
||||||
|
{
|
||||||
|
[Theory]
|
||||||
|
[MemberData(nameof(TestData))]
|
||||||
|
public void Intents_ShouldHaveCorrectValue(long intent, long expectedValue)
|
||||||
|
{
|
||||||
|
intent.Should().Be(expectedValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TheoryData<long, long> TestData => new()
|
||||||
|
{
|
||||||
|
{ DiscordIntents.Guilds, 1 },
|
||||||
|
{ DiscordIntents.GuildMembers, 2 },
|
||||||
|
{ DiscordIntents.GuildModeration, 4 },
|
||||||
|
{ DiscordIntents.GuildExpressions, 8 },
|
||||||
|
{ DiscordIntents.GuildIntegrations, 16 },
|
||||||
|
{ DiscordIntents.GuildWebhooks, 32 },
|
||||||
|
{ DiscordIntents.GuildInvites, 64 },
|
||||||
|
{ DiscordIntents.GuildVoiceStates, 128 },
|
||||||
|
{ DiscordIntents.GuildPresences, 256 },
|
||||||
|
{ DiscordIntents.GuildMessages, 512 },
|
||||||
|
{ DiscordIntents.GuildMessageReactions, 1024 },
|
||||||
|
{ DiscordIntents.GuildMessageTyping, 2048 },
|
||||||
|
{ DiscordIntents.DirectMessages, 4096 },
|
||||||
|
{ DiscordIntents.DirectMessageReactions, 8192 },
|
||||||
|
{ DiscordIntents.DirectMessageTyping, 16384 },
|
||||||
|
{ DiscordIntents.MessageContent, 32768 },
|
||||||
|
{ DiscordIntents.GuildScheduledEvents, 65536 },
|
||||||
|
{ DiscordIntents.AutoModerationConfiguration, 1048576 },
|
||||||
|
{ DiscordIntents.AutoModerationExecution, 2097152 },
|
||||||
|
{ DiscordIntents.GuildMessagePolls, 16777216 },
|
||||||
|
{ DiscordIntents.DirectMessagePolls, 33554432 },
|
||||||
|
{ DiscordIntents.All, 53608447 }
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
namespace StevesBot.Worker.Tests.Unit;
|
||||||
|
|
||||||
|
public class DiscordOpCodesTests
|
||||||
|
{
|
||||||
|
[Theory]
|
||||||
|
[MemberData(nameof(TestData))]
|
||||||
|
public void OpCode_ShouldHaveCorrectValue(int opCode, int expectedValue)
|
||||||
|
{
|
||||||
|
opCode.Should().Be(expectedValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TheoryData<int, int> TestData => new()
|
||||||
|
{
|
||||||
|
{ DiscordOpCodes.Dispatch, 0 },
|
||||||
|
{ DiscordOpCodes.Heartbeat, 1 },
|
||||||
|
{ DiscordOpCodes.Hello, 10 },
|
||||||
|
{ DiscordOpCodes.HeartbeatAck, 11 }
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
using WebSocket = StevesBot.Worker.WebSockets.WebSocket;
|
||||||
|
|
||||||
|
namespace StevesBot.Worker.Tests.Unit;
|
||||||
|
|
||||||
|
public class WebSocketFactoryTests
|
||||||
|
{
|
||||||
|
private readonly WebSocketFactory _webSocketFactory = new();
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Create_WhenCalled_ItShouldReturnNewWebSocketInstance()
|
||||||
|
{
|
||||||
|
var result = _webSocketFactory.Create();
|
||||||
|
|
||||||
|
result.Should().NotBeNull();
|
||||||
|
result.Should().BeOfType<WebSocket>();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
global using System.Net.WebSockets;
|
global using System.Net.WebSockets;
|
||||||
|
global using System.Text;
|
||||||
|
|
||||||
global using Microsoft.AspNetCore.Builder;
|
global using Microsoft.AspNetCore.Builder;
|
||||||
global using Microsoft.AspNetCore.Hosting;
|
global using Microsoft.AspNetCore.Hosting;
|
||||||
@@ -11,3 +12,4 @@ global using StevesBot.Worker.Discord;
|
|||||||
global using StevesBot.Worker.Discord.Events;
|
global using StevesBot.Worker.Discord.Events;
|
||||||
global using StevesBot.Worker.Tests.Integration.Infrastructure;
|
global using StevesBot.Worker.Tests.Integration.Infrastructure;
|
||||||
global using StevesBot.Worker.Threading;
|
global using StevesBot.Worker.Threading;
|
||||||
|
global using StevesBot.Worker.WebSockets;
|
||||||
|
|||||||
@@ -4,5 +4,5 @@ internal sealed class DiscordClientOptions
|
|||||||
{
|
{
|
||||||
public string ApiUrl { get; init; } = string.Empty;
|
public string ApiUrl { get; init; } = string.Empty;
|
||||||
public string AppToken { get; init; } = string.Empty;
|
public string AppToken { get; init; } = string.Empty;
|
||||||
public int Intents { get; init; }
|
public long Intents { get; init; }
|
||||||
}
|
}
|
||||||
@@ -2,28 +2,28 @@ namespace StevesBot.Worker.Discord;
|
|||||||
|
|
||||||
internal static class DiscordIntents
|
internal static class DiscordIntents
|
||||||
{
|
{
|
||||||
public const int Guilds = 1 << 0;
|
public const long Guilds = 1 << 0;
|
||||||
public const int GuildMembers = 1 << 1;
|
public const long GuildMembers = 1 << 1;
|
||||||
public const int GuildModeration = 1 << 2;
|
public const long GuildModeration = 1 << 2;
|
||||||
public const int GuildExpressions = 1 << 3;
|
public const long GuildExpressions = 1 << 3;
|
||||||
public const int GuildIntegrations = 1 << 4;
|
public const long GuildIntegrations = 1 << 4;
|
||||||
public const int GuildWebhooks = 1 << 5;
|
public const long GuildWebhooks = 1 << 5;
|
||||||
public const int GuildInvites = 1 << 6;
|
public const long GuildInvites = 1 << 6;
|
||||||
public const int GuildVoiceStates = 1 << 7;
|
public const long GuildVoiceStates = 1 << 7;
|
||||||
public const int GuildPresences = 1 << 8;
|
public const long GuildPresences = 1 << 8;
|
||||||
public const int GuildMessages = 1 << 9;
|
public const long GuildMessages = 1 << 9;
|
||||||
public const int GuildMessageReactions = 1 << 10;
|
public const long GuildMessageReactions = 1 << 10;
|
||||||
public const int GuildMessageTyping = 1 << 11;
|
public const long GuildMessageTyping = 1 << 11;
|
||||||
public const int DirectMessages = 1 << 12;
|
public const long DirectMessages = 1 << 12;
|
||||||
public const int DirectMessageReactions = 1 << 13;
|
public const long DirectMessageReactions = 1 << 13;
|
||||||
public const int DirectMessageTyping = 1 << 14;
|
public const long DirectMessageTyping = 1 << 14;
|
||||||
public const int MessageContent = 1 << 15;
|
public const long MessageContent = 1 << 15;
|
||||||
public const int GuildScheduledEvents = 1 << 16;
|
public const long GuildScheduledEvents = 1 << 16;
|
||||||
public const int AutoModerationConfiguration = 1 << 20;
|
public const long AutoModerationConfiguration = 1 << 20;
|
||||||
public const int AutoModerationExecution = 1 << 21;
|
public const long AutoModerationExecution = 1 << 21;
|
||||||
public const int GuildMessagePolls = 1 << 24;
|
public const long GuildMessagePolls = 1 << 24;
|
||||||
public const int DirectMessagePolls = 1 << 25;
|
public const long DirectMessagePolls = 1 << 25;
|
||||||
public const int All = Guilds
|
public const long All = Guilds
|
||||||
| GuildMembers
|
| GuildMembers
|
||||||
| GuildModeration
|
| GuildModeration
|
||||||
| GuildExpressions
|
| GuildExpressions
|
||||||
@@ -44,4 +44,4 @@ internal static class DiscordIntents
|
|||||||
| AutoModerationExecution
|
| AutoModerationExecution
|
||||||
| GuildMessagePolls
|
| GuildMessagePolls
|
||||||
| DirectMessagePolls;
|
| DirectMessagePolls;
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
namespace StevesBot.Worker.WebSockets;
|
||||||
|
|
||||||
|
internal interface IWebSocketFactory
|
||||||
|
{
|
||||||
|
IWebSocket Create();
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
namespace StevesBot.Worker.WebSockets;
|
||||||
|
|
||||||
|
internal class WebSocketFactory : IWebSocketFactory
|
||||||
|
{
|
||||||
|
public IWebSocket Create()
|
||||||
|
{
|
||||||
|
return new WebSocket();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user