From 5585d7ba51fa232af310a22102cedf234bc4342d Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Fri, 19 Jun 2026 01:42:37 -0400 Subject: [PATCH] =?UTF-8?q?test(#53):=20follow=20inline=E2=86=92Commons=20?= =?UTF-8?q?dedup=20=E2=80=94=20relocate=20OpcUa/MxGateway=20literal=20cove?= =?UTF-8?q?rage=20to=20AlarmCapableProtocolsTests;=20pin=20TemplateEdit=20?= =?UTF-8?q?delegation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TemplateNativeAlarmSourceEditorTests.cs | 9 ++--- .../Protocol/AlarmCapableProtocolsTests.cs | 36 +++++++++++++++++++ 2 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 tests/ZB.MOM.WW.ScadaBridge.Commons.Tests/Interfaces/Protocol/AlarmCapableProtocolsTests.cs diff --git a/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Design/TemplateNativeAlarmSourceEditorTests.cs b/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Design/TemplateNativeAlarmSourceEditorTests.cs index bfc17c93..73f44390 100644 --- a/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Design/TemplateNativeAlarmSourceEditorTests.cs +++ b/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Design/TemplateNativeAlarmSourceEditorTests.cs @@ -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); diff --git a/tests/ZB.MOM.WW.ScadaBridge.Commons.Tests/Interfaces/Protocol/AlarmCapableProtocolsTests.cs b/tests/ZB.MOM.WW.ScadaBridge.Commons.Tests/Interfaces/Protocol/AlarmCapableProtocolsTests.cs new file mode 100644 index 00000000..4d15029e --- /dev/null +++ b/tests/ZB.MOM.WW.ScadaBridge.Commons.Tests/Interfaces/Protocol/AlarmCapableProtocolsTests.cs @@ -0,0 +1,36 @@ +using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Protocol; + +namespace ZB.MOM.WW.ScadaBridge.Commons.Tests.Interfaces.Protocol; + +/// +/// Single-source-of-truth coverage for . +/// 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. +/// +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)); + } +}