Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

CommentServiceTests.cs 3.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using AutoMapper;
  2. using Diligent.WebAPI.Business.MappingProfiles;
  3. using Diligent.WebAPI.Business.Services;
  4. using Diligent.WebAPI.Business.Settings;
  5. using Diligent.WebAPI.Contracts.DTOs.Comment;
  6. using Diligent.WebAPI.Data.Entities;
  7. using Microsoft.EntityFrameworkCore;
  8. using Microsoft.Extensions.Logging;
  9. using Microsoft.Extensions.Options;
  10. namespace Diligent.WebAPI.Tests.Services
  11. {
  12. public class CommentServiceTests
  13. {
  14. private readonly IMapper _mapper;
  15. private readonly List<Comment> _comments;
  16. private readonly List<Applicant> _applicants;
  17. private readonly ILogger<CommentService> _logger = Substitute.For<ILogger<CommentService>>();
  18. private readonly List<User> _users;
  19. public CommentServiceTests()
  20. {
  21. // mock data
  22. _applicants = MockData.GetListOfApplicants();
  23. _comments = MockData.GetListOfComments();
  24. _users = MockData.GetListOfUsers();
  25. // configure mapper
  26. var configuration = new MapperConfiguration(cfg => cfg.AddProfiles(
  27. new List<Profile>
  28. {
  29. new CommentMappingProfile()
  30. }));
  31. _mapper = new Mapper(configuration);
  32. }
  33. [Fact]
  34. public async Task CreateComment_ShouldSendMailAndCreateComments_WhenThereIsUserToNotify()
  35. {
  36. var databaseContext = await Helpers<Comment>.GetDatabaseContext(_comments);
  37. var frontSettings = Options.Create(new FrontEndSettings
  38. {
  39. BaseUrl = "some url"
  40. });
  41. var mailer = Substitute.For<IEmailer>();
  42. mailer.When(x => x.SendEmailAsync(Arg.Any<List<string>>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<bool>())).Do(x => { });
  43. CommentService commentService = new(frontSettings,databaseContext, _mapper, _logger, mailer);
  44. var commentCreateDto = new CommentCreateDto
  45. {
  46. ApplicantId = _applicants[0].ApplicantId,
  47. Content = "dsadasd",
  48. UserId = _users[0].Id,
  49. UsersToNotify = new List<string> { "dzenis@dilig.net" }
  50. };
  51. await commentService.CreateComment(commentCreateDto);
  52. var comments = await databaseContext.Comments.ToListAsync();
  53. Assert.Equal(2, comments.Count);
  54. await mailer.Received().SendEmailAsync(Arg.Any<List<string>>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<bool>());
  55. }
  56. [Fact]
  57. public async Task CreateComment_ShouldCreateComments_WhenThereIsNoUserToNotify()
  58. {
  59. var databaseContext = await Helpers<Comment>.GetDatabaseContext(_comments);
  60. var frontSettings = Options.Create(new FrontEndSettings
  61. {
  62. BaseUrl = "some url"
  63. });
  64. var mailer = Substitute.For<IEmailer>();
  65. mailer.When(x => x.SendEmailAsync(Arg.Any<List<string>>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<bool>())).Do(x => { });
  66. CommentService commentService = new(frontSettings, databaseContext, _mapper, _logger, mailer);
  67. var commentCreateDto = new CommentCreateDto
  68. {
  69. ApplicantId = _applicants[0].ApplicantId,
  70. Content = "dsadasd",
  71. UserId = _users[0].Id,
  72. UsersToNotify = new List<string>()
  73. };
  74. await commentService.CreateComment(commentCreateDto);
  75. var comments = await databaseContext.Comments.ToListAsync();
  76. Assert.Equal(2, comments.Count);
  77. await mailer.DidNotReceive().SendEmailAsync(Arg.Any<List<string>>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<bool>());
  78. }
  79. }
  80. }