namespace ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Design; /// /// The template alarm authoring surface exposes TemplateAlarm.IsMesReportable: /// an "MES reportable" checkbox in the dialog body and an MES column on the /// template's Alarms tab. TemplateEdit is a heavyweight page (~10 injected /// services with their own graphs), so — like the rest of the TemplateEdit coverage /// in this suite (see TemplateNativeAlarmSourceEditorTests) — these are /// structural assertions over the component source that pin the wiring so it cannot /// silently regress. The persistence behaviour itself is covered by the /// TemplateService / ManagementActor alarm tests. /// public class TemplateAlarmDialogMesReportableTests { private static string DesignComponentsRoot { get { var dir = AppContext.BaseDirectory; for (var i = 0; i < 6 && dir is not null; i++) dir = Directory.GetParent(dir)?.FullName; return Path.Combine(dir!, "src", "ZB.MOM.WW.ScadaBridge.CentralUI", "Components", "Pages", "Design"); } } private static string AlarmDialogMarkup => File.ReadAllText(Path.Combine(DesignComponentsRoot, "TemplateAlarmDialog.razor")); private static string TemplateEditMarkup => File.ReadAllText(Path.Combine(DesignComponentsRoot, "TemplateEdit.razor")); /// Verifies that the alarm dialog has a MES-reportable checkbox. [Fact] public void AlarmDialog_HasMesReportableCheckbox() { var markup = AlarmDialogMarkup; Assert.Contains("@bind=\"_isMesReportable\"", markup); Assert.Contains("id=\"alarmMesReportable\"", markup); Assert.Contains("MES reportable", markup); } /// Verifies that the alarm dialog threads the MES-reportable flag through its parameter and draft. [Fact] public void AlarmDialog_ThreadsMesReportableThroughParameterAndDraft() { var markup = AlarmDialogMarkup; Assert.Contains("InitialIsMesReportable", markup); Assert.Contains("_isMesReportable = InitialIsMesReportable", markup); Assert.Contains("bool IsMesReportable", markup); } /// Verifies that the alarms tab has a MES column. [Fact] public void AlarmsTab_HasMesColumn() { var markup = TemplateEditMarkup; Assert.Contains("MES", markup); Assert.Contains("data-test=\"alarm-mes-badge\"", markup); Assert.Contains("alarm.IsMesReportable", markup); } /// Verifies that the alarms tab passes the MES-reportable flag into and out of the dialog. [Fact] public void AlarmsTab_PassesMesReportableIntoAndOutOfTheDialog() { var markup = TemplateEditMarkup; Assert.Contains("InitialIsMesReportable=\"initial.IsMesReportable\"", markup); Assert.Contains("IsMesReportable = draft.IsMesReportable", markup); } }