You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. using Diligent.WebAPI.Contracts.DTOs.Ad;
  2. using Diligent.WebAPI.Contracts.DTOs.Applicant;
  3. using Diligent.WebAPI.Contracts.DTOs.Pattern;
  4. using Diligent.WebAPI.Contracts.Exceptions;
  5. using Diligent.WebAPI.Data.Entities;
  6. using NSubstitute.ReturnsExtensions;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace Diligent.WebAPI.Tests.Controllers
  13. {
  14. public class PatternsControllerTests
  15. {
  16. private IPatternService _patternService = Substitute.For<IPatternService>();
  17. private List<PatternResponseDto> _patterns = new List<PatternResponseDto>();
  18. private PatternResponseDto _pattern;
  19. public PatternsControllerTests()
  20. {
  21. _pattern = new PatternResponseDto
  22. {
  23. Id = 1205,
  24. CreatedAt = DateTime.Now,
  25. Message = "Poruka",
  26. Title = "Title",
  27. SelectionLevel = new Contracts.DTOs.SelectionLevel.SelectionLevelResposneDto
  28. {
  29. Id = 2345,
  30. Name = "Zakazan termin"
  31. }
  32. };
  33. _patterns.Add(_pattern);
  34. }
  35. [Fact]
  36. public async Task GetAll_ShouldReturn200OK_WhenCalled()
  37. {
  38. _patternService.GetAllAsync().Returns(_patterns);
  39. PatternsController patternsController = new(_patternService);
  40. var result = await patternsController.GetAll();
  41. (result as OkObjectResult).StatusCode.Should().Be(200);
  42. }
  43. [Fact]
  44. public async Task GetById_ShouldReturn200OK_WhenPatternExists()
  45. {
  46. _patternService.GetByIdAsync(Arg.Any<int>()).Returns(_pattern);
  47. PatternsController patternsController = new(_patternService);
  48. var result = await patternsController.GetById(1205);
  49. (result as OkObjectResult).StatusCode.Should().Be(200);
  50. }
  51. [Fact]
  52. public async Task GetById_ShouldThrowEntityNotFoundException_WhenPatternDontExist()
  53. {
  54. _patternService.When(x => x.GetByIdAsync(Arg.Any<int>())).Do(x => { throw new EntityNotFoundException(); });
  55. PatternsController patternsController = new(_patternService);
  56. await Assert.ThrowsAsync<EntityNotFoundException>(() => patternsController.GetById(1000));
  57. }
  58. [Fact]
  59. public async Task GetFilteredPatterns_ShouldReturn200OK_WhenCalled()
  60. {
  61. _patternService.GetFilteredPatternsAsync(new FilterPatternDto
  62. {
  63. FromDate = new DateTime(2022, 11, 30),
  64. ToDate = DateTime.Now,
  65. SelectionLevels = null
  66. }).Returns(_patterns);
  67. PatternsController patternsController = new(_patternService);
  68. var result = await patternsController.GetFilteredPatterns(new FilterPatternDto
  69. {
  70. FromDate = new DateTime(2022, 11, 30),
  71. ToDate = DateTime.Now,
  72. SelectionLevels = null
  73. });
  74. (result as OkObjectResult).StatusCode.Should().Be(200);
  75. }
  76. [Fact]
  77. public async Task GetCorrespondingPatternApplicants_ShouldReturn200OK_WhenCalled()
  78. {
  79. var patternApplicants = new List<PatternApplicantViewDto>
  80. {
  81. new PatternApplicantViewDto
  82. {
  83. ApplicantId = 1,
  84. Email = "ermin.bronja@dilig.net",
  85. FirstName = "Ermin",
  86. LastName = "Bronja"
  87. }
  88. };
  89. _patternService.GetCorrespondingPatternApplicants(1205).Returns(patternApplicants);
  90. PatternsController patternsController = new(_patternService);
  91. var result = await patternsController.GetCorrespondingPatternApplicants(1205);
  92. (result as OkObjectResult).StatusCode.Should().Be(200);
  93. }
  94. [Fact]
  95. public async Task GetCorrespondingPatternApplicants_ShouldThrowEntityNotFoundException_WhenPatternDontExist()
  96. {
  97. _patternService.When(x => x.GetCorrespondingPatternApplicants(Arg.Any<int>())).Do(x => { throw new EntityNotFoundException(); });
  98. PatternsController patternsController = new(_patternService);
  99. await Assert.ThrowsAsync<EntityNotFoundException>(() => patternsController.GetCorrespondingPatternApplicants(1000));
  100. }
  101. [Fact]
  102. public async Task CreatePattern_ShouldReturn201Created_WhenPatternCreated()
  103. {
  104. var patternCreateDto = new PatternCreateDto
  105. {
  106. CreatedAt = DateTime.Now,
  107. Message = "Poruka",
  108. SelectionLevelId = 5,
  109. Title = "Čeka na zakazivanju"
  110. };
  111. _patternService.CreateAsync(patternCreateDto);
  112. PatternsController patternsController = new(_patternService);
  113. var result = await patternsController.Create(patternCreateDto);
  114. (result as StatusCodeResult).StatusCode.Should().Be(201);
  115. }
  116. [Fact]
  117. public async Task CreatePattern_ShouldThrowEntityNotFoundException_WhenPatternAlreadyExist()
  118. {
  119. _patternService.When(x => x.CreateAsync(Arg.Any<PatternCreateDto>())).Do(x => { throw new EntityNotFoundException(); });
  120. PatternsController patternsController = new(_patternService);
  121. await Assert.ThrowsAsync<EntityNotFoundException>(() => patternsController.Create(new PatternCreateDto { Title = "Title", CreatedAt = DateTime.Now, Message = "Poruka", SelectionLevelId = 2345}));
  122. }
  123. [Fact]
  124. public async Task ScheduleInterview_ShouldReturn200OK_WhenInterviewScheduled()
  125. {
  126. var scheduleInterviewDto = new ScheduleInterviewDto
  127. {
  128. Emails = new List<string>
  129. {
  130. "ermin.bronja@dilig.net"
  131. },
  132. PatternId = 1205
  133. };
  134. _patternService.ScheduleIntrviewAsync(scheduleInterviewDto).ReturnsNull();
  135. PatternsController patternsController = new(_patternService);
  136. var result = await patternsController.ScheduleInterview(scheduleInterviewDto);
  137. var res = result as StatusCodeResult;
  138. Assert.Equal(res, null);
  139. }
  140. [Fact]
  141. public async Task ScheduleInterview_ShouldThrowEntityNotFoundException_WhenPatternDoesNotExist()
  142. {
  143. _patternService.When(x => x.ScheduleIntrviewAsync(Arg.Any<ScheduleInterviewDto>())).Do(x => { throw new EntityNotFoundException(); });
  144. PatternsController patternsController = new(_patternService);
  145. await Assert.ThrowsAsync<EntityNotFoundException>(() => patternsController.ScheduleInterview(new ScheduleInterviewDto
  146. {
  147. Emails = new List<string>
  148. {
  149. "ermin.bronja@dilig.net"
  150. },
  151. PatternId = 1205
  152. }));
  153. }
  154. [Fact]
  155. public async Task UpdatePattern_ShouldReturn200OK_WhenPatternUpdated()
  156. {
  157. var updatePatternDto = new PatternUpdateDto
  158. {
  159. CreatedAt = DateTime.Now,
  160. Message = "Poruka 1",
  161. SelectionLevelId = 500,
  162. Title = "Naslov"
  163. };
  164. _patternService.UpdateAsync(updatePatternDto, 1205);
  165. PatternsController patternsController = new(_patternService);
  166. var result = await patternsController.Update(updatePatternDto, 1205);
  167. (result as StatusCodeResult).StatusCode.Should().Be(200);
  168. }
  169. [Fact]
  170. public async Task UpdatePattern_ShouldThrowEntityNotFoundException_WhenPatternDoesNotExist()
  171. {
  172. var patternUpdateDto = new PatternUpdateDto
  173. {
  174. CreatedAt = DateTime.Now,
  175. SelectionLevelId = 2345,
  176. Message = "Poruka",
  177. Title = "Title"
  178. };
  179. _patternService.When(x => x.UpdateAsync(Arg.Any<PatternUpdateDto>(), Arg.Any<int>())).Do(x => { throw new EntityNotFoundException(); });
  180. PatternsController patternsController = new(_patternService);
  181. await Assert.ThrowsAsync<EntityNotFoundException>(() => patternsController.Update(patternUpdateDto, 1205));
  182. }
  183. [Fact]
  184. public async Task DeletePattern_ShouldReturn204NoContent_WhenPatternDeleted()
  185. {
  186. PatternsController patternsController = new(_patternService);
  187. var result = await patternsController.DeletePattern(1205);
  188. (result as StatusCodeResult).StatusCode.Should().Be(204);
  189. }
  190. [Fact]
  191. public async Task Delete_ShouldThrowEntityNotFoundException_WhenPatternDoesNotExist()
  192. {
  193. _patternService.When(x => x.DeleteAsync(Arg.Any<int>())).Do(x => { throw new EntityNotFoundException(); });
  194. PatternsController patternsController = new(_patternService);
  195. await Assert.ThrowsAsync<EntityNotFoundException>(() => patternsController.DeletePattern(1205));
  196. }
  197. }
  198. }