feat: add INatsClient interface and implement on NatsClient

Extract INatsClient interface from NatsClient to enable internal clients
(SYSTEM, ACCOUNT) to participate in the subscription system without
requiring a socket connection. Change Subscription.Client from concrete
NatsClient to INatsClient, keeping IMessageRouter and RemoveClient using
the concrete type since only socket clients need those paths.
This commit is contained in:
Joseph Doherty
2026-02-23 05:18:37 -05:00
parent 5e11785bdf
commit 0e7db5615e
4 changed files with 34 additions and 2 deletions

View File

@@ -14,4 +14,16 @@ public class InternalClientTests
{
kind.IsInternal().ShouldBe(expected);
}
[Fact]
public void NatsClient_implements_INatsClient()
{
typeof(NatsClient).GetInterfaces().ShouldContain(typeof(INatsClient));
}
[Fact]
public void NatsClient_kind_is_Client()
{
typeof(NatsClient).GetProperty("Kind")!.PropertyType.ShouldBe(typeof(ClientKind));
}
}