public void SendContactUsEmail_BuildsEmailObject()
        {
            // Arrange
            var mailMessage = new EmailMessage();

            _emailService.Setup(r => r.MakeMailMessage(It.IsAny <EmailMessage>()));

            var emailSenderName = "name";

            _configuration.SetupGet(r => r.EmailSenderName).Returns(emailSenderName);

            var emailSender = "*****@*****.**";

            _configuration.SetupGet(r => r.EmailSender).Returns(emailSender);

            _emailService.Setup(r => r.MakeMailMessage(It.IsAny <EmailMessage>())).Callback <EmailMessage>((mail) =>
            {
                mailMessage = mail;
            });

            _emailService.Setup(r => r.Send(It.IsAny <MailMessage>()));

            var emailMessage = new EmailMessage();

            emailMessage.SetFrom("[email protected]", "sender");

            // Act
            _sut.SendContactUsEmail(emailMessage);

            // Assert
            _configuration.VerifyGet(r => r.EmailSender, Times.Exactly(2));
            _configuration.VerifyGet(r => r.EmailSenderName, Times.Exactly(2));
            _emailService.Verify(r => r.MakeMailMessage(It.IsAny <EmailMessage>()), Times.Once);
            _emailService.Verify(r => r.MakeMailMessage(It.IsAny <EmailMessage>()), Times.Once);
            _emailService.Verify(r => r.Send(It.IsAny <MailMessage>()), Times.Once);

            Assert.IsNotNull(mailMessage, "email is null");
            Assert.IsNotNull(mailMessage.To, "email to is null");
            Assert.IsNotNull(mailMessage.From, "email from is null");
            Assert.AreEqual(emailSender, mailMessage.To.Email, "email to address");
            Assert.AreEqual(emailSenderName, mailMessage.To.Name, "email to name");
            Assert.AreEqual(emailSender, mailMessage.From.Email, "email from address");
            Assert.AreEqual(emailSenderName, mailMessage.From.Name, "email from name");
            Assert.AreEqual("Contact from website", emailMessage.Subject);
        }