From 6cff609168e0ef96bc2cc6dc34c71504777adbe8 Mon Sep 17 00:00:00 2001 From: prtsie Date: Tue, 17 Sep 2024 20:51:45 +0300 Subject: [PATCH] tests in ApplicantsRepositoryTests.cs for FindByUserId method --- .../Repositories/ApplicantsRepositoryTests.cs | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 SchengenVisaApi/VisaApiTests/Database/Repositories/ApplicantsRepositoryTests.cs diff --git a/SchengenVisaApi/VisaApiTests/Database/Repositories/ApplicantsRepositoryTests.cs b/SchengenVisaApi/VisaApiTests/Database/Repositories/ApplicantsRepositoryTests.cs new file mode 100644 index 0000000..da47582 --- /dev/null +++ b/SchengenVisaApi/VisaApiTests/Database/Repositories/ApplicantsRepositoryTests.cs @@ -0,0 +1,55 @@ +using ApplicationLayer.InfrastructureServicesInterfaces; +using ApplicationLayer.Services.Applicants.NeededServices; +using FluentAssertions; +using Infrastructure.Database; +using Infrastructure.Database.Applicants.Repositories; +using Infrastructure.Database.Applicants.Repositories.Exceptions; +using VisaApi.Fakers; +using VisaApi.Services; + +namespace VisaApi.Database.Repositories +{ + public class ApplicantsRepositoryTests + { + private static IApplicantsRepository GetRepository(DbContext context) + => new ApplicantsRepository(context, context); + + private static IDateTimeProvider GetDateTimeProvider() => new TestDateTimeProvider(); + + [Fact] + private async Task FindByUserIdForNotExistingShouldThrow() + { + await using var context = InMemoryContextProvider.GetDbContext(); + var repository = GetRepository(context); + ApplicantNotFoundByUserIdException? result = null; + + try + { + await repository.FindByUserIdAsync(Guid.NewGuid(), CancellationToken.None); + } + catch (Exception e) + { + result = e as ApplicantNotFoundByUserIdException; + } + + result.Should().NotBeNull(); + } + + [Fact] + private async Task FindByUserIdForExistingShouldReturnApplicant() + { + await using var context = InMemoryContextProvider.GetDbContext(); + var repository = GetRepository(context); + var user = new UserFaker().Generate(); + var applicant = new ApplicantFaker(GetDateTimeProvider()).Generate(); + applicant.UserId = user.Id; + await context.AddAsync(user); + await repository.AddAsync(applicant, CancellationToken.None); + await context.SaveChangesAsync(); + + var result = await repository.FindByUserIdAsync(user.Id, CancellationToken.None); + + result.Should().BeEquivalentTo(applicant); + } + } +}