docs+ui: backfill XML doc comments and finish dashboard layout pass

Adds missing <summary>/<param> XML docs across 99 server, worker, and test
files so CommentChecker reports zero issues (TreatWarningsAsErrors needs the
analyzer clean). Bundles in WIP dashboard work: NavSection extraction,
MainLayout/site.css/js styling alignment, and DashboardOptions/Auth tweaks.
This commit is contained in:
Joseph Doherty
2026-05-27 14:20:10 -04:00
parent 382861c602
commit 615b487a77
110 changed files with 1473 additions and 192 deletions
@@ -22,6 +22,7 @@ public sealed class AlarmCommandExecutorTests
private const string SessionId = "S";
private const string CorrelationId = "C";
/// <summary>Verifies that the handler routes alarm subscriptions and returns ok.</summary>
[Fact]
public void SubscribeAlarms_WithHandler_RoutesToHandlerAndReturnsOk()
{
@@ -46,6 +47,7 @@ public sealed class AlarmCommandExecutorTests
Assert.Equal(SessionId, handler.LastSessionId);
}
/// <summary>Verifies that subscription without handler returns invalid request.</summary>
[Fact]
public void SubscribeAlarms_WithoutHandler_ReturnsInvalidRequest()
{
@@ -67,6 +69,7 @@ public sealed class AlarmCommandExecutorTests
Assert.Equal(ProtocolStatusCode.InvalidRequest, reply.ProtocolStatus.Code);
}
/// <summary>Verifies that empty subscription expression returns invalid request.</summary>
[Fact]
public void SubscribeAlarms_WithEmptyExpression_ReturnsInvalidRequest()
{
@@ -88,6 +91,7 @@ public sealed class AlarmCommandExecutorTests
Assert.Equal(ProtocolStatusCode.InvalidRequest, reply.ProtocolStatus.Code);
}
/// <summary>Verifies that acknowledge routes native status into hresult and payload.</summary>
[Fact]
public void AcknowledgeAlarm_WithHandler_RoutesNativeStatusIntoHresultAndPayload()
{
@@ -121,6 +125,7 @@ public sealed class AlarmCommandExecutorTests
Assert.Equal("alice", handler.LastAckOperatorName);
}
/// <summary>Verifies that invalid alarm GUID returns invalid request.</summary>
[Fact]
public void AcknowledgeAlarm_WithInvalidGuid_ReturnsInvalidRequest()
{
@@ -142,6 +147,7 @@ public sealed class AlarmCommandExecutorTests
Assert.Equal(ProtocolStatusCode.InvalidRequest, reply.ProtocolStatus.Code);
}
/// <summary>Verifies that nonzero native status carries a diagnostic message.</summary>
[Fact]
public void AcknowledgeAlarm_WithNonzeroNativeStatus_CarriesDiagnostic()
{
@@ -165,6 +171,7 @@ public sealed class AlarmCommandExecutorTests
Assert.Contains("-123", reply.DiagnosticMessage);
}
/// <summary>Verifies that acknowledge by name routes tuple to handler.</summary>
[Fact]
public void AcknowledgeAlarmByName_WithHandler_RoutesTupleToHandler()
{
@@ -198,6 +205,7 @@ public sealed class AlarmCommandExecutorTests
Assert.Equal("alice", handler.LastAckOperatorName);
}
/// <summary>Verifies that empty alarm name returns invalid request.</summary>
[Fact]
public void AcknowledgeAlarmByName_WithEmptyName_ReturnsInvalidRequest()
{
@@ -221,6 +229,7 @@ public sealed class AlarmCommandExecutorTests
Assert.Equal(ProtocolStatusCode.InvalidRequest, reply.ProtocolStatus.Code);
}
/// <summary>Verifies that query active alarms returns payload with snapshots.</summary>
[Fact]
public void QueryActiveAlarms_WithHandler_ReturnsPayloadWithSnapshots()
{
@@ -253,6 +262,7 @@ public sealed class AlarmCommandExecutorTests
Assert.Equal("Galaxy!A", handler.LastFilterPrefix);
}
/// <summary>Verifies that unsubscribe routes to handler.</summary>
[Fact]
public void UnsubscribeAlarms_WithHandler_RoutesToHandler()
{
@@ -273,6 +283,7 @@ public sealed class AlarmCommandExecutorTests
Assert.True(handler.UnsubscribeCalled);
}
/// <summary>Verifies that unsubscribe without handler is an ok noop.</summary>
[Fact]
public void UnsubscribeAlarms_WithoutHandler_IsOkNoop()
{
@@ -291,6 +302,7 @@ public sealed class AlarmCommandExecutorTests
Assert.Equal(ProtocolStatusCode.Ok, reply.ProtocolStatus.Code);
}
/// <summary>Verifies that handler exception returns MXAccess failure status.</summary>
[Fact]
public void AcknowledgeAlarm_WhenHandlerThrows_ReturnsMxaccessFailure()
{
@@ -331,28 +343,56 @@ public sealed class AlarmCommandExecutorTests
private sealed class FakeAlarmHandler : IAlarmCommandHandler
{
/// <summary>Gets the last subscription expression.</summary>
public string? LastSubscription { get; private set; }
/// <summary>Gets the last session ID.</summary>
public string? LastSessionId { get; private set; }
/// <summary>Gets a value indicating whether unsubscribe was called.</summary>
public bool UnsubscribeCalled { get; private set; }
/// <summary>Gets the last acknowledge alarm GUID.</summary>
public Guid LastAckGuid { get; private set; }
/// <summary>Gets the last acknowledge operator name.</summary>
public string? LastAckOperatorName { get; private set; }
/// <summary>Gets or sets the value returned by acknowledge.</summary>
public int AcknowledgeReturn { get; set; }
/// <summary>Gets or sets a value indicating whether acknowledge throws.</summary>
public bool AcknowledgeThrow { get; set; }
/// <summary>Gets or sets the query result snapshots.</summary>
public IReadOnlyList<ActiveAlarmSnapshot> QueryResult { get; set; } =
Array.Empty<ActiveAlarmSnapshot>();
/// <summary>Gets the last alarm filter prefix.</summary>
public string? LastFilterPrefix { get; private set; }
/// <summary>Records a subscription.</summary>
/// <param name="subscription">The subscription expression.</param>
/// <param name="sessionId">The session identifier.</param>
public void Subscribe(string subscription, string sessionId)
{
LastSubscription = subscription;
LastSessionId = sessionId;
}
/// <summary>Records an unsubscribe request.</summary>
public void Unsubscribe()
{
UnsubscribeCalled = true;
}
/// <summary>Records an acknowledge request.</summary>
/// <param name="alarmGuid">The alarm identifier.</param>
/// <param name="comment">The acknowledge comment.</param>
/// <param name="operatorUser">The operator user name.</param>
/// <param name="operatorNode">The operator node name.</param>
/// <param name="operatorDomain">The operator domain.</param>
/// <param name="operatorFullName">The operator full name.</param>
public int Acknowledge(
Guid alarmGuid, string comment, string operatorUser,
string operatorNode, string operatorDomain, string operatorFullName)
@@ -366,6 +406,15 @@ public sealed class AlarmCommandExecutorTests
return AcknowledgeReturn;
}
/// <summary>Records an acknowledge by name request.</summary>
/// <param name="alarmName">The alarm name.</param>
/// <param name="providerName">The provider name.</param>
/// <param name="groupName">The group name.</param>
/// <param name="comment">The acknowledge comment.</param>
/// <param name="operatorUser">The operator user name.</param>
/// <param name="operatorNode">The operator node name.</param>
/// <param name="operatorDomain">The operator domain.</param>
/// <param name="operatorFullName">The operator full name.</param>
public int AcknowledgeByName(
string alarmName, string providerName, string groupName,
string comment, string operatorUser, string operatorNode,
@@ -376,21 +425,27 @@ public sealed class AlarmCommandExecutorTests
return AcknowledgeReturn;
}
/// <summary>Gets the last acknowledge by name tuple.</summary>
public (string Name, string Provider, string Group)? LastAckByNameTuple { get; private set; }
/// <summary>Queries the active alarms with the given filter prefix.</summary>
/// <param name="alarmFilterPrefix">The alarm filter prefix for the query.</param>
public IReadOnlyList<ActiveAlarmSnapshot> QueryActive(string? alarmFilterPrefix)
{
LastFilterPrefix = alarmFilterPrefix;
return QueryResult;
}
/// <summary>Gets the number of poll calls.</summary>
public int PollCount { get; private set; }
/// <summary>Increments the poll count.</summary>
public void PollOnce()
{
PollCount++;
}
/// <inheritdoc />
public void Dispose() { }
}
}