| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using AutoMapper;
- using Diligent.WebAPI.Business.MappingProfiles;
- using Diligent.WebAPI.Business.Services;
- using Diligent.WebAPI.Business.Settings;
- using Diligent.WebAPI.Contracts.DTOs.Comment;
- using Diligent.WebAPI.Data.Entities;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.Logging;
- using Microsoft.Extensions.Options;
-
- namespace Diligent.WebAPI.Tests.Services
- {
- public class CommentServiceTests
- {
- private readonly IMapper _mapper;
- private readonly List<Comment> _comments;
- private readonly List<Applicant> _applicants;
- private readonly ILogger<CommentService> _logger = Substitute.For<ILogger<CommentService>>();
- private readonly List<User> _users;
- public CommentServiceTests()
- {
- // mock data
- _applicants = MockData.GetListOfApplicants();
- _comments = MockData.GetListOfComments();
- _users = MockData.GetListOfUsers();
-
- // configure mapper
- var configuration = new MapperConfiguration(cfg => cfg.AddProfiles(
- new List<Profile>
- {
- new CommentMappingProfile()
- }));
- _mapper = new Mapper(configuration);
- }
-
- [Fact]
- public async Task CreateComment_ShouldSendMailAndCreateComments_WhenThereIsUserToNotify()
- {
- var databaseContext = await Helpers<Comment>.GetDatabaseContext(_comments);
- var frontSettings = Options.Create(new FrontEndSettings
- {
- BaseUrl = "some url"
- });
- var mailer = Substitute.For<IEmailer>();
- mailer.When(x => x.SendEmailAsync(Arg.Any<List<string>>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<bool>())).Do(x => { });
-
- CommentService commentService = new(frontSettings,databaseContext, _mapper, _logger, mailer);
-
- var commentCreateDto = new CommentCreateDto
- {
- ApplicantId = _applicants[0].ApplicantId,
- Content = "dsadasd",
- UserId = _users[0].Id,
- UsersToNotify = new List<string> { "dzenis@dilig.net" }
- };
-
- await commentService.CreateComment(commentCreateDto);
- var comments = await databaseContext.Comments.ToListAsync();
-
- Assert.Equal(2, comments.Count);
- await mailer.Received().SendEmailAsync(Arg.Any<List<string>>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<bool>());
- }
-
- [Fact]
- public async Task CreateComment_ShouldCreateComments_WhenThereIsNoUserToNotify()
- {
- var databaseContext = await Helpers<Comment>.GetDatabaseContext(_comments);
- var frontSettings = Options.Create(new FrontEndSettings
- {
- BaseUrl = "some url"
- });
- var mailer = Substitute.For<IEmailer>();
- mailer.When(x => x.SendEmailAsync(Arg.Any<List<string>>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<bool>())).Do(x => { });
-
- CommentService commentService = new(frontSettings, databaseContext, _mapper, _logger, mailer);
-
- var commentCreateDto = new CommentCreateDto
- {
- ApplicantId = _applicants[0].ApplicantId,
- Content = "dsadasd",
- UserId = _users[0].Id,
- UsersToNotify = new List<string>()
- };
-
- await commentService.CreateComment(commentCreateDto);
- var comments = await databaseContext.Comments.ToListAsync();
-
- Assert.Equal(2, comments.Count);
- await mailer.DidNotReceive().SendEmailAsync(Arg.Any<List<string>>(), Arg.Any<string>(), Arg.Any<string>(), Arg.Any<bool>());
- }
- }
- }
|