50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
using ClaudeDo.Logging;
|
|
using Serilog;
|
|
using Serilog.Context;
|
|
using Serilog.Core;
|
|
using Serilog.Events;
|
|
|
|
namespace ClaudeDo.Worker.Tests.Logging;
|
|
|
|
public sealed class DefaultTaskIdEnricherTests
|
|
{
|
|
private sealed class CollectingSink : ILogEventSink
|
|
{
|
|
public List<LogEvent> Events { get; } = new();
|
|
public void Emit(LogEvent logEvent) => Events.Add(logEvent);
|
|
}
|
|
|
|
[Fact]
|
|
public void AddsDash_WhenNoTaskIdInScope()
|
|
{
|
|
var sink = new CollectingSink();
|
|
using var logger = new LoggerConfiguration()
|
|
.Enrich.FromLogContext()
|
|
.Enrich.With(new DefaultTaskIdEnricher())
|
|
.WriteTo.Sink(sink)
|
|
.CreateLogger();
|
|
|
|
logger.Information("hello");
|
|
|
|
var prop = Assert.Single(sink.Events).Properties["TaskId"];
|
|
Assert.Equal("\"-\"", prop.ToString());
|
|
}
|
|
|
|
[Fact]
|
|
public void KeepsPushedTaskId_WhenInScope()
|
|
{
|
|
var sink = new CollectingSink();
|
|
using var logger = new LoggerConfiguration()
|
|
.Enrich.FromLogContext()
|
|
.Enrich.With(new DefaultTaskIdEnricher())
|
|
.WriteTo.Sink(sink)
|
|
.CreateLogger();
|
|
|
|
using (LogContext.PushProperty("TaskId", "task-42"))
|
|
logger.Information("hello");
|
|
|
|
var prop = Assert.Single(sink.Events).Properties["TaskId"];
|
|
Assert.Equal("\"task-42\"", prop.ToString());
|
|
}
|
|
}
|