Files
homework-backend/Homework.Tests/LoggerTests.cs
2026-03-28 22:00:58 +01:00

64 lines
2.0 KiB
C#

using Logger;
using System.IO;
using Xunit;
namespace Homework.Tests
{
public class LoggerTests
{
[Fact]
public void FileLogger_WritesLogAndRotatesWhenOverMaxSize()
{
var tempDir = Path.Combine(Path.GetTempPath(), "homework-logger-tests");
if (Directory.Exists(tempDir)) Directory.Delete(tempDir, true);
var options = new FileLoggerOptions
{
LogDirectory = tempDir,
FileName = "test.log",
MaxFileSizeBytes = 1,
MaxBackupFiles = 2,
MinimumLevel = LogLevel.Trace
};
var logger = new FileLogger(options);
logger.Info("first");
logger.Info("second");
logger.Info("third");
var files = Directory.GetFiles(tempDir);
Assert.True(files.Length >= 1);
// Ensure there is at least one archive file and final log
Assert.Contains(files, f => Path.GetFileName(f).Equals("test.log") || Path.GetFileName(f).StartsWith("test_"));
Directory.Delete(tempDir, true);
}
[Fact]
public void CompositeLogger_LogsToMultipleTargetsWithoutThrowing()
{
var tempDir = Path.Combine(Path.GetTempPath(), "homework-logger-composite");
if (Directory.Exists(tempDir)) Directory.Delete(tempDir, true);
var fileOptions = new FileLoggerOptions
{
LogDirectory = tempDir,
FileName = "composite.log",
MinimumLevel = LogLevel.Trace
};
var consoleLogger = new ConsoleLogger(LogLevel.Trace);
var fileLogger = new FileLogger(fileOptions);
var composite = new CompositeLogger(consoleLogger, fileLogger);
composite.Debug("debug message");
composite.Error("error message");
Assert.True(File.Exists(Path.Combine(tempDir, "composite.log")));
Directory.Delete(tempDir, true);
}
}
}