public void RunCustomerReportBatchShouldSendReports() { // Arrange var customerDataMock = new Mock<ICustomerData>(); var reportBuilderMock = new Mock<IReportBuilder>(); var emailerMock = new Mock<IEmailer>(); var expectedCustomer = new Customer("*****@*****.**"); var expectedReportBody = "the report body"; customerDataMock.Setup(x => x.GetCustomersForCustomerReport()) .Returns(new[] { expectedCustomer }); reportBuilderMock.Setup(x => x.CreateCustomerReport(expectedCustomer)) .Returns(new Report(expectedCustomer.Email, expectedReportBody)); var sut = new ReportingService( customerDataMock.Object, reportBuilderMock.Object, emailerMock.Object); // Act sut.RunCustomerReportBatch(); // Assert emailerMock.Verify(x => x.Send(expectedCustomer.Email, expectedReportBody)); }
public Report CreateCustomerReport(Customer customer) { return new Report(customer.Email, "This is the report for {customer.Email}!"); }