Die Testmethode `CreateAsync_ShouldPersistUser` wurde entfernt und `CreateAsync_ShouldNotThrow` mit Testfällen für die Erstellung einzelner und mehrerer Benutzer hinzugefügt. Die neue Methode prüft, dass `CreateAsync` keine Ausnahmen auslöst, während Benutzerdaten mit einem Faker erzeugt werden.
51 lines
1.5 KiB
C#
51 lines
1.5 KiB
C#
namespace DigitalData.Core.Tests.Infrastructure;
|
|
|
|
using DigitalData.Core.Infrastructure;
|
|
using DigitalData.Core.Tests.Mock;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
using System.Reflection;
|
|
using DigitalData.Core.Abstractions.Infrastructure;
|
|
|
|
public class DbRepositoryTests
|
|
{
|
|
private IHost _host;
|
|
|
|
[SetUp]
|
|
public void Setup()
|
|
{
|
|
var builder = Host.CreateApplicationBuilder();
|
|
|
|
builder.Services.AddDbContext<MockDbContext>(opt => opt.UseInMemoryDatabase("MockDB"));
|
|
|
|
builder.Services.AddDbRepository<MockDbContext, User>(context => context.Users);
|
|
|
|
builder.Services.AddAutoMapper(Assembly.GetExecutingAssembly());
|
|
|
|
_host = builder.Build();
|
|
}
|
|
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
if (_host is IDisposable disposableHost)
|
|
disposableHost.Dispose();
|
|
}
|
|
|
|
[TestCase(true, TestName = "WhenGivenMultipleUsers")]
|
|
[TestCase(false, TestName = "WhenGivenSingleUser")]
|
|
public void CreateAsync_ShouldNotThrow(bool multiple)
|
|
{
|
|
// 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))));
|
|
else
|
|
Assert.DoesNotThrowAsync(async () => await repo.CreateAsync(faker.Generate()));
|
|
}
|
|
}
|