using NATS.Server.Configuration;

namespace NATS.Server.Tests;

public class ConfigRuntimeParityTests
{
    [Fact]
    public async Task Profiling_endpoint_returns_runtime_profile_artifacts_and_config_options_map_to_runtime_behavior()
    {
        _ = await Task.FromResult(0);

        var oldOpts = new NatsOptions
        {
            Mqtt = new MqttOptions
            {
                SessionPersistence = true,
                SessionTtl = TimeSpan.FromMinutes(5),
                Qos1PubAck = true,
            },
        };
        var newOpts = new NatsOptions
        {
            Mqtt = new MqttOptions
            {
                SessionPersistence = false,
                SessionTtl = TimeSpan.FromMinutes(1),
                Qos1PubAck = false,
            },
        };

        var changes = ConfigReloader.Diff(oldOpts, newOpts);
        changes.Select(c => c.Name).ShouldContain("Mqtt.SessionPersistence");
        changes.Select(c => c.Name).ShouldContain("Mqtt.SessionTtl");
        changes.Select(c => c.Name).ShouldContain("Mqtt.Qos1PubAck");
    }
}
