test(#53): follow inline→Commons dedup — relocate OpcUa/MxGateway literal coverage to AlarmCapableProtocolsTests; pin TemplateEdit delegation

This commit is contained in:
Joseph Doherty
2026-06-19 01:42:37 -04:00
parent 7c1d61647e
commit 5585d7ba51
2 changed files with 41 additions and 4 deletions
@@ -39,11 +39,12 @@ public class TemplateNativeAlarmSourceEditorTests
public void NativeAlarmsForm_HasConnectionSourceFilterAndLockFields()
{
var markup = TemplateEditMarkup;
// Connection dropdown filtered to alarm-capable protocols.
// Connection dropdown filtered to alarm-capable protocols via the
// single-source-of-truth Commons helper. The OpcUa/MxGateway literal set
// now lives in AlarmCapableProtocols (Commons) — pinned by
// AlarmCapableProtocolsTests — so this page only needs to delegate to it.
Assert.Contains("_alarmCapableConnections", markup);
Assert.Contains("IsAlarmCapable", markup);
Assert.Contains("OpcUa", markup);
Assert.Contains("MxGateway", markup);
Assert.Contains("AlarmCapableProtocols.IsAlarmCapable", markup);
// The authoring form fields.
Assert.Contains("@bind=\"_nasName\"", markup);
Assert.Contains("@bind=\"_nasConnection\"", markup);
@@ -0,0 +1,36 @@
using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Protocol;
namespace ZB.MOM.WW.ScadaBridge.Commons.Tests.Interfaces.Protocol;
/// <summary>
/// Single-source-of-truth coverage for <see cref="AlarmCapableProtocols.IsAlarmCapable"/>.
/// The OpcUa/MxGateway literal set previously lived inline in the Central UI
/// (TemplateEdit / InstanceConfigure); #53 collapsed those copies into this helper,
/// so the literal set is pinned here rather than against page markup. Keep this in
/// sync with the alarm-subscribable adapters registered in DataConnectionFactory.
/// </summary>
public class AlarmCapableProtocolsTests
{
[Theory]
[InlineData("OpcUa")]
[InlineData("opcua")] // case-insensitive — matches DataConnectionFactory's OrdinalIgnoreCase key lookup
[InlineData("OPCUA")]
[InlineData("MxGateway")]
[InlineData("mxgateway")]
public void IsAlarmCapable_True_ForAlarmSubscribableProtocols(string protocol)
{
Assert.True(AlarmCapableProtocols.IsAlarmCapable(protocol));
}
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData(" ")]
[InlineData("ModbusTcp")]
[InlineData("Custom")]
[InlineData("Opc")] // partial / prefix must not match
public void IsAlarmCapable_False_ForNonAlarmCapableOrBlank(string? protocol)
{
Assert.False(AlarmCapableProtocols.IsAlarmCapable(protocol));
}
}