killbill-aplcache

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();