public void Able_to_create_instance() { _ = new GenerateInvoiceUseCase( Substitute.For <IOrderRepository>(), Substitute.For <IInvoiceGenerator>(), Substitute.For <IInvoiceRepository>()); }
public async Task Able_to_generate_invoice() { var invoiceId = Guid.NewGuid(); var orderRepo = Substitute.For <IOrderRepository>(); orderRepo.Get(Arg.Any <Guid>()).Returns(OrderMockBuilder.Build()); var invoice = InvoiceMockBuilder.Build(id: invoiceId); var invoiceGen = Substitute.For <IInvoiceGenerator>(); invoiceGen.Generate(Arg.Any <Order>()).Returns(invoice); var invoiceRepo = Substitute.For <IInvoiceRepository>(); var sut = new GenerateInvoiceUseCase(orderRepo, invoiceGen, invoiceRepo); var actual = await sut.Execute(new GenerateInvoiceRequest()); var expected = CreateExpectedInvoice(id: invoiceId); actual.Should().BeEquivalentTo(expected); await invoiceRepo.Received().Save(invoice); }