maksit-core/src/MaksIT.Core.Tests/Logging/LoggerPrefixTests.cs

161 lines
3.8 KiB
C#

using MaksIT.Core.Logging;
namespace MaksIT.Core.Tests.Logging;
public class LoggerPrefixTests {
[Fact]
public void WithValue_ShouldCreateCorrectCategoryString() {
// Arrange & Act
var folderCategory = LoggerPrefix.Folder.WithValue("Audit");
var categoryCategory = LoggerPrefix.Category.WithValue("Orders");
var tagCategory = LoggerPrefix.Tag.WithValue("Critical");
// Assert
Assert.Equal("Folder:Audit", folderCategory);
Assert.Equal("Category:Orders", categoryCategory);
Assert.Equal("Tag:Critical", tagCategory);
}
[Fact]
public void WithValue_ShouldHandleSpacesInValue() {
// Arrange & Act
var result = LoggerPrefix.Folder.WithValue("My Custom Folder");
// Assert
Assert.Equal("Folder:My Custom Folder", result);
}
[Fact]
public void WithValue_ShouldHandleEmptyValue() {
// Arrange & Act
var result = LoggerPrefix.Folder.WithValue("");
// Assert
Assert.Equal("Folder:", result);
}
[Fact]
public void Parse_ShouldExtractFolderPrefix() {
// Arrange
var categoryName = "Folder:Audit";
// Act
var (prefix, value) = LoggerPrefix.Parse(categoryName);
// Assert
Assert.Equal(LoggerPrefix.Folder, prefix);
Assert.Equal("Audit", value);
}
[Fact]
public void Parse_ShouldExtractCategoryPrefix() {
// Arrange
var categoryName = "Category:Orders";
// Act
var (prefix, value) = LoggerPrefix.Parse(categoryName);
// Assert
Assert.Equal(LoggerPrefix.Category, prefix);
Assert.Equal("Orders", value);
}
[Fact]
public void Parse_ShouldExtractTagPrefix() {
// Arrange
var categoryName = "Tag:Critical";
// Act
var (prefix, value) = LoggerPrefix.Parse(categoryName);
// Assert
Assert.Equal(LoggerPrefix.Tag, prefix);
Assert.Equal("Critical", value);
}
[Fact]
public void Parse_ShouldHandleValueWithSpaces() {
// Arrange
var categoryName = "Folder:My Custom Folder";
// Act
var (prefix, value) = LoggerPrefix.Parse(categoryName);
// Assert
Assert.Equal(LoggerPrefix.Folder, prefix);
Assert.Equal("My Custom Folder", value);
}
[Fact]
public void Parse_ShouldReturnNullForUnrecognizedPrefix() {
// Arrange
var categoryName = "MyApp.Services.OrderService";
// Act
var (prefix, value) = LoggerPrefix.Parse(categoryName);
// Assert
Assert.Null(prefix);
Assert.Null(value);
}
[Fact]
public void Parse_ShouldReturnNullForEmptyString() {
// Arrange
var categoryName = "";
// Act
var (prefix, value) = LoggerPrefix.Parse(categoryName);
// Assert
Assert.Null(prefix);
Assert.Null(value);
}
[Fact]
public void Parse_ShouldHandleEmptyValueAfterPrefix() {
// Arrange
var categoryName = "Folder:";
// Act
var (prefix, value) = LoggerPrefix.Parse(categoryName);
// Assert
Assert.Equal(LoggerPrefix.Folder, prefix);
Assert.Equal("", value);
}
[Fact]
public void Parse_ShouldBeCaseSensitive() {
// Arrange
var categoryName = "folder:Audit"; // lowercase 'f'
// Act
var (prefix, value) = LoggerPrefix.Parse(categoryName);
// Assert
Assert.Null(prefix);
Assert.Null(value);
}
[Fact]
public void GetAll_ShouldReturnAllPrefixes() {
// Arrange & Act
var allPrefixes = MaksIT.Core.Abstractions.Enumeration.GetAll<LoggerPrefix>().ToList();
// Assert
Assert.Equal(3, allPrefixes.Count);
Assert.Contains(LoggerPrefix.Folder, allPrefixes);
Assert.Contains(LoggerPrefix.Category, allPrefixes);
Assert.Contains(LoggerPrefix.Tag, allPrefixes);
}
[Fact]
public void ToString_ShouldReturnPrefixName() {
// Arrange & Act & Assert
Assert.Equal("Folder:", LoggerPrefix.Folder.ToString());
Assert.Equal("Category:", LoggerPrefix.Category.ToString());
Assert.Equal("Tag:", LoggerPrefix.Tag.ToString());
}
}