using FluentAssertions;
using Microsoft.Extensions.DependencyInjection;
using SIGCM2.Application;

namespace SIGCM2.Application.Tests.Common;

/// <summary>
/// UDT-011 T300.20.2 — DI registration smoke tests for AddApplication.
/// Pure unit: no DB, no HTTP — just verifies the service container.
/// </summary>
public sealed class AddApplicationDependencyInjectionTests
{
    /// <summary>
    /// [REQ-BE-CLOCK-004] TimeProvider.System must be registered as singleton
    /// so all command handlers can inject it without a concrete coupling.
    /// </summary>
    [Fact]
    public void AddApplication_Registers_TimeProvider_System()
    {
        var services = new ServiceCollection();
        // AddApplication requires some infrastructure; provide minimal stubs
        // by only testing the DI graph without building the full host.
        services.AddApplication();
        using var provider = services.BuildServiceProvider();

        var timeProvider = provider.GetRequiredService<TimeProvider>();

        timeProvider.Should().BeSameAs(TimeProvider.System);
    }
}
