diff --git a/tests/OpenClaw.Connection.Tests/ConnectionStateMachineTests.cs b/tests/OpenClaw.Connection.Tests/ConnectionStateMachineTests.cs index 08ff4ac49..77fda5399 100644 --- a/tests/OpenClaw.Connection.Tests/ConnectionStateMachineTests.cs +++ b/tests/OpenClaw.Connection.Tests/ConnectionStateMachineTests.cs @@ -368,6 +368,16 @@ public void Reset_ReturnsToIdle() [InlineData(RoleConnectionState.Connected, RoleConnectionState.Connecting, true, OverallConnectionState.Connecting)] [InlineData(RoleConnectionState.Connected, RoleConnectionState.Idle, false, OverallConnectionState.Ready)] [InlineData(RoleConnectionState.Idle, RoleConnectionState.Idle, true, OverallConnectionState.Idle)] + // Node errors are suppressed when node mode is disabled → Ready (not Degraded). + [InlineData(RoleConnectionState.Connected, RoleConnectionState.Error, false, OverallConnectionState.Ready)] + [InlineData(RoleConnectionState.Connected, RoleConnectionState.PairingRejected, false, OverallConnectionState.Ready)] + [InlineData(RoleConnectionState.Connected, RoleConnectionState.RateLimited, false, OverallConnectionState.Ready)] + // Node connecting is ignored when node mode is disabled → Ready (not Connecting). + [InlineData(RoleConnectionState.Connected, RoleConnectionState.Connecting, false, OverallConnectionState.Ready)] + // Operator connected, node idle, node enabled → operator-only connected (fallthrough). + [InlineData(RoleConnectionState.Connected, RoleConnectionState.Idle, true, OverallConnectionState.Connected)] + // Node PairingRequired is reported regardless of nodeEnabled. + [InlineData(RoleConnectionState.Connected, RoleConnectionState.PairingRequired, false, OverallConnectionState.PairingRequired)] public void DeriveOverall_ReturnsCorrectState( RoleConnectionState op, RoleConnectionState node, bool nodeEnabled, OverallConnectionState expected) {