Example #1
0
 public void Able_to_create_instance()
 {
     _ = new GenerateInvoiceUseCase(
         Substitute.For <IOrderRepository>(),
         Substitute.For <IInvoiceGenerator>(),
         Substitute.For <IInvoiceRepository>());
 }
Example #2
0
        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);
        }