Add more tests
Some checks failed
SonarQube / Build and analyze (push) Failing after 3m2s
Unit Tests / Run Tests (push) Failing after 2m23s

This commit is contained in:
Leonid Pershin
2025-10-20 08:20:55 +03:00
parent 1647fe19d3
commit c9eac74e35
12 changed files with 3873 additions and 11 deletions

View File

@@ -0,0 +1,441 @@
using ChatBot.Services.Telegram.Commands;
using FluentAssertions;
using Xunit;
namespace ChatBot.Tests.Telegram.Commands;
public class ReplyInfoTests
{
[Fact]
public void ReplyInfo_ShouldHaveCorrectProperties()
{
// Arrange & Act
var replyInfo = new ReplyInfo
{
MessageId = 123,
UserId = 456L,
Username = "testuser",
};
// Assert
replyInfo.MessageId.Should().Be(123);
replyInfo.UserId.Should().Be(456L);
replyInfo.Username.Should().Be("testuser");
}
[Fact]
public void ReplyInfo_ShouldAllowNullUsername()
{
// Arrange & Act
var replyInfo = new ReplyInfo
{
MessageId = 123,
UserId = 456L,
Username = null,
};
// Assert
replyInfo.MessageId.Should().Be(123);
replyInfo.UserId.Should().Be(456L);
replyInfo.Username.Should().BeNull();
}
[Fact]
public void ReplyInfo_ShouldAllowEmptyUsername()
{
// Arrange & Act
var replyInfo = new ReplyInfo
{
MessageId = 123,
UserId = 456L,
Username = string.Empty,
};
// Assert
replyInfo.MessageId.Should().Be(123);
replyInfo.UserId.Should().Be(456L);
replyInfo.Username.Should().BeEmpty();
}
[Fact]
public void Create_ShouldReturnReplyInfo_WhenValidParameters()
{
// Arrange
var messageId = 123;
var userId = 456L;
var username = "testuser";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull();
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(userId);
result.Username.Should().Be(username);
}
[Fact]
public void Create_ShouldReturnReplyInfo_WhenUsernameIsNull()
{
// Arrange
var messageId = 123;
var userId = 456L;
string? username = null;
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull();
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(userId);
result.Username.Should().BeNull();
}
[Fact]
public void Create_ShouldReturnReplyInfo_WhenUsernameIsEmpty()
{
// Arrange
var messageId = 123;
var userId = 456L;
var username = string.Empty;
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull();
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(userId);
result.Username.Should().BeEmpty();
}
[Fact]
public void Create_ShouldReturnNull_WhenMessageIdIsNull()
{
// Arrange
int? messageId = null;
var userId = 456L;
var username = "testuser";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().BeNull();
}
[Fact]
public void Create_ShouldReturnNull_WhenUserIdIsNull()
{
// Arrange
var messageId = 123;
long? userId = null;
var username = "testuser";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().BeNull();
}
[Fact]
public void Create_ShouldReturnNull_WhenBothMessageIdAndUserIdAreNull()
{
// Arrange
int? messageId = null;
long? userId = null;
var username = "testuser";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().BeNull();
}
[Fact]
public void Create_ShouldReturnNull_WhenMessageIdIsZero()
{
// Arrange
var messageId = 0;
var userId = 456L;
var username = "testuser";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull(); // 0 is a valid message ID
result!.MessageId.Should().Be(0);
result.UserId.Should().Be(userId);
result.Username.Should().Be(username);
}
[Fact]
public void Create_ShouldReturnNull_WhenUserIdIsZero()
{
// Arrange
var messageId = 123;
var userId = 0L;
var username = "testuser";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull(); // 0 is a valid user ID
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(0L);
result.Username.Should().Be(username);
}
[Fact]
public void Create_ShouldReturnNull_WhenMessageIdIsNegative()
{
// Arrange
var messageId = -1;
var userId = 456L;
var username = "testuser";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull(); // Negative values are still valid
result!.MessageId.Should().Be(-1);
result.UserId.Should().Be(userId);
result.Username.Should().Be(username);
}
[Fact]
public void Create_ShouldReturnNull_WhenUserIdIsNegative()
{
// Arrange
var messageId = 123;
var userId = -1L;
var username = "testuser";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull(); // Negative values are still valid
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(-1L);
result.Username.Should().Be(username);
}
[Fact]
public void Create_ShouldHandleVeryLongUsername()
{
// Arrange
var messageId = 123;
var userId = 456L;
var username = new string('a', 1000); // Very long username
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull();
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(userId);
result.Username.Should().Be(username);
result.Username.Should().HaveLength(1000);
}
[Fact]
public void Create_ShouldHandleUsernameWithSpecialCharacters()
{
// Arrange
var messageId = 123;
var userId = 456L;
var username = "user@domain.com!@#$%^&*()_+-=[]{}|;':\",./<>?";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull();
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(userId);
result.Username.Should().Be(username);
}
[Fact]
public void Create_ShouldHandleUsernameWithUnicodeCharacters()
{
// Arrange
var messageId = 123;
var userId = 456L;
var username = "пользователь_用户_ユーザー_مستخدم";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull();
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(userId);
result.Username.Should().Be(username);
}
[Fact]
public void Create_ShouldHandleUsernameWithWhitespace()
{
// Arrange
var messageId = 123;
var userId = 456L;
var username = " user with spaces ";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull();
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(userId);
result.Username.Should().Be(username); // Username is preserved as-is
}
[Fact]
public void Create_ShouldHandleUsernameWithNewlines()
{
// Arrange
var messageId = 123;
var userId = 456L;
var username = "user\nwith\nnewlines";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull();
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(userId);
result.Username.Should().Be(username);
}
[Fact]
public void Create_ShouldHandleUsernameWithTabs()
{
// Arrange
var messageId = 123;
var userId = 456L;
var username = "user\twith\ttabs";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull();
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(userId);
result.Username.Should().Be(username);
}
[Theory]
[InlineData(0)]
[InlineData(1)]
[InlineData(100)]
[InlineData(int.MaxValue)]
[InlineData(int.MinValue)]
public void Create_ShouldHandleVariousMessageIds(int messageId)
{
// Arrange
var userId = 456L;
var username = "testuser";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull();
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(userId);
result.Username.Should().Be(username);
}
[Theory]
[InlineData(0L)]
[InlineData(1L)]
[InlineData(100L)]
[InlineData(long.MaxValue)]
[InlineData(long.MinValue)]
public void Create_ShouldHandleVariousUserIds(long userId)
{
// Arrange
var messageId = 123;
var username = "testuser";
// Act
var result = ReplyInfo.Create(messageId, userId, username);
// Assert
result.Should().NotBeNull();
result!.MessageId.Should().Be(messageId);
result.UserId.Should().Be(userId);
result.Username.Should().Be(username);
}
[Fact]
public void ReplyInfo_ShouldBeMutable()
{
// Arrange
var replyInfo = new ReplyInfo
{
MessageId = 123,
UserId = 456L,
Username = "testuser",
};
// Act
replyInfo.MessageId = 789;
replyInfo.UserId = 101112L;
replyInfo.Username = "newuser";
// Assert
replyInfo.MessageId.Should().Be(789);
replyInfo.UserId.Should().Be(101112L);
replyInfo.Username.Should().Be("newuser");
}
[Fact]
public void ReplyInfo_ShouldAllowSettingUsernameToNull()
{
// Arrange
var replyInfo = new ReplyInfo
{
MessageId = 123,
UserId = 456L,
Username = "testuser",
};
// Act
replyInfo.Username = null;
// Assert
replyInfo.Username.Should().BeNull();
}
[Fact]
public void ReplyInfo_ShouldAllowSettingUsernameToEmpty()
{
// Arrange
var replyInfo = new ReplyInfo
{
MessageId = 123,
UserId = 456L,
Username = "testuser",
};
// Act
replyInfo.Username = string.Empty;
// Assert
replyInfo.Username.Should().BeEmpty();
}
}