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); }