From 9376fcff865d4749e24e58b6a7330fffbabfe29d Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 17 Apr 2025 16:00:59 +0200 Subject: [PATCH] Enhance IRepository and update DbRepositoryTests - Added ReadAsync method to IRepository for user retrieval. - Introduced _userRepo field in DbRepositoryTests for better clarity. - Modified Setup method to initialize _userRepo from the service provider. - Updated CreateAsync_ShouldNotThrow to use _userRepo. - Added ReadAsync_ShouldReturnCreated test for user retrieval validation. --- .../Infrastructure/IRepository.cs | 1 + .../Infrastructure/DbRepositoryTests.cs | 27 ++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/DigitalData.Core.Abstractions/Infrastructure/IRepository.cs b/DigitalData.Core.Abstractions/Infrastructure/IRepository.cs index 750df26..21514d5 100644 --- a/DigitalData.Core.Abstractions/Infrastructure/IRepository.cs +++ b/DigitalData.Core.Abstractions/Infrastructure/IRepository.cs @@ -17,4 +17,5 @@ public interface IRepository public Task UpdateAsync(TDto dto, Expression> expression, CancellationToken ct = default); public Task DeleteAsync(Expression> expression, CancellationToken ct = default); + Task ReadAsync(Core.Tests.Mock.User user); } diff --git a/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs b/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs index af830de..50914e2 100644 --- a/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs +++ b/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs @@ -11,7 +11,9 @@ using DigitalData.Core.Abstractions.Infrastructure; public class DbRepositoryTests { private IHost _host; - + + private IRepository _userRepo; + [SetUp] public void Setup() { @@ -24,6 +26,8 @@ public class DbRepositoryTests builder.Services.AddAutoMapper(Assembly.GetExecutingAssembly()); _host = builder.Build(); + + _userRepo = _host.Services.GetRequiredService>(); } [TearDown] @@ -39,12 +43,27 @@ public class DbRepositoryTests { // Arrange var faker = Fake.CreateUserFaker(); - var repo = _host.Services.GetRequiredService>(); // Act & Assert if (multiple) - Assert.DoesNotThrowAsync(async () => await repo.CreateAsync(faker.Generate(Random.Shared.Next(1, 10)))); + Assert.DoesNotThrowAsync(async () => await _userRepo.CreateAsync(faker.Generate(Random.Shared.Next(1, 10)))); else - Assert.DoesNotThrowAsync(async () => await repo.CreateAsync(faker.Generate())); + Assert.DoesNotThrowAsync(async () => await _userRepo.CreateAsync(faker.Generate())); + } + + [TestCase(true, TestName = "WhenGivenMultipleUsers")] + [TestCase(false, TestName = "WhenGivenSingleUser")] + public async Task ReadAsync_ShouldReturnCreated(bool multiple) + { + // Arrange + var faker = Fake.CreateUserFaker(); + var user = faker.Generate(); + + // Act + await _userRepo.CreateAsync(user); + var createdUser = (await _userRepo.ReadAsync()).First(); + + // Assert + Assert.That(createdUser, Is.EqualTo(user)); } }