// using Luna.Channels.Abstractions; // using Luna.Channels.Cli; // using Luna.Core.Abstractions; // using Luna.Shared; // using Moq; // // namespace Luna.Channels.Tests; // // [TestFixture] // [Category("Unit")] // public class CliChannelTests // { // [Test] // public void ChannelType_Returns_Cli() // { // var hubMock = new Mock(); // var channel = new CliChannel("test-1", hubMock.Object); // // Assert.That(channel.ChannelType, Is.EqualTo("cli")); // } // // [Test] // public void ChannelId_IsUnique_PerInstance() // { // var hubMock = new Mock(); // var channel1 = new CliChannel("test-1", hubMock.Object); // var channel2 = new CliChannel("test-2", hubMock.Object); // // Assert.That(channel1.ChannelId, Is.Not.EqualTo(channel2.ChannelId)); // } // // [Test] // public void DisplayName_Returns_HumanReadable() // { // var hubMock = new Mock(); // var channel = new CliChannel("test-1", hubMock.Object); // // Assert.That(channel.DisplayName, Is.Not.Null.And.Not.Empty); // } // // [Test] // public async Task SendMessageAsync_Sends_ChannelMessage() // { // var hubMock = new Mock(); // var channel = new CliChannel("test-1", hubMock.Object); // var message = new ChannelMessage( // Guid.NewGuid().ToString(), // Guid.NewGuid().ToString(), // "cli-user-1", // "CLI User", // "Hello from CLI", // DateTimeOffset.UtcNow); // // await channel.SendMessageAsync(message); // } // // [Test] // public async Task SendStreamingMessageAsync_Consumes_Stream() // { // var hubMock = new Mock(); // var channel = new CliChannel("test-1", hubMock.Object); // // async IAsyncEnumerable TestStream() // { // yield return new ChatStreamUpdate(ChatStreamUpdateType.Text, "Hello", "assistant", false); // yield return new ChatStreamUpdate(ChatStreamUpdateType.Text, " world", "assistant", false); // yield return new ChatStreamUpdate(ChatStreamUpdateType.Complete, null, "assistant", true); // await Task.CompletedTask; // } // // await channel.SendStreamingMessageAsync(TestStream()); // } // // [Test] // public void Dispose_CleansUp() // { // var hubMock = new Mock(); // var channel = new CliChannel("test-1", hubMock.Object); // // Assert.That(() => channel.Dispose(), Throws.Nothing); // } // // [Test] // public void MessageReceived_Event_Fires_On_RaiseMessageReceived() // { // var hubMock = new Mock(); // var channel = new CliChannel("test-1", hubMock.Object); // ChannelMessageReceivedEventArgs? capturedArgs = null; // // channel.MessageReceived += (_, args) => // { // capturedArgs = args; // return Task.CompletedTask; // }; // // var message = new ChannelMessage( // Guid.NewGuid().ToString(), // Guid.NewGuid().ToString(), // "cli-user-1", // "CLI User", // "Hello from CLI", // DateTimeOffset.UtcNow); // // channel.RaiseMessageReceived(null, message); // // Assert.That(capturedArgs, Is.Not.Null, // "MessageReceived event must fire when RaiseMessageReceived is called."); // Assert.That(capturedArgs!.Message.Content, Is.EqualTo("Hello from CLI")); // } // }