Fixed some warnings

This commit is contained in:
2026-04-04 05:01:51 +02:00
parent 6d6b2c1166
commit 3138436965
12 changed files with 129 additions and 131 deletions
+50 -50
View File
@@ -14,43 +14,43 @@ namespace Luna.Channels.Tests;
[Category("Unit")]
public class TelegramChannelTests
{
private Mock<ITelegramBotClient> _mockBotClient = null!;
private Mock<ILogger<TelegramChannel>> _mockLogger = null!;
private TelegramOptions _options = null!;
private TelegramChannel _channel = null!;
private Mock<ITelegramBotClient> mockBotClient = null!;
private Mock<ILogger<TelegramChannel>> mockLogger = null!;
private TelegramOptions options = null!;
private TelegramChannel channel = null!;
[SetUp]
public void SetUp()
{
_mockBotClient = new Mock<ITelegramBotClient>();
_mockLogger = new Mock<ILogger<TelegramChannel>>();
_options = new TelegramOptions { BotToken = "test-bot-token:ABCDEF" };
_channel = new TelegramChannel("100", _mockBotClient.Object, _mockLogger.Object, _options);
mockBotClient = new Mock<ITelegramBotClient>();
mockLogger = new Mock<ILogger<TelegramChannel>>();
options = new TelegramOptions { BotToken = "test-bot-token:ABCDEF" };
channel = new TelegramChannel("100", mockBotClient.Object, mockLogger.Object, options);
}
[TearDown]
public void TearDown()
{
_channel.Dispose();
channel.Dispose();
}
[Test]
public void ChannelType_Returns_Telegram()
{
Assert.That(_channel.ChannelType, Is.EqualTo("telegram"));
Assert.That(channel.ChannelType, Is.EqualTo("telegram"));
}
[Test]
public void ChannelId_IsSet_From_Constructor()
{
Assert.That(_channel.ChannelId, Is.EqualTo("100"));
Assert.That(channel.ChannelId, Is.EqualTo("100"));
}
[Test]
public void ChannelId_IsUnique_Per_Instance()
{
var channel1 = new TelegramChannel("111", _mockBotClient.Object, _mockLogger.Object, _options);
var channel2 = new TelegramChannel("222", _mockBotClient.Object, _mockLogger.Object, _options);
var channel1 = new TelegramChannel("111", mockBotClient.Object, mockLogger.Object, options);
var channel2 = new TelegramChannel("222", mockBotClient.Object, mockLogger.Object, options);
Assert.That(channel1.ChannelId, Is.Not.EqualTo(channel2.ChannelId));
@@ -61,36 +61,36 @@ public class TelegramChannelTests
[Test]
public void DisplayName_Contains_Telegram()
{
Assert.That(_channel.DisplayName, Does.Contain("Telegram"));
Assert.That(channel.DisplayName, Does.Contain("Telegram"));
}
[Test]
public void IsConnected_Is_True_Initially()
{
Assert.That(_channel.IsConnected, Is.True);
Assert.That(channel.IsConnected, Is.True);
}
[Test]
public void IsConnected_Is_False_After_Dispose()
{
_channel.Dispose();
channel.Dispose();
Assert.That(_channel.IsConnected, Is.False);
Assert.That(channel.IsConnected, Is.False);
}
[Test]
public async Task SendMessageAsync_Calls_BotClient_SendMessage()
{
_mockBotClient
mockBotClient
.Setup(c => c.SendRequest(It.IsAny<SendMessageRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new Message { Id = 1, Chat = new Chat { Id = 100 } });
var message = new ChannelMessage(
Guid.NewGuid().ToString(), "100", "42", "Alice", "Hello!", DateTimeOffset.UtcNow);
await _channel.SendMessageAsync(message);
await channel.SendMessageAsync(message);
_mockBotClient.Verify(
mockBotClient.Verify(
c => c.SendRequest(It.IsAny<SendMessageRequest>(), It.IsAny<CancellationToken>()),
Times.Once);
}
@@ -98,33 +98,33 @@ public class TelegramChannelTests
[Test]
public async Task SendMessageAsync_Handles_Network_Error_Without_Crash()
{
_mockBotClient
mockBotClient
.Setup(c => c.SendRequest(It.IsAny<SendMessageRequest>(), It.IsAny<CancellationToken>()))
.ThrowsAsync(new HttpRequestException("Network error"));
var message = new ChannelMessage(
Guid.NewGuid().ToString(), "100", "42", "Alice", "Hello!", DateTimeOffset.UtcNow);
Assert.DoesNotThrowAsync(async () => await _channel.SendMessageAsync(message));
Assert.DoesNotThrowAsync(async () => await channel.SendMessageAsync(message));
}
[Test]
public void RaiseMessageReceived_Fires_Event_With_Correct_Mapping()
{
ChannelMessageReceivedEventArgs? captured = null;
_channel.MessageReceived += (_, args) => { captured = args; return Task.CompletedTask; };
channel.MessageReceived += (_, args) => { captured = args; return Task.CompletedTask; };
var message = new ChannelMessage(
Guid.NewGuid().ToString(), "999", "77", "Bob", "Hello Luna", DateTimeOffset.UtcNow);
_channel.RaiseMessageReceived(message);
channel.RaiseMessageReceived(message);
Assert.That(captured, Is.Not.Null);
Assert.That(captured!.Message.ConversationId, Is.EqualTo("999"));
Assert.That(captured.Message.SenderId, Is.EqualTo("77"));
Assert.That(captured.Message.SenderName, Is.EqualTo("Bob"));
Assert.That(captured.Message.Content, Is.EqualTo("Hello Luna"));
Assert.That(captured.Channel, Is.SameAs(_channel));
Assert.That(captured.Channel, Is.SameAs(channel));
}
[Test]
@@ -133,12 +133,12 @@ public class TelegramChannelTests
var sentAt = new DateTimeOffset(2025, 6, 1, 12, 0, 0, TimeSpan.Zero);
ChannelMessageReceivedEventArgs? captured = null;
_channel.MessageReceived += (_, args) => { captured = args; return Task.CompletedTask; };
channel.MessageReceived += (_, args) => { captured = args; return Task.CompletedTask; };
var message = new ChannelMessage(
Guid.NewGuid().ToString(), "123", "55", "Carol", "Hi", sentAt);
_channel.RaiseMessageReceived(message);
channel.RaiseMessageReceived(message);
Assert.That(captured, Is.Not.Null);
Assert.That(captured!.Message.SenderName, Is.EqualTo("Carol"));
@@ -148,11 +148,11 @@ public class TelegramChannelTests
[Test]
public async Task SendStreamingMessageAsync_Sends_Initial_Then_Edits_In_Place()
{
_mockBotClient
mockBotClient
.Setup(c => c.SendRequest(It.IsAny<SendMessageRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new Message { Id = 10, Chat = new Chat { Id = 100 } });
_mockBotClient
mockBotClient
.Setup(c => c.SendRequest(It.IsAny<EditMessageTextRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new Message { Id = 10, Chat = new Chat { Id = 100 } });
@@ -163,14 +163,14 @@ public class TelegramChannelTests
new(ChatStreamUpdateType.Complete, null, null, true),
};
await _channel.SendStreamingMessageAsync(updates.ToAsyncEnumerable());
await channel.SendStreamingMessageAsync(updates.ToAsyncEnumerable());
// First chunk sends a message, second chunk edits it
_mockBotClient.Verify(
mockBotClient.Verify(
c => c.SendRequest(It.IsAny<SendMessageRequest>(), It.IsAny<CancellationToken>()),
Times.Once);
_mockBotClient.Verify(
mockBotClient.Verify(
c => c.SendRequest(It.IsAny<EditMessageTextRequest>(), It.IsAny<CancellationToken>()),
Times.AtLeastOnce);
}
@@ -185,18 +185,18 @@ public class TelegramChannelTests
new(ChatStreamUpdateType.Complete, null, null, true),
};
_mockBotClient
mockBotClient
.Setup(c => c.SendRequest(It.IsAny<SendMessageRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new Message { Id = 20, Chat = new Chat { Id = 100 } });
_mockBotClient
mockBotClient
.Setup(c => c.SendRequest(It.IsAny<EditMessageTextRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new Message { Id = 20, Chat = new Chat { Id = 100 } });
await _channel.SendStreamingMessageAsync(updates.ToAsyncEnumerable());
await channel.SendStreamingMessageAsync(updates.ToAsyncEnumerable());
// Content exceeds 4096 — needs at least 2 SendMessage calls (initial + overflow)
_mockBotClient.Verify(
mockBotClient.Verify(
c => c.SendRequest(It.IsAny<SendMessageRequest>(), It.IsAny<CancellationToken>()),
Times.AtLeast(2));
}
@@ -204,11 +204,11 @@ public class TelegramChannelTests
[Test]
public async Task SendStreamingMessageAsync_Handles_IsComplete_True_With_Final_Edit()
{
_mockBotClient
mockBotClient
.Setup(c => c.SendRequest(It.IsAny<SendMessageRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new Message { Id = 30, Chat = new Chat { Id = 100 } });
_mockBotClient
mockBotClient
.Setup(c => c.SendRequest(It.IsAny<EditMessageTextRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new Message { Id = 30, Chat = new Chat { Id = 100 } });
@@ -218,10 +218,10 @@ public class TelegramChannelTests
new(ChatStreamUpdateType.Complete, null, null, true),
};
await _channel.SendStreamingMessageAsync(updates.ToAsyncEnumerable());
await channel.SendStreamingMessageAsync(updates.ToAsyncEnumerable());
// Initial message sent
_mockBotClient.Verify(
mockBotClient.Verify(
c => c.SendRequest(It.IsAny<SendMessageRequest>(), It.IsAny<CancellationToken>()),
Times.Once);
}
@@ -235,7 +235,7 @@ public class TelegramChannelTests
AllowedUserIds = ["111", "222"]
};
var restrictedChannel = new TelegramChannel(
"500", _mockBotClient.Object, _mockLogger.Object, restrictedOptions);
"500", mockBotClient.Object, mockLogger.Object, restrictedOptions);
ChannelMessageReceivedEventArgs? captured = null;
restrictedChannel.MessageReceived += (_, args) => { captured = args; return Task.CompletedTask; };
@@ -259,7 +259,7 @@ public class TelegramChannelTests
AllowedUserIds = ["111", "222"]
};
var restrictedChannel = new TelegramChannel(
"500", _mockBotClient.Object, _mockLogger.Object, restrictedOptions);
"500", mockBotClient.Object, mockLogger.Object, restrictedOptions);
ChannelMessageReceivedEventArgs? captured = null;
restrictedChannel.MessageReceived += (_, args) => { captured = args; return Task.CompletedTask; };
@@ -283,7 +283,7 @@ public class TelegramChannelTests
AllowedUserIds = []
};
var openChannel = new TelegramChannel(
"600", _mockBotClient.Object, _mockLogger.Object, openOptions);
"600", mockBotClient.Object, mockLogger.Object, openOptions);
ChannelMessageReceivedEventArgs? captured = null;
openChannel.MessageReceived += (_, args) => { captured = args; return Task.CompletedTask; };
@@ -302,12 +302,12 @@ public class TelegramChannelTests
public void Malformed_Message_With_Null_Text_Is_Skipped()
{
ChannelMessageReceivedEventArgs? captured = null;
_channel.MessageReceived += (_, args) => { captured = args; return Task.CompletedTask; };
channel.MessageReceived += (_, args) => { captured = args; return Task.CompletedTask; };
var message = new ChannelMessage(
Guid.NewGuid().ToString(), "700", "88", "Ghost", null!, DateTimeOffset.UtcNow);
_channel.RaiseMessageReceived(message);
channel.RaiseMessageReceived(message);
Assert.That(captured, Is.Null, "Message with null text should be silently skipped");
}
@@ -316,12 +316,12 @@ public class TelegramChannelTests
public void Malformed_Message_With_Empty_Text_Is_Skipped()
{
ChannelMessageReceivedEventArgs? captured = null;
_channel.MessageReceived += (_, args) => { captured = args; return Task.CompletedTask; };
channel.MessageReceived += (_, args) => { captured = args; return Task.CompletedTask; };
var message = new ChannelMessage(
Guid.NewGuid().ToString(), "700", "88", "Ghost", "", DateTimeOffset.UtcNow);
_channel.RaiseMessageReceived(message);
channel.RaiseMessageReceived(message);
Assert.That(captured, Is.Null, "Message with empty text should be silently skipped");
}
@@ -330,16 +330,16 @@ public class TelegramChannelTests
public void Dispose_Fires_ConnectionStateChanged()
{
ChannelConnectionEventArgs? captured = null;
_channel.ConnectionStateChanged += (_, args) =>
channel.ConnectionStateChanged += (_, args) =>
{
captured = args;
return Task.CompletedTask;
};
_channel.Dispose();
channel.Dispose();
Assert.That(captured, Is.Not.Null);
Assert.That(captured!.IsConnected, Is.False);
Assert.That(captured.Channel, Is.SameAs(_channel));
Assert.That(captured.Channel, Is.SameAs(channel));
}
}