Details
diff --git a/overdue/src/main/java/org/killbill/billing/overdue/calculator/BillingStateCalculator.java b/overdue/src/main/java/org/killbill/billing/overdue/calculator/BillingStateCalculator.java
index 7d594fc..d1bec8d 100644
--- a/overdue/src/main/java/org/killbill/billing/overdue/calculator/BillingStateCalculator.java
+++ b/overdue/src/main/java/org/killbill/billing/overdue/calculator/BillingStateCalculator.java
@@ -19,6 +19,7 @@ package org.killbill.billing.overdue.calculator;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Comparator;
+import java.util.List;
import java.util.NoSuchElementException;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -26,6 +27,7 @@ import java.util.UUID;
import org.joda.time.DateTimeZone;
import org.joda.time.LocalDate;
+import org.killbill.billing.ObjectType;
import org.killbill.billing.account.api.ImmutableAccountData;
import org.killbill.billing.callcontext.InternalTenantContext;
import org.killbill.billing.invoice.api.Invoice;
@@ -33,6 +35,7 @@ import org.killbill.billing.invoice.api.InvoiceInternalApi;
import org.killbill.billing.overdue.config.api.BillingState;
import org.killbill.billing.overdue.config.api.OverdueException;
import org.killbill.billing.payment.api.PaymentResponse;
+import org.killbill.billing.tag.TagInternalApi;
import org.killbill.billing.util.tag.Tag;
import org.killbill.clock.Clock;
@@ -41,6 +44,7 @@ import com.google.inject.Inject;
public class BillingStateCalculator {
private final InvoiceInternalApi invoiceApi;
+ private final TagInternalApi tagApi;
private final Clock clock;
protected class InvoiceDateComparator implements Comparator<Invoice> {
@@ -57,9 +61,10 @@ public class BillingStateCalculator {
}
@Inject
- public BillingStateCalculator(final InvoiceInternalApi invoiceApi, final Clock clock) {
+ public BillingStateCalculator(final InvoiceInternalApi invoiceApi, final Clock clock, final TagInternalApi tagApi) {
this.invoiceApi = invoiceApi;
this.clock = clock;
+ this.tagApi = tagApi;
}
public BillingState calculateBillingState(final ImmutableAccountData account, final InternalTenantContext context) throws OverdueException {
@@ -75,7 +80,8 @@ public class BillingStateCalculator {
idOfEarliestUnpaidInvoice = invoice.getId();
}
final PaymentResponse responseForLastFailedPayment = PaymentResponse.INSUFFICIENT_FUNDS; //TODO MDW
- final Tag[] tags = new Tag[]{}; //TODO MDW
+ final List<Tag> accountTags = tagApi.getTags(account.getId(), ObjectType.ACCOUNT, context);
+ final Tag[] tags = accountTags.toArray(new Tag[accountTags.size()]);
return new BillingState(account.getId(), numberOfUnpaidInvoices, unpaidInvoiceBalance, dateOfEarliestUnpaidInvoice, account.getTimeZone(), idOfEarliestUnpaidInvoice, responseForLastFailedPayment, tags);
}
diff --git a/overdue/src/test/java/org/killbill/billing/overdue/calculator/TestBillingStateCalculator.java b/overdue/src/test/java/org/killbill/billing/overdue/calculator/TestBillingStateCalculator.java
index d8f7b9d..a5db764 100644
--- a/overdue/src/test/java/org/killbill/billing/overdue/calculator/TestBillingStateCalculator.java
+++ b/overdue/src/test/java/org/killbill/billing/overdue/calculator/TestBillingStateCalculator.java
@@ -60,7 +60,7 @@ public class TestBillingStateCalculator extends OverdueTestSuiteNoDB {
Mockito.when(invoiceApi.getUnpaidInvoicesByAccountId(Mockito.<UUID>any(), Mockito.<LocalDate>any(), Mockito.<InternalTenantContext>any())).thenReturn(invoices);
- return new BillingStateCalculator(invoiceApi, clock) {
+ return new BillingStateCalculator(invoiceApi, clock, tagInternalApi) {
@Override
public BillingState calculateBillingState(final ImmutableAccountData overdueable,
final InternalTenantContext context) {
diff --git a/overdue/src/test/java/org/killbill/billing/overdue/glue/TestOverdueModule.java b/overdue/src/test/java/org/killbill/billing/overdue/glue/TestOverdueModule.java
index 39ead21..8d603af 100644
--- a/overdue/src/test/java/org/killbill/billing/overdue/glue/TestOverdueModule.java
+++ b/overdue/src/test/java/org/killbill/billing/overdue/glue/TestOverdueModule.java
@@ -21,7 +21,6 @@ package org.killbill.billing.overdue.glue;
import java.util.List;
import java.util.UUID;
-import org.joda.time.DateTime;
import org.killbill.billing.callcontext.InternalCallContext;
import org.killbill.billing.callcontext.InternalTenantContext;
import org.killbill.billing.entitlement.api.BlockingState;
@@ -49,8 +48,6 @@ import org.killbill.billing.util.glue.CallContextModule;
import org.killbill.billing.util.glue.ConfigModule;
import org.killbill.billing.util.glue.CustomFieldModule;
import org.killbill.billing.util.glue.MemoryGlobalLockerModule;
-import org.killbill.clock.Clock;
-import org.killbill.clock.ClockMock;
import com.google.inject.name.Names;
@@ -73,7 +70,7 @@ public class TestOverdueModule extends DefaultOverdueModule {
install(new MockAccountModule(configSource));
install(new MockEntitlementModule(configSource, new ApplicatorBlockingApi()));
install(new MockInvoiceModule(configSource));
- install(new MockTagModule(configSource));
+ install(new MockTagModule(configSource, true));
install(new TemplateModule(configSource));
install(new MockTenantModule(configSource));
install(new MemoryGlobalLockerModule(configSource));
diff --git a/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteNoDB.java b/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteNoDB.java
index 0e1f5e5..d7d6462 100644
--- a/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteNoDB.java
+++ b/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteNoDB.java
@@ -37,6 +37,7 @@ import org.killbill.billing.overdue.notification.OverdueNotifier;
import org.killbill.billing.overdue.notification.OverduePoster;
import org.killbill.billing.overdue.service.DefaultOverdueService;
import org.killbill.billing.overdue.wrapper.OverdueWrapperFactory;
+import org.killbill.billing.tag.TagInternalApi;
import org.killbill.billing.tenant.api.TenantInternalApi;
import org.killbill.billing.util.cache.CacheControllerDispatcher;
import org.killbill.billing.util.callcontext.InternalCallContextFactory;
@@ -102,6 +103,8 @@ public abstract class OverdueTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
protected OverdueCacheInvalidationCallback cacheInvalidationCallback;
@Inject
protected TenantInternalApi tenantInternalApi;
+ @Inject
+ protected TagInternalApi tagInternalApi;
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
diff --git a/overdue/src/test/java/org/killbill/billing/overdue/TestOverdueHelper.java b/overdue/src/test/java/org/killbill/billing/overdue/TestOverdueHelper.java
index 3f09ee6..ac380e7 100644
--- a/overdue/src/test/java/org/killbill/billing/overdue/TestOverdueHelper.java
+++ b/overdue/src/test/java/org/killbill/billing/overdue/TestOverdueHelper.java
@@ -25,22 +25,24 @@ import java.util.UUID;
import org.joda.time.DateTimeZone;
import org.joda.time.LocalDate;
+import org.killbill.billing.ObjectType;
+import org.killbill.billing.account.api.AccountApiException;
+import org.killbill.billing.account.api.AccountInternalApi;
import org.killbill.billing.account.api.ImmutableAccountData;
+import org.killbill.billing.callcontext.InternalTenantContext;
+import org.killbill.billing.entitlement.api.BlockingState;
+import org.killbill.billing.invoice.api.Invoice;
+import org.killbill.billing.invoice.api.InvoiceInternalApi;
+import org.killbill.billing.invoice.api.InvoiceItem;
+import org.killbill.billing.junction.BlockingInternalApi;
import org.killbill.billing.overdue.api.OverdueState;
import org.killbill.billing.overdue.glue.TestOverdueModule.ApplicatorBlockingApi;
+import org.killbill.billing.subscription.api.user.SubscriptionBaseApiException;
+import org.killbill.billing.tag.TagInternalApi;
+import org.killbill.billing.util.tag.Tag;
import org.mockito.Mockito;
import org.testng.Assert;
-import org.killbill.billing.account.api.AccountApiException;
-import org.killbill.billing.invoice.api.Invoice;
-import org.killbill.billing.invoice.api.InvoiceItem;
-import org.killbill.billing.entitlement.api.BlockingState;
-import org.killbill.billing.subscription.api.user.SubscriptionBaseApiException;
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.account.api.AccountInternalApi;
-import org.killbill.billing.invoice.api.InvoiceInternalApi;
-import org.killbill.billing.junction.BlockingInternalApi;
-
import com.google.inject.Inject;
public class TestOverdueHelper {
@@ -79,6 +81,7 @@ public class TestOverdueHelper {
" <timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>" +
" <unit>DAYS</unit><number>30</number>" +
" </timeSinceEarliestUnpaidInvoiceEqualsOrExceeds>" +
+ " <controlTag>TEST</controlTag>" +
" </condition>" +
" <externalMessage>Reached OD1</externalMessage>" +
" <blockChanges>true</blockChanges>" +
@@ -93,14 +96,17 @@ public class TestOverdueHelper {
private final AccountInternalApi accountInternalApi;
private final InvoiceInternalApi invoiceInternalApi;
private final BlockingInternalApi blockingInternalApi;
+ private final TagInternalApi tagInternalApi;
@Inject
public TestOverdueHelper(final AccountInternalApi accountInternalApi,
final InvoiceInternalApi invoiceInternalApi,
- final BlockingInternalApi blockingInternalApi) {
+ final BlockingInternalApi blockingInternalApi,
+ final TagInternalApi tagInternalApi) {
this.accountInternalApi = accountInternalApi;
this.invoiceInternalApi = invoiceInternalApi;
this.blockingInternalApi = blockingInternalApi;
+ this.tagInternalApi = tagInternalApi;
}
public void checkStateApplied(final OverdueState state) {
@@ -138,6 +144,15 @@ public class TestOverdueHelper {
invoices.add(invoice);
Mockito.when(invoiceInternalApi.getUnpaidInvoicesByAccountId(Mockito.<UUID>any(), Mockito.<LocalDate>any(), Mockito.<InternalTenantContext>any())).thenReturn(invoices);
+ final Tag tag = Mockito.mock(Tag.class);
+ Mockito.when(tag.getObjectId()).thenReturn(accountId);
+ Mockito.when(tag.getObjectType()).thenReturn(ObjectType.ACCOUNT);
+ Mockito.when(tag.getTagDefinitionId()).thenReturn(new UUID(0, 6));
+ final List<Tag> tags = new ArrayList<Tag>();
+ tags.add(tag);
+ Mockito.when(tagInternalApi.getTags(Mockito.eq(account.getId()), Mockito.eq(ObjectType.ACCOUNT), Mockito.<InternalTenantContext>any()))
+ .thenReturn(tags);
+
return account;
}
diff --git a/util/src/test/java/org/killbill/billing/mock/glue/MockTagModule.java b/util/src/test/java/org/killbill/billing/mock/glue/MockTagModule.java
index 6f77943..7c3e1a5 100644
--- a/util/src/test/java/org/killbill/billing/mock/glue/MockTagModule.java
+++ b/util/src/test/java/org/killbill/billing/mock/glue/MockTagModule.java
@@ -19,16 +19,27 @@
package org.killbill.billing.mock.glue;
import org.killbill.billing.platform.api.KillbillConfigSource;
+import org.killbill.billing.tag.TagInternalApi;
import org.killbill.billing.util.glue.TagStoreModule;
+import org.killbill.billing.util.tag.DefaultTagInternalApi;
import org.killbill.billing.util.tag.dao.MockTagDao;
import org.killbill.billing.util.tag.dao.MockTagDefinitionDao;
import org.killbill.billing.util.tag.dao.TagDao;
import org.killbill.billing.util.tag.dao.TagDefinitionDao;
+import org.mockito.Mockito;
public class MockTagModule extends TagStoreModule {
+ private final boolean mockInternalApi;
+
public MockTagModule(final KillbillConfigSource configSource) {
super(configSource);
+ this.mockInternalApi = false;
+ }
+
+ public MockTagModule(final KillbillConfigSource configSource, final boolean mockInternalApi) {
+ super(configSource);
+ this.mockInternalApi = mockInternalApi;
}
@Override
@@ -36,4 +47,13 @@ public class MockTagModule extends TagStoreModule {
bind(TagDefinitionDao.class).to(MockTagDefinitionDao.class).asEagerSingleton();
bind(TagDao.class).to(MockTagDao.class).asEagerSingleton();
}
+
+ @Override
+ public void installInternalApi() {
+ if (mockInternalApi) {
+ bind(TagInternalApi.class).toInstance(Mockito.mock(TagInternalApi.class));
+ } else {
+ bind(TagInternalApi.class).to(DefaultTagInternalApi.class).asEagerSingleton();
+ }
+ }
}