MessageRepositoryTests

+ Given_ValidSenderId_When_FindBySenderIdAsync_Then_ReturnMessages
+ Given_InvalidSenderId_When_FindBySenderId_Should_Throw_NotFoundByKeyException
This commit is contained in:
Artemy
2025-06-22 12:21:27 +07:00
parent 203bb5e5a4
commit b1c0a4b0e2
2 changed files with 55 additions and 2 deletions
@@ -58,6 +58,7 @@ public class MessagesRepositoryTests
[Test] [Test]
public void Given_EmptySetDb_When_GetAllMessages_Should_Throw_NotFoundException() public void Given_EmptySetDb_When_GetAllMessages_Should_Throw_NotFoundException()
{ {
// Arrange
using var context = new GovorDbContext(_options); using var context = new GovorDbContext(_options);
var messagesRepository = new MessagesRepository(context, _messageValidator); var messagesRepository = new MessagesRepository(context, _messageValidator);
// Act & Assert // Act & Assert
@@ -67,6 +68,7 @@ public class MessagesRepositoryTests
[Test] [Test]
public async Task Given_ValidMessageId_When_FindMessageById_Then_ReturnMessage() public async Task Given_ValidMessageId_When_FindMessageById_Then_ReturnMessage()
{ {
// Arrange
var messages = _fixture.CreateMany<Message>(10); var messages = _fixture.CreateMany<Message>(10);
var id = messages.First().Id; var id = messages.First().Id;
@@ -76,8 +78,10 @@ public class MessagesRepositoryTests
context.Messages.AddRange(messages); context.Messages.AddRange(messages);
await context.SaveChangesAsync(); await context.SaveChangesAsync();
// Act
var result = await messagesRepository.FindByIdAsync(id); var result = await messagesRepository.FindByIdAsync(id);
// Assert
Assert.That(result, Is.Not.Null); Assert.That(result, Is.Not.Null);
Assert.That(result, Is.EqualTo(messages.First())); Assert.That(result, Is.EqualTo(messages.First()));
} }
@@ -85,9 +89,54 @@ public class MessagesRepositoryTests
[Test] [Test]
public async Task Given_InvalidMessageId_When_FindById_Should_Throw_NotFoundByKeyException() public async Task Given_InvalidMessageId_When_FindById_Should_Throw_NotFoundByKeyException()
{ {
// Arrange
await using var context = new GovorDbContext(_options); await using var context = new GovorDbContext(_options);
var messagesRepository = new MessagesRepository(context, _messageValidator); var messagesRepository = new MessagesRepository(context, _messageValidator);
// Act & Assert
Assert.ThrowsAsync<NotFoundByKeyException<Guid>>(async () => await messagesRepository.FindByIdAsync(_fixture.Create<Guid>())); Assert.ThrowsAsync<NotFoundByKeyException<Guid>>(async () => await messagesRepository.FindByIdAsync(_fixture.Create<Guid>()));
} }
[Test]
public async Task Given_ValidSenderId_When_FindBySenderIdAsync_Then_ReturnMessages()
{
// Arrange
var messages = _fixture.CreateMany<Message>(10).ToList();
var senderId =_fixture.Create<Guid>();
foreach (var message in messages)
{
message.SenderId = senderId;
}
await using var context = new GovorDbContext(_options);
var messagesRepository = new MessagesRepository(context, _messageValidator);
context.Messages.AddRange(messages);
await context.SaveChangesAsync();
// Act
var results = await messagesRepository.FindBySenderIdAsync(senderId);
// Assert
Assert.That(results, Is.Not.Null);
Assert.That(results, Is.EquivalentTo(messages));
}
[Test]
public void Given_InvalidSenderId_When_FindBySenderId_Should_Throw_NotFoundByKeyException()
{
// Arrange
using var context = new GovorDbContext(_options);
var messagesRepository = new MessagesRepository(context, _messageValidator);
// Act & Assert
Assert.ThrowsAsync<NotFoundByKeyException<Guid>>(async () => await messagesRepository.FindBySenderIdAsync(_fixture.Create<Guid>()));
}
[Test]
public async Task Given_ValidReceiverId_When_FindByReceiverIdAsync_Then_ReturnMessages()
{
}
} }
@@ -35,9 +35,13 @@ public class MessagesRepository : IMessagesRepository
?? throw new NotFoundByKeyException<Guid>(messageId, "Message with given id does not exist"); ?? throw new NotFoundByKeyException<Guid>(messageId, "Message with given id does not exist");
} }
public Task<List<Message>> FindBySenderIdAsync(Guid senderId) public async Task<List<Message>> FindBySenderIdAsync(Guid senderId)
{ {
throw new NotImplementedException(); return await _context.Messages
.AsNoTracking()
.Include(m => m.ReplyToMessage)
.Where(m => m.SenderId == senderId)
.ToListOrThrowIfEmpty(new NotFoundByKeyException<Guid>(senderId, "Messages with given sender id do not exist"));
} }
public Task<List<Message>> FindByReceiverIdAsync(Guid receiverId) public Task<List<Message>> FindByReceiverIdAsync(Guid receiverId)