From b1c0a4b0e20827d5f679893b1704fa33e6e7c41c Mon Sep 17 00:00:00 2001 From: Artemy <109195690+stalcker2288969@users.noreply.github.com> Date: Sun, 22 Jun 2025 12:21:27 +0700 Subject: [PATCH] MessageRepositoryTests + Given_ValidSenderId_When_FindBySenderIdAsync_Then_ReturnMessages + Given_InvalidSenderId_When_FindBySenderId_Should_Throw_NotFoundByKeyException --- .../Repositories/MessagesRepositoryTests.cs | 49 +++++++++++++++++++ Govor.Data/Repositories/MessagesRepository.cs | 8 ++- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/Govor.API.Tests/IntegrationTests/EF/Repositories/MessagesRepositoryTests.cs b/Govor.API.Tests/IntegrationTests/EF/Repositories/MessagesRepositoryTests.cs index f20a8f0..a0428c4 100644 --- a/Govor.API.Tests/IntegrationTests/EF/Repositories/MessagesRepositoryTests.cs +++ b/Govor.API.Tests/IntegrationTests/EF/Repositories/MessagesRepositoryTests.cs @@ -58,6 +58,7 @@ public class MessagesRepositoryTests [Test] public void Given_EmptySetDb_When_GetAllMessages_Should_Throw_NotFoundException() { + // Arrange using var context = new GovorDbContext(_options); var messagesRepository = new MessagesRepository(context, _messageValidator); // Act & Assert @@ -67,6 +68,7 @@ public class MessagesRepositoryTests [Test] public async Task Given_ValidMessageId_When_FindMessageById_Then_ReturnMessage() { + // Arrange var messages = _fixture.CreateMany(10); var id = messages.First().Id; @@ -76,8 +78,10 @@ public class MessagesRepositoryTests context.Messages.AddRange(messages); await context.SaveChangesAsync(); + // Act var result = await messagesRepository.FindByIdAsync(id); + // Assert Assert.That(result, Is.Not.Null); Assert.That(result, Is.EqualTo(messages.First())); } @@ -85,9 +89,54 @@ public class MessagesRepositoryTests [Test] public async Task Given_InvalidMessageId_When_FindById_Should_Throw_NotFoundByKeyException() { + // Arrange await using var context = new GovorDbContext(_options); var messagesRepository = new MessagesRepository(context, _messageValidator); + // Act & Assert Assert.ThrowsAsync>(async () => await messagesRepository.FindByIdAsync(_fixture.Create())); } + + [Test] + public async Task Given_ValidSenderId_When_FindBySenderIdAsync_Then_ReturnMessages() + { + // Arrange + var messages = _fixture.CreateMany(10).ToList(); + var senderId =_fixture.Create(); + + 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>(async () => await messagesRepository.FindBySenderIdAsync(_fixture.Create())); + } + + [Test] + public async Task Given_ValidReceiverId_When_FindByReceiverIdAsync_Then_ReturnMessages() + { + + } } \ No newline at end of file diff --git a/Govor.Data/Repositories/MessagesRepository.cs b/Govor.Data/Repositories/MessagesRepository.cs index 091fdbd..31c7755 100644 --- a/Govor.Data/Repositories/MessagesRepository.cs +++ b/Govor.Data/Repositories/MessagesRepository.cs @@ -35,9 +35,13 @@ public class MessagesRepository : IMessagesRepository ?? throw new NotFoundByKeyException(messageId, "Message with given id does not exist"); } - public Task> FindBySenderIdAsync(Guid senderId) + public async Task> FindBySenderIdAsync(Guid senderId) { - throw new NotImplementedException(); + return await _context.Messages + .AsNoTracking() + .Include(m => m.ReplyToMessage) + .Where(m => m.SenderId == senderId) + .ToListOrThrowIfEmpty(new NotFoundByKeyException(senderId, "Messages with given sender id do not exist")); } public Task> FindByReceiverIdAsync(Guid receiverId)