using Shouldly; using Xunit; namespace ZB.MOM.WW.OtOpcUa.AdminUI.Tests; /// /// Pins DriverStatusPanel to the /hosts page (Gitea #546). The panel is the only /// component carrying the Restart/Reconnect driver controls, and it had ZERO references /// repo-wide — the commands worked end to end over the mesh transport while no user could reach /// them, and nothing failed to build, test or deploy. Deleting the last <DriverStatusPanel /// tag would silently restore exactly that state, so it is pinned here. /// /// /// This is a source scan rather than a rendering assertion because the repo has no bUnit (same /// technique as MeshRegistrationRoleScopingTests; panel markup is otherwise live-verified). /// A scan proves reachability of the component, not that it renders correctly. /// [Trait("Category", "Unit")] public sealed class HostsPanelWiringTests { private static string ReadHostsPageSource() { var dir = new DirectoryInfo(AppContext.BaseDirectory); while (dir is not null && !File.Exists(Path.Combine(dir.FullName, "ZB.MOM.WW.OtOpcUa.slnx"))) dir = dir.Parent; dir.ShouldNotBeNull("could not locate the repository root (no ZB.MOM.WW.OtOpcUa.slnx above the test binary)"); return File.ReadAllText(Path.Combine( dir!.FullName, "src", "Server", "ZB.MOM.WW.OtOpcUa.AdminUI", "Components", "Pages", "Hosts.razor")); } /// THE #546 regression pin: the panel must remain reachable from a routable page. [Fact] public void Hosts_page_renders_the_driver_status_panel() { ReadHostsPageSource().ShouldContain( " /// The panel must be fed the dialog driver's real identity and enabled-state, not literals. /// Hard-coding any of the three would make every dialog drive the same driver, or claim a /// disabled instance is live — both of which a source scan for the tag alone would pass. /// Since the Controls dialog rework the panel renders once, inside the modal, bound to the /// row that FindControlsDriver() re-resolves from the current groups (cd/cg) /// — never to a cached row record, which the 5 s rebuild replaces. /// [Fact] public void The_panel_is_bound_to_the_dialogs_own_driver_cluster_and_enabled_state() { var source = ReadHostsPageSource(); source.ShouldContain("DriverInstanceId=\"@cd.DriverInstanceId\""); source.ShouldContain("ClusterId=\"@cg.ClusterId\""); source.ShouldContain("Enabled=\"@cd.Enabled\""); } }