using Centron.Data.Entities.Telemetry; using Centron.Interfaces.Administration.Logins; using JetBrains.Annotations; namespace Centron.Tests.BL.Telemetry; [TestSubject(typeof(TelemetryLicenseKindMapping))] public class TelemetryLicenseKindMappingTest { [Fact] public void FromGuid_KnownLicense_ReturnsKind() { var kind = TelemetryLicenseKindMapping.FromGuid(LicenseGuids.Centron); Assert.Equal(TelemetryLicenseKind.Centron, kind); } [Fact] public void FromGuidString_KnownLicense_ReturnsKind() { var kind = TelemetryLicenseKindMapping.FromGuidString(LicenseGuids.ServiceBoard.ToString()); Assert.Equal(TelemetryLicenseKind.ServiceBoard, kind); } [Fact] public void FromGuid_UnknownGuid_ReturnsNull() { var kind = TelemetryLicenseKindMapping.FromGuid(Guid.NewGuid()); Assert.Null(kind); } [Fact] public void FromGuidString_NullOrEmpty_ReturnsNull() { Assert.Null(TelemetryLicenseKindMapping.FromGuidString(null)); Assert.Null(TelemetryLicenseKindMapping.FromGuidString("")); Assert.Null(TelemetryLicenseKindMapping.FromGuidString(" ")); } [Fact] public void FromGuidString_Garbage_ReturnsNull() { Assert.Null(TelemetryLicenseKindMapping.FromGuidString("not-a-guid")); } [Fact] public void ToGuid_KnownKind_ReturnsGuid() { var guid = TelemetryLicenseKindMapping.ToGuid(TelemetryLicenseKind.Centron); Assert.Equal(LicenseGuids.Centron, guid); } [Fact] public void ToGuid_Unknown_ReturnsNull() { var guid = TelemetryLicenseKindMapping.ToGuid(TelemetryLicenseKind.Unknown); Assert.Null(guid); } [Fact] public void RoundTrip_AllKnownLicenses_AreStable() { // Every enum value (except Unknown) must map to a real GUID and back to itself. foreach (TelemetryLicenseKind kind in Enum.GetValues()) { if (kind == TelemetryLicenseKind.Unknown) continue; var guid = TelemetryLicenseKindMapping.ToGuid(kind); Assert.True(guid.HasValue, $"Enum value {kind} has no matching LicenseGuids field."); var roundTrip = TelemetryLicenseKindMapping.FromGuid(guid.Value); Assert.Equal(kind, roundTrip); } } }