killbill-aplcache
Changes
invoice/src/test/java/org/killbill/billing/invoice/api/user/TestDefaultInvoiceUserApi.java 52(+9 -43)
Details
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/api/user/TestDefaultInvoiceUserApi.java b/invoice/src/test/java/org/killbill/billing/invoice/api/user/TestDefaultInvoiceUserApi.java
index d3e6ee4..52b0e08 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/api/user/TestDefaultInvoiceUserApi.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/api/user/TestDefaultInvoiceUserApi.java
@@ -113,64 +113,30 @@ public class TestDefaultInvoiceUserApi extends InvoiceTestSuiteWithEmbeddedDB {
Assert.assertEquals(adjustedAccountBalance, initialAccountBalance.add(externalChargeAmount));
}
- @Test(groups = "slow")
- public void testPostExternalChargeOnExistingInvoice() throws Exception {
- // Verify the initial invoice balance
- final BigDecimal invoiceBalance = invoiceUserApi.getInvoice(invoiceId, callContext).getBalance();
- Assert.assertEquals(invoiceBalance.compareTo(BigDecimal.ZERO), 1);
-
- // Verify the initial account balance
- final BigDecimal accountBalance = invoiceUserApi.getAccountBalance(accountId, callContext);
- Assert.assertEquals(accountBalance, invoiceBalance);
- // Post an external charge
- final BigDecimal externalChargeAmount = BigDecimal.TEN;
- final InvoiceItem externalCharge = new ExternalChargeInvoiceItem(invoiceId, accountId, null, UUID.randomUUID().toString(), clock.getUTCToday(), clock.getUTCToday(), externalChargeAmount, accountCurrency);
- final InvoiceItem externalChargeInvoiceItem = invoiceUserApi.insertExternalCharges(accountId, clock.getUTCToday(), ImmutableList.<InvoiceItem>of(externalCharge), true, callContext).get(0);
- verifyExternalChargeOnExistingInvoice(invoiceBalance, null, externalChargeAmount, externalChargeInvoiceItem);
- }
@Test(groups = "slow")
public void testOriginalAmountCharged() throws Exception {
- final Invoice initialInvoice = invoiceUserApi.getInvoice(invoiceId, callContext);
- final BigDecimal originalAmountCharged = initialInvoice.getOriginalChargedAmount();
- final BigDecimal amountCharged = initialInvoice.getChargedAmount();
- Assert.assertEquals(originalAmountCharged.compareTo(amountCharged), 0);
-
- ((ClockMock) clock).addDays(1);
-
- // Sleep at least one sec to make sure created_date for the external charge is different than the created date for the invoice itself
- CallContext newCallContextLater = new DefaultCallContext(accountId, callContext.getTenantId(), callContext.getUserName(), callContext.getCallOrigin(), callContext.getUserType(), callContext.getUserToken(), clock);
// Post an external charge
final BigDecimal externalChargeAmount = BigDecimal.TEN;
- final InvoiceItem externalCharge = new ExternalChargeInvoiceItem(invoiceId, accountId, null, UUID.randomUUID().toString(), clock.getUTCToday(), clock.getUTCToday(), externalChargeAmount, accountCurrency);
- final InvoiceItem externalChargeInvoiceItem = invoiceUserApi.insertExternalCharges(accountId, clock.getUTCToday(), ImmutableList.<InvoiceItem>of(externalCharge), true, newCallContextLater).get(0);
+ final InvoiceItem externalCharge = new ExternalChargeInvoiceItem(null, accountId, null, UUID.randomUUID().toString(), clock.getUTCToday(), null, externalChargeAmount, accountCurrency);
+ final InvoiceItem externalChargeInvoiceItem = invoiceUserApi.insertExternalCharges(accountId, clock.getUTCToday(), ImmutableList.<InvoiceItem>of(externalCharge), true, callContext).get(0);
- final Invoice newInvoice = invoiceUserApi.getInvoice(invoiceId, callContext);
- final BigDecimal newOriginalAmountCharged = newInvoice.getOriginalChargedAmount();
+ final Invoice newInvoice = invoiceUserApi.getInvoice(externalChargeInvoiceItem.getInvoiceId(), callContext);
final BigDecimal newAmountCharged = newInvoice.getChargedAmount();
- final BigDecimal expectedChargedAmount = newInvoice.getOriginalChargedAmount().add(externalChargeInvoiceItem.getAmount());
-
- Assert.assertEquals(originalAmountCharged.compareTo(newOriginalAmountCharged), 0);
- Assert.assertEquals(newAmountCharged.compareTo(expectedChargedAmount), 0);
+ Assert.assertEquals(newInvoice.getOriginalChargedAmount().compareTo(externalChargeAmount), 0);
+ Assert.assertEquals(newAmountCharged.compareTo(externalChargeAmount), 0);
}
@Test(groups = "slow")
- public void testPostExternalChargeForBundleOnExistingInvoice() throws Exception {
- // Verify the initial invoice balance
- final BigDecimal invoiceBalance = invoiceUserApi.getInvoice(invoiceId, callContext).getBalance();
- Assert.assertEquals(invoiceBalance.compareTo(BigDecimal.ZERO), 1);
-
- // Verify the initial account balance
- final BigDecimal accountBalance = invoiceUserApi.getAccountBalance(accountId, callContext);
- Assert.assertEquals(accountBalance, invoiceBalance);
+ public void testPostExternalChargeForBundle() throws Exception {
// Post an external charge
final BigDecimal externalChargeAmount = BigDecimal.TEN;
final UUID bundleId = UUID.randomUUID();
- final InvoiceItem externalCharge = new ExternalChargeInvoiceItem(invoiceId, accountId, bundleId, UUID.randomUUID().toString(), clock.getUTCToday(), clock.getUTCToday(), externalChargeAmount, accountCurrency);
+ final InvoiceItem externalCharge = new ExternalChargeInvoiceItem(null, accountId, bundleId, UUID.randomUUID().toString(), clock.getUTCToday(), null, externalChargeAmount, accountCurrency);
final InvoiceItem externalChargeInvoiceItem = invoiceUserApi.insertExternalCharges(accountId, clock.getUTCToday(), ImmutableList.<InvoiceItem>of(externalCharge), true, callContext).get(0);
- verifyExternalChargeOnExistingInvoice(invoiceBalance, bundleId, externalChargeAmount, externalChargeInvoiceItem);
+ Assert.assertEquals(externalChargeInvoiceItem.getBundleId(), bundleId);
}
private void verifyExternalChargeOnExistingInvoice(final BigDecimal initialInvoiceBalance, @Nullable final UUID bundleId,
@@ -376,7 +342,7 @@ public class TestDefaultInvoiceUserApi extends InvoiceTestSuiteWithEmbeddedDB {
Assert.assertEquals(creditInvoice.getStatus(), InvoiceStatus.COMMITTED);
try {
- final InvoiceItem externalCharge = new ExternalChargeInvoiceItem(invoiceId, accountId, null, "Initial external charge", clock.getUTCToday(), new BigDecimal("12.33"), accountCurrency);
+ final InvoiceItem externalCharge = new ExternalChargeInvoiceItem(invoiceId, accountId, null, "Initial external charge", clock.getUTCToday(), null, new BigDecimal("12.33"), accountCurrency);
invoiceUserApi.insertExternalCharges(accountId, clock.getUTCToday(), ImmutableList.of(externalCharge), true, callContext);
Assert.fail("Should fail to add external charge on already committed invoice");
} catch (final InvoiceApiException e) {
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/api/user/TestInvoiceFlagBehaviors.java b/invoice/src/test/java/org/killbill/billing/invoice/api/user/TestInvoiceFlagBehaviors.java
index a12af65..2810693 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/api/user/TestInvoiceFlagBehaviors.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/api/user/TestInvoiceFlagBehaviors.java
@@ -128,37 +128,6 @@ public class TestInvoiceFlagBehaviors extends InvoiceTestSuiteWithEmbeddedDB {
assertEquals(accountCBA2.compareTo(BigDecimal.ZERO), 0);
}
- @Test(groups = "slow", description = "Verify invoice/account balance with a WRITTEN_OFF invoice. Verify account credit is not added to a previously WRITTEN_OFF invoice." )
- public void testWrittenOffInvoiceWithAccountCredit2() throws Exception {
-
- // Add credit on the account
- invoiceUserApi.insertCredit(accountId, BigDecimal.TEN, null, accountCurrency, true, null, callContext);
-
- final BigDecimal accountBalance0 = invoiceUserApi.getAccountBalance(accountId, callContext);
- assertEquals(accountBalance0.compareTo(new BigDecimal("-10.0")), 0);
-
- final BigDecimal accountCBA0 = invoiceUserApi.getAccountCBA(accountId, callContext);
- assertEquals(accountCBA0.compareTo(BigDecimal.TEN), 0);
-
- // Create new invoice with one charge and expect account credit to be used
- final List<InvoiceItem> items = invoiceUserApi.insertExternalCharges(accountId, clock.getUTCToday(), ImmutableList.<InvoiceItem>of(new ExternalChargeInvoiceItem(UUID.randomUUID(), clock.getUTCNow(), null, accountId, null, null, null, null, new BigDecimal("4.0"), accountCurrency)), true, callContext);
- assertEquals(items.size(), 1);
-
- // Tag invoice with WRITTEN_OFF
- final UUID invoiceId = items.get(0).getInvoiceId();
- tagUserApi.addTag(invoiceId, ObjectType.INVOICE, ControlTagType.WRITTEN_OFF.getId(), callContext);
-
- // Add another charge on the **same invoice** => Because it is WRITTEN_OFF, we expect the CBA logic to not apply any credit
- final List<InvoiceItem> items2 = invoiceUserApi.insertExternalCharges(accountId, clock.getUTCToday(), ImmutableList.<InvoiceItem>of(new ExternalChargeInvoiceItem(UUID.randomUUID(), clock.getUTCNow(), invoiceId, accountId, null, null, null, null, new BigDecimal("10.0"), accountCurrency)), true, callContext);
- assertEquals(items2.size(), 1);
-
- final BigDecimal accountBalance2 = invoiceUserApi.getAccountBalance(accountId, callContext);
- assertEquals(accountBalance2.compareTo(new BigDecimal("-6.00")), 0);
-
- final BigDecimal accountCBA2 = invoiceUserApi.getAccountCBA(accountId, callContext);
- assertEquals(accountCBA2.compareTo(new BigDecimal("6.00")), 0);
- }
-
@Test(groups = "slow", description = "Verify invoice/account balance with migrated invoice. Verify account credit is not consumed and that invoice/account balance does not take into account migrated invoice.")
public void testMigratedInvoiceWithAccountCredit() throws Exception {
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoice.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoice.java
index 3c5cf56..9b8e81d 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoice.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoice.java
@@ -598,98 +598,6 @@ public class TestInvoice extends TestJaxrsBase {
assertEquals(killBillClient.getInvoicesForAccount(accountJson.getAccountId(), requestOptions).size(), 3);
}
- @Test(groups = "slow", description = "Can create an external charge on an existing invoice")
- public void testExternalChargeOnExistingInvoice() throws Exception {
- final Account accountJson = createAccountNoPMBundleAndSubscriptionAndWaitForFirstInvoice();
-
- // Get the invoices
- final List<Invoice> invoices = killBillClient.getInvoicesForAccount(accountJson.getAccountId(), true, false, requestOptions);
- // 2 invoices but look for the non zero dollar one
- assertEquals(invoices.size(), 2);
- final UUID invoiceId = invoices.get(1).getInvoiceId();
- final BigDecimal originalInvoiceAmount = invoices.get(1).getAmount();
- final int originalNumberOfItemsForInvoice = invoices.get(1).getItems().size();
-
- // Post an external charge
- final BigDecimal chargeAmount = BigDecimal.TEN;
- final InvoiceItem externalCharge = new InvoiceItem();
- externalCharge.setAccountId(accountJson.getAccountId());
- externalCharge.setAmount(chargeAmount);
- externalCharge.setCurrency(accountJson.getCurrency());
- externalCharge.setInvoiceId(invoiceId);
- final List<InvoiceItem> createdExternalCharges = killBillClient.createExternalCharges(ImmutableList.of(externalCharge), clock.getUTCToday(), false, true, requestOptions);
- assertEquals(createdExternalCharges.size(), 1);
- final Invoice invoiceWithItems = killBillClient.getInvoice(createdExternalCharges.get(0).getInvoiceId(), true, false, requestOptions);
- assertEquals(invoiceWithItems.getItems().size(), originalNumberOfItemsForInvoice + 1);
- assertNull(invoiceWithItems.getItems().get(originalNumberOfItemsForInvoice).getBundleId());
-
- // Verify the new invoice balance
- final Invoice adjustedInvoice = killBillClient.getInvoice(invoiceId, requestOptions);
- final BigDecimal adjustedInvoiceBalance = originalInvoiceAmount.add(chargeAmount.setScale(2, RoundingMode.HALF_UP));
- assertEquals(adjustedInvoice.getBalance().compareTo(adjustedInvoiceBalance), 0);
- }
-
- @Test(groups = "slow", description = "Can create an external charge on an existing invoice and trigger a payment")
- public void testExternalChargeOnExistingInvoiceWithAutomaticPayment() throws Exception {
- final Account accountJson = createAccountWithPMBundleAndSubscriptionAndWaitForFirstInvoice();
-
- // Get the invoices
- final List<Invoice> invoices = killBillClient.getInvoicesForAccount(accountJson.getAccountId(), true, false, requestOptions);
- // 2 invoices but look for the non zero dollar one
- assertEquals(invoices.size(), 2);
- final UUID invoiceId = invoices.get(1).getInvoiceId();
- final int originalNumberOfItemsForInvoice = invoices.get(1).getItems().size();
-
- // Post an external charge
- final BigDecimal chargeAmount = BigDecimal.TEN;
- final InvoiceItem externalCharge = new InvoiceItem();
- externalCharge.setAccountId(accountJson.getAccountId());
- externalCharge.setAmount(chargeAmount);
- externalCharge.setCurrency(accountJson.getCurrency());
- externalCharge.setInvoiceId(invoiceId);
- final List<InvoiceItem> createdExternalCharges = killBillClient.createExternalCharges(ImmutableList.of(externalCharge), clock.getUTCToday(), true, true, requestOptions);
- assertEquals(createdExternalCharges.size(), 1);
- final Invoice invoiceWithItems = killBillClient.getInvoice(createdExternalCharges.get(0).getInvoiceId(), true,false, requestOptions);
- assertEquals(invoiceWithItems.getItems().size(), originalNumberOfItemsForInvoice + 1);
- assertNull(invoiceWithItems.getItems().get(originalNumberOfItemsForInvoice).getBundleId());
-
- // Verify the new invoice balance
- final Invoice adjustedInvoice = killBillClient.getInvoice(invoiceId, requestOptions);
- assertEquals(adjustedInvoice.getBalance().compareTo(BigDecimal.ZERO), 0);
- }
-
- @Test(groups = "slow", description = "Can create an external charge for a bundle on an existing invoice")
- public void testExternalChargeForBundleOnExistingInvoice() throws Exception {
- final Account accountJson = createAccountNoPMBundleAndSubscriptionAndWaitForFirstInvoice();
-
- // Get the invoices
- final List<Invoice> invoices = killBillClient.getInvoicesForAccount(accountJson.getAccountId(), true, false, requestOptions);
- // 2 invoices but look for the non zero dollar one
- assertEquals(invoices.size(), 2);
- final UUID invoiceId = invoices.get(1).getInvoiceId();
- final BigDecimal originalInvoiceAmount = invoices.get(1).getAmount();
- final int originalNumberOfItemsForInvoice = invoices.get(1).getItems().size();
-
- // Post an external charge
- final BigDecimal chargeAmount = BigDecimal.TEN;
- final UUID bundleId = UUID.randomUUID();
- final InvoiceItem externalCharge = new InvoiceItem();
- externalCharge.setAccountId(accountJson.getAccountId());
- externalCharge.setAmount(chargeAmount);
- externalCharge.setCurrency(accountJson.getCurrency());
- externalCharge.setInvoiceId(invoiceId);
- externalCharge.setBundleId(bundleId);
- final List<InvoiceItem> createdExternalCharges = killBillClient.createExternalCharges(ImmutableList.<InvoiceItem>of(externalCharge), clock.getUTCToday(), false, true, requestOptions);
- final Invoice invoiceWithItems = killBillClient.getInvoice(createdExternalCharges.get(0).getInvoiceId(), true,false, requestOptions);
- assertEquals(invoiceWithItems.getItems().size(), originalNumberOfItemsForInvoice + 1);
- assertEquals(invoiceWithItems.getItems().get(originalNumberOfItemsForInvoice).getBundleId(), bundleId);
-
- // Verify the new invoice balance
- final Invoice adjustedInvoice = killBillClient.getInvoice(invoiceId, requestOptions);
- final BigDecimal adjustedInvoiceBalance = originalInvoiceAmount.add(chargeAmount.setScale(2, RoundingMode.HALF_UP));
- assertEquals(adjustedInvoice.getBalance().compareTo(adjustedInvoiceBalance), 0);
- }
-
@Test(groups = "slow", description = "Can paginate and search through all invoices")
public void testInvoicesPagination() throws Exception {
createAccountWithPMBundleAndSubscriptionAndWaitForFirstInvoice();