Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

ApplicantServiceTests.cs 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. using AutoMapper;
  2. using Diligent.WebAPI.Business.Extensions;
  3. using Diligent.WebAPI.Business.MappingProfiles;
  4. using Diligent.WebAPI.Business.Services;
  5. using Diligent.WebAPI.Contracts.DTOs.Ad;
  6. using Diligent.WebAPI.Contracts.DTOs.Applicant;
  7. using Diligent.WebAPI.Contracts.Exceptions;
  8. using Diligent.WebAPI.Data.Entities;
  9. using Microsoft.AspNetCore.Http;
  10. using static Diligent.WebAPI.Data.Entities.Applicant;
  11. namespace Diligent.WebAPI.Tests.Services
  12. {
  13. public class ApplicantServiceTests
  14. {
  15. private readonly IMapper _mapper;
  16. private readonly HttpContext _httpContext;
  17. private readonly List<Applicant> _applicants;
  18. private readonly List<Ad> _ads;
  19. public ApplicantServiceTests()
  20. {
  21. _applicants = MockData.GetListOfApplicants();
  22. _ads = MockData.GetListOfAds();
  23. // configure mapper
  24. var configuration = new MapperConfiguration(cfg => cfg.AddProfiles(
  25. new List<Profile>
  26. {
  27. new ApplicantMappingProfile(),
  28. new AdMappingProfile(),
  29. new SelectionProcessMappingProfile()
  30. }));
  31. _mapper = new Mapper(configuration);
  32. _httpContext = new DefaultHttpContext();
  33. }
  34. [Fact]
  35. public async Task GetFilteredApplicants_ShouldReturnListOfApplicants_Always()
  36. {
  37. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  38. ApplicantService applicantService = new(databaseContext, _mapper);
  39. var filterDto = new ApplicantFilterDto();
  40. var result = await applicantService.GetFilteredApplicants(filterDto);
  41. Assert.Equal(_applicants.Count,result.Total);
  42. }
  43. [Fact]
  44. public async Task GetById_ShouldReturnApplicant_WhenApplicantExist()
  45. {
  46. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  47. ApplicantService applicantService = new(databaseContext, _mapper);
  48. var result = await applicantService.GetById(1);
  49. result.Should().BeEquivalentTo(_mapper.Map<ApplicantViewDto>(_applicants[0]));
  50. }
  51. [Fact]
  52. public async Task GetById_ShouldThrowEntityNotFooundException_WhenApplicantDontExist()
  53. {
  54. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  55. ApplicantService applicantService = new(databaseContext, _mapper);
  56. await Assert.ThrowsAsync<EntityNotFoundException>(async () => await applicantService.GetById(1000));
  57. }
  58. [Fact]
  59. public async Task CreateApplicant_ShouldAddEntityIntoDatabase_Always()
  60. {
  61. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  62. ApplicantService applicantService = new(databaseContext, _mapper);
  63. ApplicantCreateDto applicantCreateDto = new()
  64. {
  65. ApplicationChannel = "Facebook",
  66. BitBucketLink = null,
  67. CV = "link",
  68. Email = "some@mail.com",
  69. Experience = 1,
  70. FirstName = "Meris",
  71. LastName = "Ahmatovic",
  72. GithubLink = null,
  73. LinkedlnLink = null,
  74. PhoneNumber = "432424",
  75. Position = ".NET Developer",
  76. TypeOfEmployment = TypesOfEmployment.Intership.ToString()
  77. };
  78. await applicantService.CreateApplicant(applicantCreateDto);
  79. var filterDto = new ApplicantFilterDto
  80. {
  81. CurrentPage = 1,
  82. PageSize = 4
  83. };
  84. var result = await applicantService.GetFilteredApplicants(filterDto);
  85. Assert.Equal(2, result.Total);
  86. }
  87. [Fact]
  88. public async Task DeleteApplicant_ShouldDeleteApplicant_WhenApplicantExist()
  89. {
  90. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  91. ApplicantService applicantService = new(databaseContext, _mapper);
  92. await applicantService.DeleteApplicant(1);
  93. var filterDto = MockData.GetApplicantFilters();
  94. var applicants = await applicantService.GetFilteredApplicants(filterDto);
  95. Assert.Empty(applicants.Items);
  96. }
  97. [Fact]
  98. public async Task DeleteApplicant_ShouldThrowEntityNotFooundException_WhenApplicantDontExist()
  99. {
  100. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  101. ApplicantService applicantService = new(databaseContext, _mapper);
  102. await Assert.ThrowsAsync<EntityNotFoundException>(async () => await applicantService.DeleteApplicant(1000));
  103. }
  104. [Fact]
  105. public async Task UpdateApplicant_ShouldUpdateApplicant_WhenApplicantExist()
  106. {
  107. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  108. ApplicantService applicantService = new(databaseContext, _mapper);
  109. ApplicantUpdateDto applicantUpdateDto = new()
  110. {
  111. ApplicationChannel = "Instagram",
  112. BitBucketLink = null,
  113. CV = "link",
  114. Email = "some@mail.com",
  115. Experience = 1,
  116. FirstName = "Dzenis",
  117. LastName = "Hadzifejzovic",
  118. GithubLink = null,
  119. LinkedlnLink = null,
  120. PhoneNumber = "432424",
  121. Position = "React Developer"
  122. };
  123. await applicantService.UpdateApplicant(1, applicantUpdateDto);
  124. var applicant = await applicantService.GetById(1);
  125. Assert.Equal(applicant.Position, applicantUpdateDto.Position);
  126. }
  127. [Fact]
  128. public async Task GetAllAdsApplicants_ShouldReturnListOfAdApplicants_Always()
  129. {
  130. var databaseContext = await Helpers<Ad>.GetDatabaseContext(_ads);
  131. ApplicantService applicantService = new(databaseContext, _mapper);
  132. var filterDto = MockData.GetApplicantFilters();
  133. var result = await applicantService.GetAllAdsApplicants(filterDto);
  134. result.Should().BeEquivalentTo(_mapper.Map<List<AdApplicantsViewDto>>(_ads));
  135. }
  136. [Fact]
  137. public async Task GetApplicantWithSelectionProcessesById_ShouldReturnApplicant_WhenApplicantExists()
  138. {
  139. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  140. ApplicantService applicantService = new(databaseContext, _mapper);
  141. var result = await applicantService.GetApplicantWithSelectionProcessesById(1);
  142. var processes = result.SelectionProcesses;
  143. processes.Should().HaveCount(3);
  144. result.Should().BeEquivalentTo(_mapper.Map<ApplicantViewDto>(_applicants[0]));
  145. }
  146. }
  147. }