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 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. using AutoMapper;
  2. using Diligent.WebAPI.Business.MappingProfiles;
  3. using Diligent.WebAPI.Business.Services;
  4. using Diligent.WebAPI.Contracts.DTOs.Applicant;
  5. using Diligent.WebAPI.Contracts.Exceptions;
  6. using Diligent.WebAPI.Data.Entities;
  7. namespace Diligent.WebAPI.Tests.Services
  8. {
  9. public class ApplicantServiceTests
  10. {
  11. private readonly IMapper _mapper;
  12. private readonly List<Applicant> _applicants;
  13. private readonly Applicant _applicant;
  14. public ApplicantServiceTests()
  15. {
  16. _applicant = new Applicant
  17. {
  18. ApplicantId = 1,
  19. ApplicationChannel = "Instagram",
  20. BitBucketLink = null,
  21. CV = "link",
  22. DateOfApplication = DateTime.Now,
  23. Email = "some@mail.com",
  24. Experience = 1,
  25. FirstName = "Dzenis",
  26. LastName = "Hadzifejzovic",
  27. GithubLink = null,
  28. LinkedlnLink = null,
  29. PhoneNumber = "432424",
  30. Position = ".NET Developer"
  31. };
  32. _applicants = new List<Applicant>
  33. {
  34. _applicant
  35. };
  36. // configure mapper
  37. var configuration = new MapperConfiguration(cfg => cfg.AddProfiles(
  38. new List<Profile>
  39. {
  40. new ApplicantMappingProfile()
  41. }));
  42. _mapper = new Mapper(configuration);
  43. }
  44. [Fact]
  45. public async Task GetAll_ShouldReturnListOfApplicants_Always()
  46. {
  47. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  48. ApplicantService applicantService = new(databaseContext, _mapper);
  49. var result = await applicantService.GetAll();
  50. result.Should().BeEquivalentTo(_mapper.Map<List<ApplicantViewDto>>(_applicants));
  51. }
  52. [Fact]
  53. public async Task GetById_ShouldReturnApplicant_WhenApplicantExist()
  54. {
  55. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  56. ApplicantService applicantService = new(databaseContext, _mapper);
  57. var result = await applicantService.GetById(1);
  58. result.Should().BeEquivalentTo(_mapper.Map<ApplicantViewDto>(_applicant));
  59. }
  60. [Fact]
  61. public async Task GetById_ShouldThrowEntityNotFooundException_WhenApplicantDontExist()
  62. {
  63. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  64. ApplicantService applicantService = new(databaseContext, _mapper);
  65. await Assert.ThrowsAsync<EntityNotFoundException>(async () => await applicantService.GetById(1000));
  66. }
  67. [Fact]
  68. public async Task CreateApplicant_ShouldAddEntityIntoDatabase_Always()
  69. {
  70. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  71. ApplicantService applicantService = new(databaseContext, _mapper);
  72. ApplicantCreateDto applicantCreateDto = new()
  73. {
  74. ApplicationChannel = "Facebook",
  75. BitBucketLink = null,
  76. CV = "link",
  77. Email = "some@mail.com",
  78. Experience = 1,
  79. FirstName = "Meris",
  80. LastName = "Ahmatovic",
  81. GithubLink = null,
  82. LinkedlnLink = null,
  83. PhoneNumber = "432424",
  84. Position = ".NET Developer"
  85. };
  86. await applicantService.CreateApplicant(applicantCreateDto);
  87. var applicants = await applicantService.GetAll();
  88. Assert.Equal(2, applicants.Count);
  89. }
  90. [Fact]
  91. public async Task DeleteApplicant_ShouldDeleteApplicant_WhenApplicantExist()
  92. {
  93. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  94. ApplicantService applicantService = new(databaseContext, _mapper);
  95. await applicantService.DeleteApplicant(1);
  96. var applicants = await applicantService.GetAll();
  97. Assert.Empty(applicants);
  98. }
  99. [Fact]
  100. public async Task DeleteApplicant_ShouldThrowEntityNotFooundException_WhenApplicantDontExist()
  101. {
  102. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  103. ApplicantService applicantService = new(databaseContext, _mapper);
  104. await Assert.ThrowsAsync<EntityNotFoundException>(async () => await applicantService.DeleteApplicant(1000));
  105. }
  106. [Fact]
  107. public async Task UpdateApplicant_ShouldUpdateApplicant_WhenApplicantExist()
  108. {
  109. var databaseContext = await Helpers<Applicant>.GetDatabaseContext(_applicants);
  110. ApplicantService applicantService = new(databaseContext, _mapper);
  111. ApplicantUpdateDto applicantUpdateDto = new()
  112. {
  113. ApplicationChannel = "Instagram",
  114. BitBucketLink = null,
  115. CV = "link",
  116. Email = "some@mail.com",
  117. Experience = 1,
  118. FirstName = "Dzenis",
  119. LastName = "Hadzifejzovic",
  120. GithubLink = null,
  121. LinkedlnLink = null,
  122. PhoneNumber = "432424",
  123. Position = "React Developer"
  124. };
  125. await applicantService.UpdateApplicant(1,applicantUpdateDto);
  126. var applicant = await applicantService.GetById(1);
  127. Assert.Equal(applicant.Position,applicantUpdateDto.Position);
  128. }
  129. }
  130. }