using Service.Message;
namespace WebApi.Test.Application;
///
/// MessageRecordApplication 单元测试
///
public class MessageRecordApplicationTest : BaseApplicationTest
{
private readonly IMessageService _messageService;
private readonly MessageRecordApplication _application;
public MessageRecordApplicationTest()
{
_messageService = Substitute.For();
_application = new MessageRecordApplication(_messageService);
}
[Fact]
public async Task GetListAsync_正常查询_应返回消息列表()
{
// Arrange
var messages = new List
{
new() { Id = 1, Title = "消息1", Content = "内容1", IsRead = false },
new() { Id = 2, Title = "消息2", Content = "内容2", IsRead = true }
};
_messageService.GetPagedListAsync(1, 20).Returns((messages, 2L));
// Act
var result = await _application.GetListAsync(1, 20);
// Assert
result.Should().NotBeNull();
result.Data.Should().HaveCount(2);
result.Total.Should().Be(2);
}
[Fact]
public async Task GetUnreadCountAsync_应返回未读数量()
{
// Arrange
_messageService.GetUnreadCountAsync().Returns(5L);
// Act
var result = await _application.GetUnreadCountAsync();
// Assert
result.Should().Be(5);
}
[Fact]
public async Task MarkAsReadAsync_应调用服务标记已读()
{
// Arrange
_messageService.MarkAsReadAsync(1).Returns(true);
// Act
var result = await _application.MarkAsReadAsync(1);
// Assert
result.Should().BeTrue();
await _messageService.Received(1).MarkAsReadAsync(1);
}
[Fact]
public async Task MarkAllAsReadAsync_应调用服务全部标记已读()
{
// Arrange
_messageService.MarkAllAsReadAsync().Returns(true);
// Act
var result = await _application.MarkAllAsReadAsync();
// Assert
result.Should().BeTrue();
await _messageService.Received(1).MarkAllAsReadAsync();
}
[Fact]
public async Task DeleteAsync_应调用服务删除消息()
{
// Arrange
_messageService.DeleteAsync(1).Returns(true);
// Act
var result = await _application.DeleteAsync(1);
// Assert
result.Should().BeTrue();
await _messageService.Received(1).DeleteAsync(1);
}
}