private void Seed() { _factory.CreateClient(); using var scope = _factory.Services.CreateScope(); var context = scope.ServiceProvider.GetService <InvoiceDbContext>(); context.Invoices.RemoveRange(context.Invoices); context.Invoices.Add(InvoiceFaker.Create(1, "Joao")); context.Invoices.Add(InvoiceFaker.Create(2, "Joao")); context.Invoices.Add(InvoiceFaker.Create(3, "Joao", status: Status.Cancelled)); context.Invoices.Add(InvoiceFaker.Create(4, "Maria")); context.Invoices.Add(InvoiceFaker.Create(5, "Maria", status: Status.Cancelled)); context.Invoices.Add(InvoiceFaker.Create(6, "Maria", status: Status.Submitted)); context.Invoices.Add(InvoiceFaker.Create(7, "Jose")); context.Invoices.Add(InvoiceFaker.Create(8, "Jose", status: Status.Cancelled)); context.Invoices.Add(InvoiceFaker.Create(9, "Jose", status: Status.Submitted)); context.Invoices.Add(InvoiceFaker.Create(10, "Pedro")); context.Invoices.Add(InvoiceFaker.Create(11, "Pedro", status: Status.Cancelled)); context.Invoices.Add(InvoiceFaker.Create(12, "Pedro", status: Status.Submitted)); context.SaveChanges(); }
public void Create_DataCorrect_BalanceAndTransactionCreated() { var invoice = InvoiceFaker.Create(); var balance = FundingBalanceRepository.Create( invoice.entity_id, invoice.entity_type, invoice.currency_type ); FundingBalanceRepository.AddFunds(balance, invoice); Assert.NotNull(balance); var txs = FundingTransactionRepository.Get(invoice.entity_id, invoice.entity_type, invoice.currency_type); Assert.AreEqual(1, txs.Length); var transaction = txs[0]; balance = balance.Refresh(); Assert.AreEqual(invoice.amount, balance.balance); Assert.AreEqual(balance.entity_id, transaction.entity_id); Assert.AreEqual(balance.entity_type, transaction.entity_type); Assert.AreEqual(balance.currency_type, transaction.currency_type); }
public void UpdateStatus_DataCorrect_StatusUpdated() { var invoice = InvoiceFaker.Create(); Assert.AreEqual(InvoiceStatus.Created, invoice.status); InvoiceRepository.UpdateStatus(invoice, InvoiceStatus.RequiresConfirmation); Assert.AreEqual(InvoiceStatus.RequiresConfirmation, invoice.Refresh().status); }
public void Deposit_InvoiceExists_ThrowsException() { var user = UserFaker.Create(); var invoice = InvoiceFaker.Create(user, user.id, EntityType.UserBalance); Assert.IsNull(FundingTransactionRepository.Find(user, invoice, user.id, EntityType.UserBalance)); FundingTransactionRepository.CreateDeposit(user, invoice); Assert.Throws <Exception>( () => { UserBalanceUtils.Deposit(user, invoice); }); }
public void Create_DataCorrect_GotTransaction() { var user = UserFaker.Create(); var project = ProjectFaker.Create(user); var invoice = InvoiceFaker.Create(user, project.id); var tx = FundingTransactionRepository.Create( user, project.id, EntityType.Project, invoice, 0.05M, CurrencyType.BitCoin ); Assert.True(tx.id > 0); }
public void GetActive_DataCorrect_GotInvoices() { var user = UserFaker.Create(); InvoiceFaker.Create(user); var result = new Browser(new DefaultNancyBootstrapper()) .Get("/api/v1/me/invoices/active", with => { with.HttpRequest(); with.Query("api_token", Jwt.FromUserId(user.id)); }).Result; Assert.AreEqual(1, global::App.DL.Model.Funding.Invoice.GetActiveForUser(user).Length); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); }
public void Edit_ChangingStatusOfOtherUsersInvoice_Forbidden() { var user = UserFaker.Create(); var invoice = InvoiceFaker.Create(); Assert.AreEqual(InvoiceStatus.Created, invoice.status); var result = new Browser(new DefaultNancyBootstrapper()) .Patch("/api/v1/me/invoice/status/update", with => { with.HttpRequest(); with.Query("api_token", Jwt.FromUserId(user.id)); with.Query("invoice_guid", invoice.guid); with.Query("status", InvoiceStatus.RequiresConfirmation.ToString()); }).Result; Assert.AreEqual(HttpStatusCode.Forbidden, result.StatusCode); Assert.AreEqual(InvoiceStatus.Created, invoice.Refresh().status); }
public void Deposit_DataCorrect_BalanceIncreasedAndTxCreated() { var user = UserFaker.Create(); var invoice = InvoiceFaker.Create(user, user.id, EntityType.UserBalance); Assert.IsNull(FundingTransactionRepository.Find(user, invoice, user.id, EntityType.UserBalance)); var balance = UserBalanceUtils.Deposit(user, invoice); var tx = FundingTransactionRepository.Find(user, invoice, user.id, EntityType.UserBalance); Assert.IsNotNull(tx); Assert.AreEqual(user.id, tx.entity_id); Assert.AreEqual(user.id, tx.from_user_id); Assert.AreEqual(EntityType.UserBalance, tx.entity_type); Assert.AreEqual(invoice.amount, balance.balance); }
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); }
public void Deposit_2Deposits_SumCorrect() { var user = UserFaker.Create(); var invoice = InvoiceFaker.Create(user, user.id, EntityType.UserBalance); Assert.IsNull(FundingTransactionRepository.Find(user, invoice, user.id, EntityType.UserBalance)); var balance = UserBalanceUtils.Deposit(user, invoice); var tx = FundingTransactionRepository.Find(user, invoice, user.id, EntityType.UserBalance); Assert.IsNotNull(tx); Assert.AreEqual(invoice.amount, balance.balance); var invoice2 = InvoiceFaker.Create(user, user.id, EntityType.UserBalance); balance = UserBalanceUtils.Deposit(user, invoice2); Assert.AreEqual(invoice.amount + invoice2.amount, balance.balance); }
public void AddFunds_DataCorrect_AddFunds() { var user = UserFaker.Create(); var invoice = InvoiceFaker.Create(user); var balance = FundingBalanceRepository.Create( invoice.entity_id, invoice.entity_type, invoice.currency_type ); FundingBalanceRepository.AddFunds(balance, invoice); Assert.NotNull(balance); balance = balance.Refresh(); Assert.AreEqual(invoice.amount, balance.balance); var newInvoice = InvoiceFaker.Create(user, invoice.entity_id); balance = FundingBalanceRepository.AddFunds(balance, newInvoice).Refresh(); Assert.AreEqual(invoice.amount + newInvoice.amount, balance.balance); }