using Bunit; using ZB.MOM.WW.ScadaBridge.CentralUI.Components.Shared; using ZB.MOM.WW.ScadaBridge.Commons.Messages.Streaming; using ZB.MOM.WW.ScadaBridge.Commons.Types.Alarms; using ZB.MOM.WW.ScadaBridge.Commons.Types.Enums; namespace ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Components; /// /// Covers the AlarmStateBadges shared component lifted out of /// DebugView (M7-T13 prep). The badge cluster must render identically /// wherever it is hosted, so these tests pin the rendered markup: state badge /// class, kind label, native sub-state badges, severity, and HiLo level. /// public class AlarmStateBadgesTests : BunitContext { private static AlarmStateChanged ActiveNativeHighUnacked() => new( InstanceUniqueName: "Tank01", AlarmName: "Tank01.Level.HiHi", State: AlarmState.Active, Priority: 700, Timestamp: DateTimeOffset.UtcNow) { Kind = AlarmKind.NativeOpcUa, Level = AlarmLevel.High, Condition = new AlarmConditionState( Active: true, Acknowledged: false, Confirmed: null, Shelve: AlarmShelveState.Unshelved, Suppressed: false, Severity: 700), }; [Fact] public void Renders_StateKindSubStateSeverityAndLevel_Badges() { var alarm = ActiveNativeHighUnacked(); var cut = Render(p => p.Add(c => c.Alarm, alarm)); // State badge: Active condition tinted danger. Assert.Contains("bg-danger", cut.Markup); Assert.Contains("Active", cut.Markup); // Kind badge label for a native OPC UA alarm. Assert.Contains("OPC UA", cut.Markup); // Native sub-state badge: active + unacknowledged. Assert.Contains("Unacked", cut.Markup); // Severity span on the unified 0–1000 scale. Assert.Contains("sev 700", cut.Markup); // HiLo level badge label. Assert.Contains("Hi", cut.Markup); } }