tests: add tests for library
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
<CollectCoverage>true</CollectCoverage>
|
||||
<CoverletOutput>./TestResults/Coverage/</CoverletOutput>
|
||||
<CoverletOutputFormat>cobertura</CoverletOutputFormat>
|
||||
<Include>[StevesBot.Lib]*</Include>
|
||||
<Include>[StevesBot.Library]*</Include>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="GenerateHtmlCoverageReport" AfterTargets="GenerateCoverageResultAfterTest">
|
||||
|
||||
@@ -1 +1,41 @@
|
||||
namespace StevesBot.Library.Tests.Unit;
|
||||
namespace StevesBot.Library.Tests.Unit;
|
||||
|
||||
public class DiscordMessageTests
|
||||
{
|
||||
[Fact]
|
||||
public void Constructor_WhenCalled_ItShouldReturnAnInstance()
|
||||
{
|
||||
var result = new DiscordMessage();
|
||||
|
||||
result.Id.Should().BeEmpty();
|
||||
result.Type.Should().Be(0);
|
||||
result.ChannelId.Should().BeEmpty();
|
||||
result.GuildId.Should().BeEmpty();
|
||||
result.Author.Should().BeEquivalentTo(new DiscordUser());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Constructor_WhenCalledWithParameters_ItShouldReturnAnInstance()
|
||||
{
|
||||
var id = "12345";
|
||||
var type = 1;
|
||||
var channelId = "67890";
|
||||
var guildId = "54321";
|
||||
var author = new DiscordUser { Id = "11111" };
|
||||
|
||||
var result = new DiscordMessage
|
||||
{
|
||||
Id = id,
|
||||
Type = type,
|
||||
ChannelId = channelId,
|
||||
GuildId = guildId,
|
||||
Author = author
|
||||
};
|
||||
|
||||
result.Id.Should().Be(id);
|
||||
result.Type.Should().Be(type);
|
||||
result.ChannelId.Should().Be(channelId);
|
||||
result.GuildId.Should().Be(guildId);
|
||||
result.Author.Should().BeEquivalentTo(author);
|
||||
}
|
||||
}
|
||||
@@ -1 +1,21 @@
|
||||
namespace StevesBot.Library.Tests.Unit;
|
||||
namespace StevesBot.Library.Tests.Unit;
|
||||
|
||||
public class DiscordUserTests
|
||||
{
|
||||
[Fact]
|
||||
public void Constructor_WhenCalled_ItShouldReturnAnInstance()
|
||||
{
|
||||
var result = new DiscordUser();
|
||||
|
||||
result.Id.Should().BeEmpty();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Constructor_WhenCalledWithId_ItShouldReturnAnInstanceWithId()
|
||||
{
|
||||
var id = "12345";
|
||||
var result = new DiscordUser { Id = id };
|
||||
|
||||
result.Id.Should().Be(id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace StevesBot.Library.Tests.Unit;
|
||||
|
||||
public class GatewayResponseTests
|
||||
{
|
||||
[Fact]
|
||||
public void Constructor_WhenCalled_ItShouldReturnAnInstance()
|
||||
{
|
||||
var url = "https://example.com";
|
||||
var result = new GatewayResponse(url);
|
||||
|
||||
result.Url.Should().Be(url);
|
||||
}
|
||||
}
|
||||
@@ -2,5 +2,64 @@ namespace StevesBot.Library.Tests.Unit;
|
||||
|
||||
public class HostExtensionsTests
|
||||
{
|
||||
[Fact]
|
||||
public void AddTelemetry_WhenCalledAndSeqOptionsNotConfigured_ItShouldNotAddTelemetry()
|
||||
{
|
||||
var builder = WebApplication.CreateBuilder();
|
||||
|
||||
builder.AddTelemetry(static () => new StevesBotWebhookInstrumentation());
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
app.Services
|
||||
.GetService<StevesBotWebhookInstrumentation>()
|
||||
.Should()
|
||||
.BeNull();
|
||||
|
||||
app.Services
|
||||
.GetService<OpenTelemetryLoggerProvider>()
|
||||
.Should()
|
||||
.BeNull();
|
||||
|
||||
app.Services
|
||||
.GetService<TracerProvider>()
|
||||
.Should()
|
||||
.BeNull();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AddTelemetry_WhenCalledAndSeqOptionsConfigured_ItShouldAddTelemetry()
|
||||
{
|
||||
var builder = WebApplication.CreateBuilder();
|
||||
|
||||
var json = $@"{{
|
||||
""SeqOptions"": {{
|
||||
""ServerUrl"": ""http://localhost:5341"",
|
||||
""ApiKey"": ""my-api-key"",
|
||||
""ApiKeyHeader"": ""X-Seq-ApiKey""
|
||||
}}
|
||||
}}";
|
||||
|
||||
builder.Configuration.AddJsonStream(new MemoryStream(Encoding.UTF8.GetBytes(json)));
|
||||
|
||||
builder.AddTelemetry(static () => new StevesBotWebhookInstrumentation());
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
app.Services
|
||||
.GetService<IInstrumentation>()
|
||||
.Should()
|
||||
.NotBeNull();
|
||||
|
||||
app.Services
|
||||
.GetServices<ILoggerProvider>()
|
||||
.Where(static p => p is OpenTelemetryLoggerProvider)
|
||||
.Should()
|
||||
.NotBeEmpty();
|
||||
|
||||
app.Services
|
||||
.GetService<TracerProvider>()
|
||||
.Should()
|
||||
.NotBeNull();
|
||||
}
|
||||
}
|
||||
@@ -7,10 +7,12 @@ public class ServicesExtensionsTests
|
||||
ApiUrl = "https://test.com",
|
||||
AppToken = "test_token",
|
||||
};
|
||||
private readonly Mock<IInstrumentation> _instrumentationMock = new();
|
||||
private readonly ServiceCollection _services = new();
|
||||
|
||||
public ServicesExtensionsTests()
|
||||
{
|
||||
_services.AddSingleton(_instrumentationMock.Object);
|
||||
_services.AddSingleton(_discordClientOptions);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ public sealed class StevesBotWebhookInstrumentationTests : IDisposable
|
||||
[Fact]
|
||||
public void Constructor_WhenCalled_ItShouldReturnInstance()
|
||||
{
|
||||
using var result = new StevesBotWorkerInstrumentation();
|
||||
using var result = new StevesBotWebhookInstrumentation();
|
||||
using var expectedSource = new ActivitySource(_instrumentation.SourceName, _instrumentation.SourceVersion);
|
||||
|
||||
result.Source.Should().BeEquivalentTo(expectedSource);
|
||||
|
||||
@@ -1,16 +1,23 @@
|
||||
global using System.Diagnostics;
|
||||
global using System.Net;
|
||||
global using System.Text;
|
||||
global using System.Text.Json;
|
||||
|
||||
global using Microsoft.AspNetCore.Builder;
|
||||
global using Microsoft.Extensions.Configuration;
|
||||
global using Microsoft.Extensions.DependencyInjection;
|
||||
global using Microsoft.Extensions.Logging;
|
||||
|
||||
global using Moq;
|
||||
|
||||
global using OpenTelemetry.Logs;
|
||||
global using OpenTelemetry.Trace;
|
||||
|
||||
global using RichardSzalay.MockHttp;
|
||||
|
||||
global using StevesBot.Library.Discord;
|
||||
global using StevesBot.Library.Discord.Common;
|
||||
global using StevesBot.Library.Discord.Rest;
|
||||
global using StevesBot.Library.Discord.Rest.Requests;
|
||||
global using StevesBot.Library.Discord.Rest.Responses;
|
||||
global using StevesBot.Library.Telemetry;
|
||||
|
||||
Reference in New Issue
Block a user