Example #1
0
        public Email Map(EmailDataInput emailDataInput)
        {
            var sender           = IsEmailAddressValid(emailDataInput.Sender) ? emailDataInput.Sender : throw new ArgumentException($"'{emailDataInput.Sender}' is not a valid email address");
            var joinedRecipients = JoinRecipients(emailDataInput.Recipients);

            return(new Email(sender, joinedRecipients, emailDataInput.Subject, emailDataInput.Body, EmailStatus.Pending));
        }
        public void When_Map_WithEmailDataInputIsCalled_Then_PendingEmailIsReturned()
        {
            // Given
            var emailDataInput = new EmailDataInput
            {
                Sender     = "*****@*****.**",
                Recipients = new List <string>
                {
                    "*****@*****.**",
                    "*****@*****.**"
                },
                Subject = "Test subject",
                Body    = "Test body"
            };
            var emailsMapper = new EmailsMapper();

            // When
            var email = emailsMapper.Map(emailDataInput);

            // Then
            Assert.Equal(emailDataInput.Sender, email.Sender);
            Assert.Equal(string.Join(Separator, emailDataInput.Recipients), email.Recipients);
            Assert.Equal(emailDataInput.Subject, email.Subject);
            Assert.Equal(emailDataInput.Body, email.Body);
            Assert.Equal(EmailStatus.Pending, email.EmailStatus);
        }
        public async Task <IActionResult> CreateEmail([FromBody] EmailDataInput emailData)
        {
            var result = await _emailsRepository.CreateEmail(emailData);

            if (result != null && result.Response)
            {
                return(Ok());
            }

            return(StatusCode(500, result?.Message));
        }
        public async Task <ActionResponse <bool> > CreateEmail(EmailDataInput emailDataInput)
        {
            const string responseMessage = "Successfully created emails";

            return(await ExecuteDbOperation(async() =>
            {
                var email = _emailsMapper.Map(emailDataInput);
                using (var context = _domainContextFactory())
                {
                    await context.Emails.AddAsync(email);
                    await context.SaveChangesAsync();
                }

                return new ActionResponse <bool>(true, responseMessage);
            }));
        }
        public void When_Map_WithEmailDataInputIsCalled_AndOneOfRecipientsEmailIsInvalid_Then_ArgumentExceptionIsThrown()
        {
            // Given
            var emailDataInput = new EmailDataInput
            {
                Sender     = "*****@*****.**",
                Recipients = new List <string>
                {
                    "*****@*****.**",
                    "recipient"
                },
                Subject = "Test subject",
                Body    = "Test body"
            };
            var emailsMapper = new EmailsMapper();

            // When & Then
            var exception = Assert.Throws <ArgumentException>(() => emailsMapper.Map(emailDataInput));

            Assert.Contains("'recipient' is not a valid email address", exception.Message);
        }