Exemplo n.º 1
0
        public void ProcessConfirmedInvoice_DataCorrect_InvoiceProcessed()
        {
            var user = UserFaker.Create();

            var balance = UserBalanceRepository.FindOrCreate(user, CurrencyType.BitCoin);

            var invoice = InvoiceFaker.Create(user, balance.id, EntityType.UserBalance);

            invoice = invoice.UpdateStatus(InvoiceStatus.Confirmed).Refresh();

            invoice = InvoiceUtils.ProcessConfirmedInvoice(invoice).Refresh();

            balance = balance.Refresh();

            Assert.NotNull(balance);

            Assert.AreEqual(InvoiceStatus.Done, invoice.status);
            Assert.AreEqual(invoice.amount, balance.balance);
        }
Exemplo n.º 2
0
        public CliResult Execute()
        {
            Output("Approving invoice");
            Output("Type invoice id:");

            var id      = Convert.ToInt32(Console.ReadLine());
            var invoice = Invoice.Find(id);

            if (invoice == null)
            {
                Output($"Invoice with id {id} not found");
                return(new CliResult(CliExitCode.NotFound, StrOutput));
            }

            Output("Invoice:");
            Output(JObject.FromObject(invoice).ToString());
            Output("Transformed invoice:");
            Output(new InvoiceTransformer().Transform(invoice).ToString());
            Output("Invoice user:"******"Invoice has invalid status - allowed only: " + InvoiceStatus.RequiresConfirmation);
                return(new CliResult(CliExitCode.UnknownError, StrOutput));
            }

            var isApproving = Ask("Approve that invoice?");

            if (!isApproving)
            {
                Output("Aborted.");
                return(new CliResult(CliExitCode.Ok, StrOutput));
            }

            Output("Approving invoice...");

            invoice = InvoiceUtils.ConfirmInvoice(invoice);

            var isProcessing = Ask("Process confirmed invoice?");

            if (!isProcessing)
            {
                return(new CliResult(CliExitCode.Ok, StrOutput));
            }

            var balance = UserBalanceRepository.Find(invoice.User());

            Output("Balance before:");
            Output(new UserBalanceTransformer().Transform(balance).ToString());

            Output("Processing invoice...");
            invoice = InvoiceUtils.ProcessConfirmedInvoice(invoice);
            Output("Invoice processing finished...");

            Output("Balance after:");
            Output(new UserBalanceTransformer().Transform(balance.Refresh()).ToString());

            Output("Transformed invoice:");
            Output(new InvoiceTransformer().Transform(invoice).ToString());

            return(new CliResult(CliExitCode.Ok, StrOutput));
        }