示例#1
0
        public void MailsPost_OkResult()
        {
            //Arrange
            Mock <IEmailSender> emailSender = new Mock <IEmailSender>();

            //Mocking ApplicationContext
            var options = new DbContextOptionsBuilder <ApplicationContext>()
                          .UseInMemoryDatabase(databaseName: "EmailAPI.MoqDB")
                          .Options;
            var context = new ApplicationContext(options);

            var emailPostForm = new EmailPostForm();

            emailPostForm.Subject    = "test";
            emailPostForm.Body       = "test";
            emailPostForm.Recipients = new[] { "*****@*****.**", "*****@*****.**", "Hi@[email protected]" };

            //Act
            var controller = new MailsController(context, emailSender.Object);

            //Assert
            var result = controller.Post(emailPostForm).Result;

            Assert.IsType <OkResult>(result);
        }
示例#2
0
        public async Task <IActionResult> Post([FromBody] EmailPostForm email)
        {
            var mapper = new MapperConfiguration(cfg => cfg.CreateMap <EmailPostForm, EmailLog>()
                                                 .ForMember("Body", opt => opt.MapFrom(c => c.Body))
                                                 .ForMember("Subject", opt => opt.MapFrom(c => c.Subject))
                                                 .ForMember("Recipients", opt => opt.MapFrom(c => c.Recipients)))
                         .CreateMapper();

            Parallel.ForEach(email.Recipients, async recipient =>
            {
                EmailLog emailLog   = mapper.Map <EmailPostForm, EmailLog>(email);
                emailLog.Recipients = recipient;
                await _emailSender.EmailSend(emailLog);
            });
            return(Ok());
        }