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.
This commit is contained in:
Developer 02 2025-04-17 16:00:59 +02:00
parent 06df97597e
commit 9376fcff86
2 changed files with 24 additions and 4 deletions

View File

@ -17,4 +17,5 @@ public interface IRepository<TEntity>
public Task UpdateAsync<TDto>(TDto dto, Expression<Func<TEntity, bool>> expression, CancellationToken ct = default);
public Task DeleteAsync<TDto>(Expression<Func<TEntity, bool>> expression, CancellationToken ct = default);
Task ReadAsync(Core.Tests.Mock.User user);
}

View File

@ -12,6 +12,8 @@ public class DbRepositoryTests
{
private IHost _host;
private IRepository<User> _userRepo;
[SetUp]
public void Setup()
{
@ -24,6 +26,8 @@ public class DbRepositoryTests
builder.Services.AddAutoMapper(Assembly.GetExecutingAssembly());
_host = builder.Build();
_userRepo = _host.Services.GetRequiredService<IRepository<User>>();
}
[TearDown]
@ -39,12 +43,27 @@ public class DbRepositoryTests
{
// Arrange
var faker = Fake.CreateUserFaker();
var repo = _host.Services.GetRequiredService<IRepository<User>>();
// 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));
}
}