diff --git a/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs b/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs index 8c580b8..4f73e94 100644 --- a/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs +++ b/DigitalData.Core.Tests/Infrastructure/DbRepositoryTests.cs @@ -51,19 +51,19 @@ public class DbRepositoryTests Assert.DoesNotThrowAsync(async () => await _userRepo.CreateAsync(faker.Generate())); } - [TestCase(true, TestName = "WhenGivenMultipleUsers")] - [TestCase(false, TestName = "WhenGivenSingleUser")] - public async Task ReadAsync_ShouldReturnCreated(bool multiple) + [TestCase(true, TestName = "WhenDtoUsed")] + [TestCase(false, TestName = "WhenEntityUsed")] + public async Task ReadAsync_ShouldReturnCreated(bool useDto) { - // Arrange - var faker = Fake.CreateUserFaker(); - var user = faker.Generate(); - // Act - var createdUser = await _userRepo.CreateAsync(user); + var createdUser = useDto + ? await _userRepo.CreateAsync(Fake.UserCreateDto) + : await _userRepo.CreateAsync(Fake.User); + var readUser = await _userRepo.ReadFirstOrDefaultAsync(u => u.Id == createdUser.Id); // Assert - Assert.That(createdUser, Is.EqualTo(readUser)); + Assert.That(readUser, Is.Not.Null); + Assert.That(readUser, Is.EqualTo(createdUser)); } } diff --git a/DigitalData.Core.Tests/Mock/Fake.cs b/DigitalData.Core.Tests/Mock/Fake.cs index 9cc0779..d9150f3 100644 --- a/DigitalData.Core.Tests/Mock/Fake.cs +++ b/DigitalData.Core.Tests/Mock/Fake.cs @@ -9,8 +9,20 @@ public static class Fake .RuleFor(u => u.Email, f => email ?? f.Internet.Email()) .RuleFor(u => u.Age, f => age ?? f.Random.Int(18, 99)); - public static Faker CreateUserDtoFaker(string? firstName = null, string? email = null, int? age = null) => new Faker() + private static readonly Faker UserFaker = CreateUserFaker(); + + public static User User => UserFaker.Generate(); + + public static List Users => UserFaker.Generate(Random.Shared.Next(1, 10)); + + public static Faker CreateUserCreateDtoFaker(string? firstName = null, string? email = null, int? age = null) => new Faker() .RuleFor(u => u.FirstName, f => firstName ?? f.Name.FirstName()) .RuleFor(u => u.Email, f => email ?? f.Internet.Email()) .RuleFor(u => u.Age, f => age ?? f.Random.Int(18, 99)); + + private static readonly Faker UserCreateDtoFaker = CreateUserCreateDtoFaker(); + + public static UserCreateDto UserCreateDto => UserCreateDtoFaker.Generate(); + + public static List UserCreateDtos => UserCreateDtoFaker.Generate(Random.Shared.Next(1, 10)); } diff --git a/DigitalData.Core.Tests/Mock/MappingProfile.cs b/DigitalData.Core.Tests/Mock/MappingProfile.cs new file mode 100644 index 0000000..68dacc7 --- /dev/null +++ b/DigitalData.Core.Tests/Mock/MappingProfile.cs @@ -0,0 +1,16 @@ +using AutoMapper; + +namespace DigitalData.Core.Tests.Mock; + +public class MappingProfile : Profile +{ + public MappingProfile() + { + // DTO ---> Entity + CreateMap(); + CreateMap(); + + // Entity ---> DTO + CreateMap(); + } +} diff --git a/DigitalData.Core.Tests/Mock/UserUpdateDto.cs b/DigitalData.Core.Tests/Mock/UserUpdateDto.cs new file mode 100644 index 0000000..1576f4e --- /dev/null +++ b/DigitalData.Core.Tests/Mock/UserUpdateDto.cs @@ -0,0 +1,5 @@ +namespace DigitalData.Core.Tests.Mock; + +public class UserUpdateDto : UserBase +{ +}