using System.Reflection; using Omika.Core.Observability; namespace Omika.Tests.Architecture; /// /// Règle d'architecture (Phase 1) : le métier ne doit référencer aucune pile /// d'export d'observabilité (OpenTelemetry, SigNoz, ClickHouse, OTLP). Il ne /// connaît que les abstractions IOmikaTelemetry / IEventTracker / /// IDiagnosticLogger. OpenTelemetry n'étant pas installé, ce test prépare /// la règle pour les phases suivantes. /// public class BusinessMustNotReferenceObservabilityExportTests { [Fact] public void OmikaCore_DoesNotReference_OpenTelemetryOrSigNozOrClickHouseOrOtlp() { Assembly core = typeof(IOmikaTelemetry).Assembly; string[] referenced = core.GetReferencedAssemblies() .Select(a => a.Name ?? string.Empty) .ToArray(); Assert.DoesNotContain(referenced, n => n.StartsWith("OpenTelemetry", StringComparison.Ordinal)); Assert.DoesNotContain(referenced, n => n.StartsWith("SigNoz", StringComparison.Ordinal)); Assert.DoesNotContain(referenced, n => n.StartsWith("ClickHouse", StringComparison.Ordinal)); Assert.DoesNotContain(referenced, n => n.Contains("OTLP", StringComparison.OrdinalIgnoreCase)); } }