killbill-memoizeit

#457 : Removing accountId from updateStatus, changing to commitInvoice

1/20/2016 5:54:40 PM

Details

diff --git a/account/src/main/java/org/killbill/billing/account/api/DefaultAccount.java b/account/src/main/java/org/killbill/billing/account/api/DefaultAccount.java
index b367197..8b21c4e 100644
--- a/account/src/main/java/org/killbill/billing/account/api/DefaultAccount.java
+++ b/account/src/main/java/org/killbill/billing/account/api/DefaultAccount.java
@@ -138,7 +138,7 @@ public class DefaultAccount extends EntityBase implements Account {
         this.firstNameLength = firstNameLength;
         this.currency = currency;
         this.parentAccountId = parentAccountId;
-        this.isPaymentDelegatedToParent = isPaymentDelegatedToParent != null ? isPaymentDelegatedToParent : false;
+        this.isPaymentDelegatedToParent = isPaymentDelegatedToParent;
         this.billCycleDayLocal = billCycleDayLocal == null ? DEFAULT_BILLING_CYCLE_DAY_LOCAL : billCycleDayLocal;
         this.paymentMethodId = paymentMethodId;
         this.timeZone = timeZone;
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationInvoice.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationInvoice.java
index f9342ac..ca3a662 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationInvoice.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationInvoice.java
@@ -244,7 +244,7 @@ public class TestIntegrationInvoice extends TestIntegrationBase {
         final BigDecimal accountBalance1 = invoiceUserApi.getAccountBalance(account.getId(), callContext);
         assertTrue(accountBalance1.compareTo(new BigDecimal("249.95")) == 0);
 
-        busHandler.pushExpectedEvents(NextEvent.INVOICE_ADJUSTMENT);
+        busHandler.pushExpectedEvents();
         invoiceUserApi.insertCredit(account.getId(), new BigDecimal("300"), new LocalDate(clock.getUTCNow(), account.getTimeZone()), account.getCurrency(), callContext);
         assertListenerStatus();
 
@@ -310,23 +310,25 @@ public class TestIntegrationInvoice extends TestIntegrationBase {
         final List<InvoiceItem> invoiceItemList = new ArrayList<InvoiceItem>();
         ExternalChargeInvoiceItem item = new ExternalChargeInvoiceItem(null, account.getId(), subscription.getBundleId(), "", date, BigDecimal.TEN, account.getCurrency());
         invoiceItemList.add(item);
+        busHandler.pushExpectedEvents();
         final List<InvoiceItem> draftInvoiceItems = invoiceUserApi.insertExternalCharges(account.getId(), date, invoiceItemList, callContext);
+        assertListenerStatus();
 
         // add expected invoice
-        final List<ExpectedInvoiceItemCheck> expectedDrafInvoices = new ArrayList<ExpectedInvoiceItemCheck>();
-        expectedDrafInvoices.add(new ExpectedInvoiceItemCheck(InvoiceItemType.EXTERNAL_CHARGE, BigDecimal.TEN));
+        final List<ExpectedInvoiceItemCheck> expectedDraftInvoices = new ArrayList<ExpectedInvoiceItemCheck>();
+        expectedDraftInvoices.add(new ExpectedInvoiceItemCheck(InvoiceItemType.EXTERNAL_CHARGE, BigDecimal.TEN));
 
-        // Move through time and verify we get the same invoice
-        busHandler.pushExpectedEvents(NextEvent.INVOICE, NextEvent.PAYMENT, NextEvent.INVOICE_ADJUSTMENT);
+        // Move through time and verify invoices
+        busHandler.pushExpectedEvents(NextEvent.INVOICE, NextEvent.PAYMENT);
         clock.addMonths(1);
         assertListenerStatus();
         invoices = invoiceUserApi.getInvoicesByAccount(account.getId(), callContext);
 
-        invoiceChecker.checkInvoice(invoices.get(2).getId(), callContext, expectedDrafInvoices);
+        invoiceChecker.checkInvoice(invoices.get(2).getId(), callContext, expectedDraftInvoices);
         invoiceChecker.checkInvoice(invoices.get(3).getId(), callContext, expectedInvoices);
 
         busHandler.pushExpectedEvents(NextEvent.INVOICE, NextEvent.PAYMENT);
-        invoiceUserApi.invoiceStatusTransition(account.getId(), draftInvoiceItems.get(0).getInvoiceId(), callContext);
+        invoiceUserApi.commitInvoice(draftInvoiceItems.get(0).getInvoiceId(), callContext);
         assertListenerStatus();
 
         final List<Payment> accountPayments = paymentApi.getAccountPayments(account.getId(), false, null, callContext);
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestInvoicePayment.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestInvoicePayment.java
index 13a3a43..44004bb 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestInvoicePayment.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestInvoicePayment.java
@@ -56,7 +56,7 @@ public class TestInvoicePayment extends TestIntegrationBase {
 
         clock.setDay(new LocalDate(2012, 4, 1));
 
-        busHandler.pushExpectedEvents(NextEvent.INVOICE_ADJUSTMENT);
+        busHandler.pushExpectedEvents();
         final InvoiceItem externalCharge = new ExternalChargeInvoiceItem(null, account.getId(), null, "Initial external charge", clock.getUTCToday(), BigDecimal.TEN, Currency.USD);
         final InvoiceItem item1 = invoiceUserApi.insertExternalCharges(account.getId(), clock.getUTCToday(), ImmutableList.<InvoiceItem>of(externalCharge), callContext).get(0);
         assertListenerStatus();
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java b/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java
index b15fdab..99562a6 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java
@@ -495,16 +495,18 @@ public class DefaultInvoiceUserApi implements InvoiceUserApi {
     }
 
     @Override
-    public void invoiceStatusTransition(final UUID accountId, final UUID invoiceId, final CallContext context) throws InvoiceApiException {
-        final InternalCallContext internalCallContext = internalCallContextFactory.createInternalCallContext(accountId, context);
-        dao.changeInvoiceStatus(accountId, invoiceId, InvoiceStatus.COMMITTED, internalCallContext);
+    public void commitInvoice(final UUID invoiceId, final CallContext context) throws InvoiceApiException {
+        final InternalCallContext internalCallContext = internalCallContextFactory.createInternalCallContext(context);
+        dao.changeInvoiceStatus(invoiceId, InvoiceStatus.COMMITTED, internalCallContext);
         final Invoice invoice = this.getInvoice(invoiceId, context);
 
+        final Long accountRecordId = internalCallContextFactory.getRecordIdFromObject(invoice.getAccountId(), ObjectType.ACCOUNT, context);
         // notify invoice creation event
         final DefaultInvoiceCreationEvent defaultInvoiceCreationEvent = new DefaultInvoiceCreationEvent(invoice.getId(), invoice.getAccountId(),
                                                                                                         invoice.getBalance(), invoice.getCurrency(),
-                                                                                                        internalCallContext.getAccountRecordId(), internalCallContext.getTenantRecordId(), context.getUserToken());
-        postEvent(defaultInvoiceCreationEvent, accountId, internalCallContext);
+                                                                                                        accountRecordId, internalCallContext.getTenantRecordId(),
+                                                                                                        context.getUserToken());
+        postEvent(defaultInvoiceCreationEvent, invoice.getAccountId(), internalCallContext);
     }
 
     private void postEvent(final BusInternalEvent event, final UUID accountId, final InternalCallContext context) {
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
index 5ffb146..efba88a 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
@@ -295,9 +295,11 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
                     if (madeChanges) {
                         cbaDao.addCBAComplexityFromTransaction(invoiceModelDao.getId(), entitySqlDaoWrapperFactory, context);
 
-                        // Notify the bus since the balance of the invoice changed
-                        // TODO should we post an InvoiceCreationInternalEvent event instead? Note! This will trigger a payment (see InvoiceHandler)
-                        notifyBusOfInvoiceAdjustment(entitySqlDaoWrapperFactory, invoiceModelDao.getId(), invoiceModelDao.getAccountId(), context.getUserToken(), context);
+                        if (InvoiceStatus.COMMITTED.equals(invoiceModelDao.getStatus())) {
+                            // Notify the bus since the balance of the invoice changed (only if the invoice is COMMITTED)
+                            // TODO should we post an InvoiceCreationInternalEvent event instead? Note! This will trigger a payment (see InvoiceHandler)
+                            notifyBusOfInvoiceAdjustment(entitySqlDaoWrapperFactory, invoiceModelDao.getId(), invoiceModelDao.getAccountId(), context.getUserToken(), context);
+                        }
                     }
                 }
 
@@ -856,7 +858,7 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
     }
 
     @Override
-    public void changeInvoiceStatus(final UUID accountId, final UUID invoiceId, final InvoiceStatus newStatus,
+    public void changeInvoiceStatus(final UUID invoiceId, final InvoiceStatus newStatus,
                                     final InternalCallContext context) throws InvoiceApiException {
         transactionalSqlDao.execute(InvoiceApiException.class, new EntitySqlDaoTransactionWrapper<Void>() {
             @Override
@@ -865,7 +867,8 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
 
                 // Retrieve the invoice and make sure it belongs to the right account
                 final InvoiceModelDao invoice = transactional.getById(invoiceId.toString(), context);
-                if (invoice == null || !invoice.getAccountId().equals(accountId)) {
+
+                if (invoice == null ) {
                     throw new InvoiceApiException(ErrorCode.INVOICE_NOT_FOUND, invoiceId);
                 }
 
@@ -873,12 +876,7 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
                     throw new InvoiceApiException(ErrorCode.INVOICE_INVALID_STATUS, newStatus, invoiceId, invoice.getStatus());
                 }
 
-                transactional.updateStatus(invoiceId.toString(), accountId.toString(), newStatus.toString(), context);
-
-                if (InvoiceStatus.COMMITTED.equals(newStatus)) {
-                    // now notify on the bus
-                    //notifyOfFutureBillingEvents(entitySqlDaoWrapperFactory, invoice.getAccountId(), callbackDateTimePerSubscriptions, context);
-                }
+                transactional.updateStatus(invoiceId.toString(), newStatus.toString(), context);
 
                 return null;
             }
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceDao.java b/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceDao.java
index 1c18499..7798545 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceDao.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceDao.java
@@ -141,13 +141,12 @@ public interface InvoiceDao extends EntityDao<InvoiceModelDao, Invoice, InvoiceA
     public void consumeExstingCBAOnAccountWithUnpaidInvoices(final UUID accountId, final InternalCallContext context);
 
     /**
-     * Update invoice state
+     * Update invoice status
      *
-     * @param accountId the account id
      * @param invoiceId the invoice id
      * @param newState the new invoice state
      * @param context the tenant context
      * @throws InvoiceApiException
      */
-    void changeInvoiceStatus(UUID accountId, UUID invoiceId, InvoiceStatus newState, InternalCallContext context) throws InvoiceApiException;
+    void changeInvoiceStatus(UUID invoiceId, InvoiceStatus newState, InternalCallContext context) throws InvoiceApiException;
 }
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceSqlDao.java b/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceSqlDao.java
index 15d7354..ffecc24 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceSqlDao.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceSqlDao.java
@@ -45,7 +45,6 @@ public interface InvoiceSqlDao extends EntitySqlDao<InvoiceModelDao, Invoice> {
     @SqlUpdate
     @Audited(ChangeType.UPDATE)
     public void updateStatus(@Bind("id") String invoiceId,
-                             @Bind("accountId") String accountId,
                              @Bind("status") String status,
                              @BindBean final InternalCallContext context);
 }
diff --git a/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceSqlDao.sql.stg b/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceSqlDao.sql.stg
index 0cd6e79..5fe6558 100644
--- a/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceSqlDao.sql.stg
+++ b/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceSqlDao.sql.stg
@@ -57,6 +57,5 @@ updateStatus() ::= <<
     UPDATE <tableName()>
     SET status = :status
     WHERE id = :id
-     AND account_id = :accountId
     <AND_CHECK_TENANT()>;
 >>
\ No newline at end of file
diff --git a/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql b/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql
index 39e567e..b81af02 100644
--- a/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql
+++ b/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql
@@ -40,7 +40,7 @@ CREATE TABLE invoices (
     invoice_date date NOT NULL,
     target_date date NOT NULL,
     currency varchar(3) NOT NULL,
-    status varchar(15) NOT NULL,
+    status varchar(15) NOT NULL DEFAULT 'COMMITTED',
     migrated bool NOT NULL,
     created_by varchar(50) NOT NULL,
     created_date datetime NOT NULL,
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 4161dd0..8465a40 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
@@ -388,7 +388,7 @@ public class TestDefaultInvoiceUserApi extends InvoiceTestSuiteWithEmbeddedDB {
         Assert.assertEquals(creditInvoiceItem.getInvoiceId(), creditInvoice.getId());
 
         // move invoice from DRAFT to COMMITTED
-        invoiceUserApi.invoiceStatusTransition(this.accountId, creditInvoice.getId(), callContext);
+        invoiceUserApi.commitInvoice(creditInvoice.getId(), callContext);
         creditInvoice = invoiceUserApi.getInvoice(invoiceId, callContext);
         Assert.assertEquals(creditInvoice.getStatus(), InvoiceStatus.COMMITTED);
 
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/dao/MockInvoiceDao.java b/invoice/src/test/java/org/killbill/billing/invoice/dao/MockInvoiceDao.java
index 39b4913..d3a841c 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/dao/MockInvoiceDao.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/dao/MockInvoiceDao.java
@@ -364,7 +364,7 @@ public class MockInvoiceDao extends MockEntityDaoBase<InvoiceModelDao, Invoice, 
     }
 
     @Override
-    public void changeInvoiceStatus(final UUID accountId, final UUID invoiceId, final InvoiceStatus newState, final InternalCallContext context) throws InvoiceApiException {
+    public void changeInvoiceStatus(final UUID invoiceId, final InvoiceStatus newState, final InternalCallContext context) throws InvoiceApiException {
         throw new UnsupportedOperationException();
     }
 }
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
index 4aea81f..9b4214e 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
@@ -43,6 +43,7 @@ import javax.ws.rs.DefaultValue;
 import javax.ws.rs.GET;
 import javax.ws.rs.HeaderParam;
 import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
@@ -941,28 +942,22 @@ public class InvoiceResource extends JaxRsResourceBase {
     }
 
     @TimedResource
-    @POST
-    @Path("/{invoiceId:" + UUID_PATTERN + "}/" + ACCOUNTS + "/{accountId:" + UUID_PATTERN + "}/" + INVOICE_STATUS_TRANSITION)
+    @PUT
+    @Path("/{invoiceId:" + UUID_PATTERN + "}/" + COMMIT_INVOICE)
     @Consumes(APPLICATION_JSON)
     @Produces(APPLICATION_JSON)
     @ApiOperation(value = "Perform the invoice status transition from DRAFT to COMMITTED")
-    @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id or invoice id supplied"),
-                           @ApiResponse(code = 404, message = "Invoice not found")})
-    public Response invoiceStatusTransition(@PathParam("accountId") final String accountIdString,
-                                            @PathParam("invoiceId") final String invoiceIdString,
-                                            @HeaderParam(HDR_CREATED_BY) final String createdBy,
-                                            @HeaderParam(HDR_REASON) final String reason,
-                                            @HeaderParam(HDR_COMMENT) final String comment,
-                                            @javax.ws.rs.core.Context final HttpServletRequest request,
-                                            @javax.ws.rs.core.Context final UriInfo uriInfo) throws InvoiceApiException {
+    @ApiResponses(value = {@ApiResponse(code = 404, message = "Invoice not found")})
+    public Response commitInvoice(@PathParam("invoiceId") final String invoiceIdString,
+                                  @HeaderParam(HDR_CREATED_BY) final String createdBy,
+                                  @HeaderParam(HDR_REASON) final String reason,
+                                  @HeaderParam(HDR_COMMENT) final String comment,
+                                  @javax.ws.rs.core.Context final HttpServletRequest request,
+                                  @javax.ws.rs.core.Context final UriInfo uriInfo) throws InvoiceApiException {
 
         final CallContext callContext = context.createContext(createdBy, reason, comment, request);
-
-        final UUID accountId = UUID.fromString(accountIdString);
         final UUID invoiceId = UUID.fromString(invoiceIdString);
-
-        invoiceApi.invoiceStatusTransition(accountId, invoiceId, callContext);
-
+        invoiceApi.commitInvoice(invoiceId, callContext);
         return Response.status(Response.Status.OK).build();
     }
 
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
index 92f1ac8..8a0dc17 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
@@ -236,7 +236,7 @@ public interface JaxrsResource {
     public static final String INVOICE_MP_TEMPLATE = "manualPayTemplate";
     public static final String INVOICE_TRANSLATION = "translation";
     public static final String INVOICE_CATALOG_TRANSLATION = "catalogTranslation";
-    public static final String INVOICE_STATUS_TRANSITION = "statusTransition";
+    public static final String COMMIT_INVOICE = "commitInvoice";
 
     public static final String COMBO = "combo";
 
diff --git a/payment/src/main/java/org/killbill/billing/payment/bus/PaymentBusEventHandler.java b/payment/src/main/java/org/killbill/billing/payment/bus/PaymentBusEventHandler.java
index 1e07ea9..492951f 100644
--- a/payment/src/main/java/org/killbill/billing/payment/bus/PaymentBusEventHandler.java
+++ b/payment/src/main/java/org/killbill/billing/payment/bus/PaymentBusEventHandler.java
@@ -115,7 +115,7 @@ public class PaymentBusEventHandler {
                                                          properties, paymentControlPluginNames, callContext, internalContext);
         } catch (final AccountApiException e) {
             log.error("Failed to process invoice payment", e);
-        } catch (InvoiceApiException e) {
+        } catch (final InvoiceApiException e) {
             log.error("Failed to process invoice payment", e);
         } catch (final PaymentApiException e) {
             // Log as error unless:
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java
index e61057a..5b498cf 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java
@@ -173,7 +173,7 @@ public abstract class KillbillClient extends GuicyKillbillTestSuiteWithEmbeddedD
         final String phone = "81 53 26 56";
 
         // Note: the accountId payload is ignored on account creation
-        return new Account(accountId, name, length, externalKey, email, null, currency, null, null, null, timeZone,
+        return new Account(accountId, name, length, externalKey, email, null, currency, null, false, null, timeZone,
                            address1, address2, postalCode, company, city, state, country, locale, phone, false, false, null, null);
     }
 
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 d76a3e7..bcefd3f 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
@@ -30,7 +30,6 @@ import org.joda.time.LocalDate;
 import org.killbill.billing.catalog.api.BillingPeriod;
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.catalog.api.ProductCategory;
-import org.killbill.billing.client.KillBillClientException;
 import org.killbill.billing.client.model.Account;
 import org.killbill.billing.client.model.AuditLog;
 import org.killbill.billing.client.model.Credit;
@@ -573,57 +572,11 @@ public class TestInvoice extends TestJaxrsBase {
         Invoice invoice = killBillClient.getInvoice(creditJson.getInvoiceId());
         Assert.assertEquals(invoice.getStatus(), InvoiceStatus.DRAFT.toString());
 
-        killBillClient.invoiceStatusTransition(account.getAccountId(), invoice.getInvoiceId(), createdBy, reason, comment);
+        killBillClient.commitInvoice(invoice.getInvoiceId(), createdBy, reason, comment);
 
         invoice = killBillClient.getInvoice(creditJson.getInvoiceId());
         Assert.assertEquals(invoice.getStatus(), InvoiceStatus.COMMITTED.toString());
 
     }
 
-    @Test(groups = "slow", description = "Forcing method to fail.", expectedExceptions = KillBillClientException.class,
-            expectedExceptionsMessageRegExp = ".* type=ACCOUNT doesn't exist!")
-    public void testMoveInvoiceStatusWithInvalidIds() throws Exception {
-
-        killBillClient.invoiceStatusTransition(UUID.randomUUID(), UUID.randomUUID(), createdBy, reason, comment);
-
-    }
-
-    /*
-    @Test(groups = "slow", description = "Forcing method to fail.", expectedExceptions = KillBillClientException.class,
-            expectedExceptionsMessageRegExp = ".* type=ACCOUNT doesn't exist!")
-    public void testErrorTransition() throws Exception {
-
-        final Account account = createAccountNoPMBundleAndSubscriptionAndWaitForFirstInvoice();
-        final Invoice invoice = killBillClient.getInvoicesForAccount(account.getAccountId()).get(0);
-        Assert.assertEquals(invoice.getStatus(), InvoiceStatus.COMMITTED.toString());
-
-        killBillClient.invoiceStatusTransition(account.getAccountId(), invoice.getInvoiceId(), createdBy, reason, comment);
-
-    }
-    */
-
-    /*
-    @Test(groups = "slow", description = "Forcing method to fail.", expectedExceptions = KillBillClientException.class,
-            expectedExceptionsMessageRegExp = "No invoice could be found .*")
-    public void testMoveInvoiceStatusWithInvalidAccount() throws Exception {
-
-        final Account account = createAccountWithDefaultPaymentMethod();
-        final Account otherAccount = createAccountWithDefaultPaymentMethod();
-
-        final DateTime effectiveDate = clock.getUTCNow();
-        final BigDecimal creditAmount = BigDecimal.TEN;
-        final Credit credit = new Credit();
-        credit.setAccountId(account.getAccountId());
-        credit.setInvoiceId(null);
-        credit.setCreditAmount(creditAmount);
-        final Credit creditJson = killBillClient.createCredit(credit, createdBy, reason, comment);
-
-        Invoice invoice = killBillClient.getInvoice(creditJson.getInvoiceId());
-        Assert.assertEquals(invoice.getStatus(), InvoiceStatus.DRAFT.toString());
-
-        killBillClient.invoiceStatusTransition(otherAccount.getAccountId(), invoice.getInvoiceId(), createdBy, reason, comment);
-
-    }
-    */
-
 }