public void Invoke_ValidData_AddsEmailMessageToDatabaseWithCorrectValues() { // prepare var emailMessage = new EmailMessageModel { From = "*****@*****.**", Recipient = "*****@*****.**", Subject = "subject", Message = "message" }; EmailMessage emailMessageFromDb = null; var mockedEmailMessageRepository = new Mock <IEmailRepository>(); mockedEmailMessageRepository.Setup(r => r.Add(It.IsAny <EmailMessage>())) .Callback <EmailMessage>(u => emailMessageFromDb = u); var mockedUnitOfWork = new Mock <IUnitOfWork>(); var action = new AddNewEmailMessage(mockedEmailMessageRepository.Object, mockedUnitOfWork.Object); // action var result = action.Invoke(emailMessage); // assert Assert.True(result); Assert.Equal("*****@*****.**", emailMessageFromDb.From); Assert.Equal("*****@*****.**", emailMessageFromDb.Recipient); Assert.Equal("subject", emailMessageFromDb.Subject); Assert.Equal("message", emailMessageFromDb.Message); Assert.Equal(0, emailMessageFromDb.FailureCount); mockedEmailMessageRepository.Verify(r => r.Add(It.IsAny <EmailMessage>()), Times.Once); mockedUnitOfWork.Verify(r => r.Save(), Times.Once); }
public void Invoke_InvalidData_AddNorSaveAreCalled() { // prepare var emailMessageToAdd = new EmailMessageModel(); var mockedEmailMessageRepository = new Mock <IEmailRepository>(); var mockedUnitOfWork = new Mock <IUnitOfWork>(); var action = new AddNewEmailMessage(mockedEmailMessageRepository.Object, mockedUnitOfWork.Object); // action var result = action.Invoke(emailMessageToAdd); // assert Assert.False(result); mockedEmailMessageRepository.Verify(r => r.Add(It.IsAny <EmailMessage>()), Times.Never); mockedUnitOfWork.Verify(r => r.Save(), Times.Never); }