Added Unit tests for Logger

This commit is contained in:
2025-05-30 18:16:53 +03:00
parent 15b6d224de
commit fafa493db7
4 changed files with 163 additions and 73 deletions

View File

@@ -1,5 +1,5 @@
namespace DiscordBotCore.Logging
{
namespace DiscordBotCore.Logging;
internal sealed class LogMessage : ILogMessage
{
private static readonly string _DefaultLogMessageSender = "\b";
@@ -73,4 +73,3 @@
return message;
}
}
}

View File

@@ -37,6 +37,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebUI", "WebUI\WebUI.csproj
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PollMaker", "Plugins\PollMaker\PollMaker.csproj", "{9A4B98C1-00AC-481C-BE55-A70C0B9D3BE7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{8F27B3EA-F292-40DF-B9B3-4B0E6BEA4E70}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.DiscordBotCore.Logging", "Tests\Tests.DiscordBotCore.Logging\Tests.DiscordBotCore.Logging.csproj", "{94238D37-60C6-4E40-80EC-4B4D242F5914}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -215,6 +219,18 @@ Global
{9A4B98C1-00AC-481C-BE55-A70C0B9D3BE7}.Release|ARM64.Build.0 = Release|Any CPU
{9A4B98C1-00AC-481C-BE55-A70C0B9D3BE7}.Release|x64.ActiveCfg = Release|Any CPU
{9A4B98C1-00AC-481C-BE55-A70C0B9D3BE7}.Release|x64.Build.0 = Release|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Debug|Any CPU.Build.0 = Debug|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Debug|ARM64.Build.0 = Debug|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Debug|x64.ActiveCfg = Debug|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Debug|x64.Build.0 = Debug|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Release|Any CPU.ActiveCfg = Release|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Release|Any CPU.Build.0 = Release|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Release|ARM64.ActiveCfg = Release|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Release|ARM64.Build.0 = Release|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Release|x64.ActiveCfg = Release|Any CPU
{94238D37-60C6-4E40-80EC-4B4D242F5914}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -224,6 +240,7 @@ Global
{F3C61A47-F758-4145-B496-E3ECCF979D89} = {5CF9AD7B-6BF0-4035-835F-722F989C01E1}
{C67908F9-4A55-4DD8-B993-C26C648226F1} = {EA4FA308-7B2C-458E-8485-8747D745DD59}
{9A4B98C1-00AC-481C-BE55-A70C0B9D3BE7} = {5CF9AD7B-6BF0-4035-835F-722F989C01E1}
{94238D37-60C6-4E40-80EC-4B4D242F5914} = {8F27B3EA-F292-40DF-B9B3-4B0E6BEA4E70}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3FB3C5DE-ED21-4D2E-ABDD-3A00EE4A2FFF}

View File

@@ -0,0 +1,46 @@
using DiscordBotCore.Logging;
namespace Tests.DiscordBotCore.Logging;
public class LoggerTests
{
private readonly string logFolder = Path.GetTempPath();
private readonly string format = "{Message} | {SenderName} | {LogMessageType}";
[Fact]
public void Log_AddsMessageToList()
{
ILogger logger = new Logger(logFolder, format, maxHistorySize: 5);
logger.Log("Test message");
Assert.Single(logger.LogMessages);
Assert.Equal("Test message", logger.LogMessages[0].Message);
}
[Fact]
public void Log_TriggersOnLogReceived()
{
ILogger logger = new Logger(logFolder, format, maxHistorySize: 5);
bool triggered = false;
logger.OnLogReceived += (_) => triggered = true;
logger.Log("Test message");
Assert.True(triggered);
}
[Fact]
public void Log_RespectsMaxHistorySize()
{
ILogger logger = new Logger(logFolder, format, maxHistorySize: 3);
logger.Log("1");
logger.Log("2");
logger.Log("3");
logger.Log("4");
Assert.Equal(3, logger.LogMessages.Count);
Assert.DoesNotContain(logger.LogMessages, m => m.Message == "1");
}
}

View File

@@ -0,0 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<RootNamespace>Tests.DiscordBotCore.Logging</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0"/>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
<PackageReference Include="xunit" Version="2.5.3"/>
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3"/>
</ItemGroup>
<ItemGroup>
<Using Include="Xunit"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\DiscordBotCore.Logging\DiscordBotCore.Logging.csproj" />
</ItemGroup>
</Project>