using ROLAC.API.Entities.Logging;
using ROLAC.API.Services.Logging;

namespace ROLAC.API.Tests.TestSupport;

/// <summary>Records every audit Write so tests can assert on the emitted actions/summaries.</summary>
public sealed class CapturingAuditLogger : IAuditLogger
{
    public readonly record struct Entry(string Action, string Category, string? EntityName, string? EntityId, string? Summary);

    public readonly List<Entry> Entries = new();

    public void Write(
        string action, string category, LogLevelEnum level = LogLevelEnum.Information,
        string? entityName = null, string? entityId = null, string? summary = null,
        object? before = null, object? after = null,
        string? userId = null, string? userEmail = null, string? ipAddress = null)
    {
        Entries.Add(new Entry(action, category, entityName, entityId, summary));
    }
}
