killbill-memoizeit
Changes
pom.xml 2(+1 -1)
Details
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
index 1b12c05..e6b8817 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
@@ -34,7 +34,6 @@ import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import javax.annotation.Nullable;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -398,18 +397,16 @@ public class AccountResource extends JaxRsResourceBase {
@DELETE
@Path("/{accountId:" + UUID_PATTERN + "}")
@Produces(APPLICATION_JSON)
- @ApiOperation(value = "Delete account", hidden = true)
+ @ApiOperation(value = "Close account")
@ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied")})
- public Response closeAccount(@PathParam("accountId") final String accountIdStr,
- @QueryParam(QUERY_CANCEL_ALL_SUBSCRPTIONS) @DefaultValue("false") final Boolean cancelAllSubscriptions,
+ public Response closeAccount(@PathParam(QUERY_ACCOUNT_ID) final String accountIdStr,
+ @QueryParam(QUERY_CANCEL_ALL_SUBSCRIPTIONS) @DefaultValue("false") final Boolean cancelAllSubscriptions,
@QueryParam(QUERY_WRITE_OFF_UNPAID_INVOICES) @DefaultValue("false") final Boolean writeOffUnpaidInvoices,
@QueryParam(QUERY_ITEM_ADJUST_UNPAID_INVOICES) @DefaultValue("false") final Boolean itemAdjustUnpaidInvoices,
@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) throws SubscriptionApiException, AccountApiException, EntitlementApiException, InvoiceApiException, TagApiException {
-
-
final CallContext callContext = context.createContext(createdBy, reason, comment, request);
final UUID accountId = UUID.fromString(accountIdStr);
@@ -433,7 +430,7 @@ public class AccountResource extends JaxRsResourceBase {
}
}
- final Collection<Invoice> unpaidInvoices = writeOffUnpaidInvoices || itemAdjustUnpaidInvoices ? invoiceApi.getUnpaidInvoicesByAccountId(accountId, null, callContext) : ImmutableList.<Invoice>of();
+ final Collection<Invoice> unpaidInvoices = writeOffUnpaidInvoices || itemAdjustUnpaidInvoices ? invoiceApi.getUnpaidInvoicesByAccountId(accountId, null, callContext) : ImmutableList.<Invoice>of();
if (writeOffUnpaidInvoices) {
for (final Invoice cur : unpaidInvoices) {
invoiceApi.tagInvoiceAsWrittenOff(cur.getId(), callContext);
@@ -441,21 +438,21 @@ public class AccountResource extends JaxRsResourceBase {
} else if (itemAdjustUnpaidInvoices) {
final List<InvoiceItemType> ADJUSTABLE_TYPES = ImmutableList.<InvoiceItemType>of(InvoiceItemType.EXTERNAL_CHARGE,
- InvoiceItemType.FIXED,
- InvoiceItemType.RECURRING,
- InvoiceItemType.TAX,
- InvoiceItemType.USAGE,
- InvoiceItemType.PARENT_SUMMARY);
+ InvoiceItemType.FIXED,
+ InvoiceItemType.RECURRING,
+ InvoiceItemType.TAX,
+ InvoiceItemType.USAGE,
+ InvoiceItemType.PARENT_SUMMARY);
final String description = comment != null ? comment : "Close Account";
for (final Invoice invoice : unpaidInvoices) {
- for (InvoiceItem item : invoice.getInvoiceItems()) {
+ for (final InvoiceItem item : invoice.getInvoiceItems()) {
if (ADJUSTABLE_TYPES.contains(item.getInvoiceItemType())) {
invoiceApi.insertInvoiceItemAdjustment(accountId, invoice.getId(), item.getId(), clock.getUTCToday(), description, callContext);
}
}
}
}
-
+
final BlockingStateJson blockingState = new BlockingStateJson(accountIdStr, "CLOSE_ACCOUNT", "account-service", true, false, false, null, BlockingStateType.ACCOUNT, null);
addBlockingState(blockingState, accountIdStr, BlockingStateType.ACCOUNT, null, ImmutableList.<String>of(), createdBy, reason, comment, request);
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 0f9bb6f..b7d6a38 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
@@ -96,7 +96,7 @@ public interface JaxrsResource {
public static final String QUERY_ACCOUNT_ID = "accountId";
- public static final String QUERY_CANCEL_ALL_SUBSCRPTIONS = "cancelAllSubscriptions";
+ public static final String QUERY_CANCEL_ALL_SUBSCRIPTIONS = "cancelAllSubscriptions";
public static final String QUERY_WRITE_OFF_UNPAID_INVOICES = "writeOffUnpaidInvoices";
public static final String QUERY_ITEM_ADJUST_UNPAID_INVOICES = "itemAdjustUnpaidInvoices";
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index e614230..4334c33 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>killbill-oss-parent</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.140.27</version>
+ <version>0.140.28</version>
</parent>
<artifactId>killbill</artifactId>
<version>0.18.8-SNAPSHOT</version>
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestEntitlement.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestEntitlement.java
index 9b64984..1378fd1 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestEntitlement.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestEntitlement.java
@@ -1,7 +1,7 @@
/*
* Copyright 2010-2013 Ning, Inc.
- * Copyright 2014-2016 Groupon, Inc
- * Copyright 2014-2016 The Billing Project, LLC
+ * Copyright 2014-2017 Groupon, Inc
+ * Copyright 2014-2017 The Billing Project, LLC
*
* The Billing Project licenses this file to you under the Apache License, version 2.0
* (the "License"); you may not use this file except in compliance with the
@@ -41,15 +41,14 @@ import org.killbill.billing.client.model.Invoice;
import org.killbill.billing.client.model.PhasePriceOverride;
import org.killbill.billing.client.model.Subscription;
import org.killbill.billing.client.model.Tags;
-import org.killbill.billing.entitlement.EntitlementTransitionType;
import org.killbill.billing.entitlement.api.Entitlement.EntitlementActionPolicy;
+import org.killbill.billing.entitlement.api.Entitlement.EntitlementState;
import org.killbill.billing.entitlement.api.SubscriptionEventType;
import org.killbill.billing.util.api.AuditLevel;
import org.testng.Assert;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
@@ -323,11 +322,11 @@ public class TestEntitlement extends TestJaxrsBase {
}
@Test(groups = "slow", description = "Create a base entitlement and also addOns entitlements under the same bundle")
- public void testEntitlementWithAddOns() throws Exception {
+ public void testEntitlementWithAddOnsWithWRITTEN_OFF() throws Exception {
final DateTime initialDate = new DateTime(2012, 4, 25, 0, 3, 42, 0);
clock.setDeltaFromReality(initialDate.getMillis() - clock.getUTCNow().getMillis());
- final Account accountJson = createAccountWithDefaultPaymentMethod();
+ final Account accountJson = createAccount();
final Subscription base = new Subscription();
base.setAccountId(accountJson.getAccountId());
@@ -357,23 +356,43 @@ public class TestEntitlement extends TestJaxrsBase {
subscriptions.add(base);
subscriptions.add(addOn1);
subscriptions.add(addOn2);
+
final Bundle bundle = killBillClient.createSubscriptionWithAddOns(subscriptions, null, 10, requestOptions);
assertNotNull(bundle);
assertEquals(bundle.getExternalKey(), "base");
assertEquals(bundle.getSubscriptions().size(), 3);
- final List<Invoice> invoices = killBillClient.getInvoicesForAccount(accountJson.getAccountId(), true, false, false, AuditLevel.FULL, requestOptions);
+ final List<Invoice> invoices = killBillClient.getInvoicesForAccount(accountJson.getAccountId(), true, false, false, requestOptions);
assertEquals(invoices.size(), 1);
+ assertEquals(invoices.get(0).getBalance().compareTo(BigDecimal.ZERO), 1);
+ assertEquals(killBillClient.getInvoiceTags(invoices.get(0).getInvoiceId(), requestOptions).size(), 0);
+
+ final Bundles accountBundles = killBillClient.getAccountBundles(accountJson.getAccountId(), requestOptions);
+ assertEquals(accountBundles.size(), 1);
+ for (final Subscription subscription : accountBundles.get(0).getSubscriptions()) {
+ assertEquals(subscription.getState(), EntitlementState.ACTIVE);
+ }
+
+ killBillClient.closeAccount(accountJson.getAccountId(), true, true, false, requestOptions);
+
+ final Bundles accountBundlesAfterClose = killBillClient.getAccountBundles(accountJson.getAccountId(), requestOptions);
+ assertEquals(accountBundlesAfterClose.size(), 1);
+ for (final Subscription subscription : accountBundlesAfterClose.get(0).getSubscriptions()) {
+ assertEquals(subscription.getState(), EntitlementState.CANCELLED);
+ }
+
+ final List<Invoice> invoicesAfterClose = killBillClient.getInvoicesForAccount(accountJson.getAccountId(), true, false, false, requestOptions);
+ assertEquals(invoicesAfterClose.size(), 1);
+ assertEquals(invoicesAfterClose.get(0).getBalance().compareTo(BigDecimal.ZERO), 0);
+ assertEquals(killBillClient.getInvoiceTags(invoicesAfterClose.get(0).getInvoiceId(), requestOptions).size(), 1);
}
-
-
@Test(groups = "slow", description = "Create a bulk of base entitlement and addOns under the same transaction")
- public void testCreateEntitlementsWithAddOns() throws Exception {
+ public void testCreateEntitlementsWithAddOnsThenCloseAccountWithItemAdjustment() throws Exception {
final DateTime initialDate = new DateTime(2012, 4, 25, 0, 3, 42, 0);
clock.setDeltaFromReality(initialDate.getMillis() - clock.getUTCNow().getMillis());
- final Account accountJson = createAccountWithDefaultPaymentMethod();
+ final Account accountJson = createAccount();
final Subscription base = new Subscription();
base.setAccountId(accountJson.getAccountId());
@@ -406,13 +425,37 @@ public class TestEntitlement extends TestJaxrsBase {
bulkList.add(new BulkBaseSubscriptionAndAddOns(subscriptions));
final Bundles bundles = killBillClient.createSubscriptionsWithAddOns(bulkList, null, 10, requestOptions);
-
assertNotNull(bundles);
assertEquals(bundles.size(), 2);
assertFalse(bundles.get(0).getExternalKey().equals(bundles.get(1).getExternalKey()));
final List<Invoice> invoices = killBillClient.getInvoicesForAccount(accountJson.getAccountId(), true, false, false, requestOptions);
assertEquals(invoices.size(), 1);
+ assertEquals(invoices.get(0).getBalance().compareTo(BigDecimal.ZERO), 1);
+ assertEquals(killBillClient.getInvoiceTags(invoices.get(0).getInvoiceId(), requestOptions).size(), 0);
+
+ final Bundles accountBundles = killBillClient.getAccountBundles(accountJson.getAccountId(), requestOptions);
+ assertEquals(accountBundles.size(), 2);
+ for (final Bundle bundle : accountBundles) {
+ for (final Subscription subscription : bundle.getSubscriptions()) {
+ assertEquals(subscription.getState(), EntitlementState.ACTIVE);
+ }
+ }
+
+ killBillClient.closeAccount(accountJson.getAccountId(), true, false, true, requestOptions);
+
+ final Bundles accountBundlesAfterClose = killBillClient.getAccountBundles(accountJson.getAccountId(), requestOptions);
+ assertEquals(accountBundlesAfterClose.size(), 2);
+ for (final Bundle bundle : accountBundlesAfterClose) {
+ for (final Subscription subscription : bundle.getSubscriptions()) {
+ assertEquals(subscription.getState(), EntitlementState.CANCELLED);
+ }
+ }
+
+ final List<Invoice> invoicesAfterClose = killBillClient.getInvoicesForAccount(accountJson.getAccountId(), true, false, false, requestOptions);
+ assertEquals(invoicesAfterClose.size(), 1);
+ assertEquals(invoicesAfterClose.get(0).getBalance().compareTo(BigDecimal.ZERO), 0);
+ assertEquals(killBillClient.getInvoiceTags(invoicesAfterClose.get(0).getInvoiceId(), requestOptions).size(), 0);
}
@Test(groups = "slow", description = "Create a bulk of base entitlements and addOns under the same transaction",
@@ -497,7 +540,6 @@ public class TestEntitlement extends TestJaxrsBase {
assertEquals(invoices.size(), 2);
}
-
@Test(groups = "slow", description = "Can create an entitlement in the future")
public void testCreateEntitlementInTheFuture() throws Exception {
final DateTime initialDate = new DateTime(2012, 4, 25, 0, 3, 42, 0);
@@ -594,8 +636,6 @@ public class TestEntitlement extends TestJaxrsBase {
Assert.assertEquals(result2.getBillCycleDayLocal(), new Integer(9));
}
-
-
@Test(groups = "slow", description = "Can create subscription and change plan using planName")
public void testEntitlementUsingPlanName() throws Exception {
final DateTime initialDate = new DateTime(2012, 4, 25, 0, 3, 42, 0);