using Microsoft.Extensions.DependencyInjection; using Omika.Core; using Omika.Core.Observability; namespace Omika.Tests.Observability; public class ObservabilityCompositionTests { [Fact] public void AddOmikaTelemetry_ResolvesNullTelemetryService() { var services = new ServiceCollection(); services.AddOmikaTelemetry(); using ServiceProvider provider = services.BuildServiceProvider(); var telemetry = provider.GetRequiredService(); Assert.IsType(telemetry); Assert.Same(telemetry, provider.GetRequiredService()); Assert.Same(telemetry, provider.GetRequiredService()); } [Fact] public void AddOmikaTelemetrySink_ResolvesFullPipeline() { var services = new ServiceCollection(); services.AddOmikaTelemetrySink(); using ServiceProvider provider = services.BuildServiceProvider(); Assert.IsType(provider.GetRequiredService()); Assert.IsType(provider.GetRequiredService()); Assert.NotNull(provider.GetRequiredService()); Assert.NotNull(provider.GetRequiredService()); Assert.NotNull(provider.GetRequiredService()); } [Fact] public void AddOmikaTelemetrySink_AppliesConfigure() { var services = new ServiceCollection(); services.AddOmikaTelemetrySink(o => o.Enabled = false); using ServiceProvider provider = services.BuildServiceProvider(); IOmikaTelemetry telemetry = provider.GetRequiredService(); var sink = Assert.IsType(telemetry); sink.Track(ObservabilityTestHarness.NewEvent(TelemetryEventCodes.MobileAppStarted)); Assert.Equal(1L, sink.Counters.DroppedDisabled); } }