Details
diff --git a/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java b/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java
index 20d1bb9..424e1c2 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java
@@ -22,6 +22,7 @@ import java.util.UUID;
import com.ning.billing.analytics.dao.AnalyticsDao;
import com.ning.billing.analytics.model.BusinessAccount;
+import com.ning.billing.analytics.model.BusinessAccountTag;
import com.ning.billing.analytics.model.BusinessInvoice;
import com.ning.billing.analytics.model.BusinessInvoiceItem;
import com.ning.billing.analytics.model.BusinessSubscriptionTransition;
@@ -47,6 +48,10 @@ public class DefaultAnalyticsUserApi {
return analyticsDao.getInvoicesByKey(accountKey);
}
+ public List<BusinessAccountTag> getTagsForAccount(final String accountKey) {
+ return analyticsDao.getTagsForAccount(accountKey);
+ }
+
public List<BusinessInvoiceItem> getInvoiceItemsForInvoice(final UUID invoiceId) {
return analyticsDao.getInvoiceItemsForInvoice(invoiceId.toString());
}
diff --git a/analytics/src/main/java/com/ning/billing/analytics/dao/AnalyticsDao.java b/analytics/src/main/java/com/ning/billing/analytics/dao/AnalyticsDao.java
index d591f78..8dcc6c8 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/dao/AnalyticsDao.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/dao/AnalyticsDao.java
@@ -19,6 +19,7 @@ package com.ning.billing.analytics.dao;
import java.util.List;
import com.ning.billing.analytics.model.BusinessAccount;
+import com.ning.billing.analytics.model.BusinessAccountTag;
import com.ning.billing.analytics.model.BusinessInvoice;
import com.ning.billing.analytics.model.BusinessInvoiceItem;
import com.ning.billing.analytics.model.BusinessSubscriptionTransition;
@@ -30,6 +31,8 @@ public interface AnalyticsDao {
List<BusinessInvoice> getInvoicesByKey(final String accountKey);
+ List<BusinessAccountTag> getTagsForAccount(final String accountKey);
+
List<BusinessInvoiceItem> getInvoiceItemsForInvoice(final String invoiceId);
void createInvoice(final String accountKey, final BusinessInvoice invoice, final Iterable<BusinessInvoiceItem> invoiceItems);
diff --git a/analytics/src/main/java/com/ning/billing/analytics/dao/DefaultAnalyticsDao.java b/analytics/src/main/java/com/ning/billing/analytics/dao/DefaultAnalyticsDao.java
index b497e29..d5f8627 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/dao/DefaultAnalyticsDao.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/dao/DefaultAnalyticsDao.java
@@ -25,6 +25,7 @@ import org.skife.jdbi.v2.Transaction;
import org.skife.jdbi.v2.TransactionStatus;
import com.ning.billing.analytics.model.BusinessAccount;
+import com.ning.billing.analytics.model.BusinessAccountTag;
import com.ning.billing.analytics.model.BusinessInvoice;
import com.ning.billing.analytics.model.BusinessInvoiceItem;
import com.ning.billing.analytics.model.BusinessSubscriptionTransition;
@@ -34,16 +35,19 @@ public class DefaultAnalyticsDao implements AnalyticsDao {
private final BusinessSubscriptionTransitionSqlDao subscriptionTransitionSqlDao;
private final BusinessInvoiceSqlDao invoiceSqlDao;
private final BusinessInvoiceItemSqlDao invoiceItemSqlDao;
+ private final BusinessAccountTagSqlDao accountTagSqlDao;
@Inject
public DefaultAnalyticsDao(final BusinessAccountSqlDao accountSqlDao,
final BusinessSubscriptionTransitionSqlDao subscriptionTransitionSqlDao,
final BusinessInvoiceSqlDao invoiceSqlDao,
- final BusinessInvoiceItemSqlDao invoiceItemSqlDao) {
+ final BusinessInvoiceItemSqlDao invoiceItemSqlDao,
+ final BusinessAccountTagSqlDao accountTagSqlDao) {
this.accountSqlDao = accountSqlDao;
this.subscriptionTransitionSqlDao = subscriptionTransitionSqlDao;
this.invoiceSqlDao = invoiceSqlDao;
this.invoiceItemSqlDao = invoiceItemSqlDao;
+ this.accountTagSqlDao = accountTagSqlDao;
}
@Override
@@ -62,6 +66,11 @@ public class DefaultAnalyticsDao implements AnalyticsDao {
}
@Override
+ public List<BusinessAccountTag> getTagsForAccount(final String accountKey) {
+ return accountTagSqlDao.getTagsForAccount(accountKey);
+ }
+
+ @Override
public List<BusinessInvoiceItem> getInvoiceItemsForInvoice(final String invoiceId) {
return invoiceItemSqlDao.getInvoiceItemsForInvoice(invoiceId);
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestDefaultAnalyticsDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestDefaultAnalyticsDao.java
index 19eae83..7ab6a66 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestDefaultAnalyticsDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestDefaultAnalyticsDao.java
@@ -36,7 +36,6 @@ import com.ning.billing.catalog.api.Currency;
public class TestDefaultAnalyticsDao extends TestWithEmbeddedDB {
private BusinessAccountSqlDao accountSqlDao;
- private BusinessSubscriptionTransitionSqlDao subscriptionTransitionSqlDao;
private BusinessInvoiceSqlDao invoiceSqlDao;
private BusinessInvoiceItemSqlDao invoiceItemSqlDao;
private AnalyticsDao analyticsDao;
@@ -45,10 +44,11 @@ public class TestDefaultAnalyticsDao extends TestWithEmbeddedDB {
public void setUp() throws Exception {
final IDBI dbi = helper.getDBI();
accountSqlDao = dbi.onDemand(BusinessAccountSqlDao.class);
- subscriptionTransitionSqlDao = dbi.onDemand(BusinessSubscriptionTransitionSqlDao.class);
+ final BusinessSubscriptionTransitionSqlDao subscriptionTransitionSqlDao = dbi.onDemand(BusinessSubscriptionTransitionSqlDao.class);
invoiceSqlDao = dbi.onDemand(BusinessInvoiceSqlDao.class);
invoiceItemSqlDao = dbi.onDemand(BusinessInvoiceItemSqlDao.class);
- analyticsDao = new DefaultAnalyticsDao(accountSqlDao, subscriptionTransitionSqlDao, invoiceSqlDao, invoiceItemSqlDao);
+ final BusinessAccountTagSqlDao accountTagSqlDao = dbi.onDemand(BusinessAccountTagSqlDao.class);
+ analyticsDao = new DefaultAnalyticsDao(accountSqlDao, subscriptionTransitionSqlDao, invoiceSqlDao, invoiceItemSqlDao, accountTagSqlDao);
}
@Test(groups = "slow")
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestAnalytics.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestAnalytics.java
index 2c55b3c..9dadb9e 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestAnalytics.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestAnalytics.java
@@ -32,6 +32,7 @@ import com.ning.billing.account.api.AccountApiException;
import com.ning.billing.account.api.AccountData;
import com.ning.billing.account.api.MutableAccountData;
import com.ning.billing.analytics.model.BusinessAccount;
+import com.ning.billing.analytics.model.BusinessAccountTag;
import com.ning.billing.analytics.model.BusinessInvoice;
import com.ning.billing.analytics.model.BusinessInvoiceItem;
import com.ning.billing.analytics.model.BusinessSubscriptionEvent;
@@ -46,6 +47,10 @@ import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
+import com.ning.billing.util.api.TagApiException;
+import com.ning.billing.util.api.TagDefinitionApiException;
+import com.ning.billing.util.dao.ObjectType;
+import com.ning.billing.util.tag.TagDefinition;
@Guice(modules = BeatrixModule.class)
public class TestAnalytics extends TestIntegrationBase {
@@ -67,6 +72,9 @@ public class TestAnalytics extends TestIntegrationBase {
// Update some fields
verifyAccountUpdate(account);
+ // Add a tag
+ verifyAddTagToAccount(account);
+
// Create a bundle
final SubscriptionBundle bundle = verifyFirstBundle(account);
@@ -148,6 +156,19 @@ public class TestAnalytics extends TestIntegrationBase {
Assert.assertEquals(analyticsUserApi.getInvoicesForAccount(account.getExternalKey()).size(), 0);
}
+ private void verifyAddTagToAccount(final Account account) throws TagDefinitionApiException, TagApiException, InterruptedException {
+ Assert.assertEquals(analyticsUserApi.getTagsForAccount(account.getExternalKey()).size(), 0);
+
+ final TagDefinition tagDefinition = tagUserApi.create(UUID.randomUUID().toString().substring(0, 10), UUID.randomUUID().toString(), context);
+ tagUserApi.addTag(account.getId(), ObjectType.ACCOUNT, tagDefinition, context);
+
+ waitALittle();
+
+ final List<BusinessAccountTag> tagsForAccount = analyticsUserApi.getTagsForAccount(account.getExternalKey());
+ Assert.assertEquals(tagsForAccount.size(), 1);
+ Assert.assertEquals(tagsForAccount.get(0).getName(), tagDefinition.getName());
+ }
+
private SubscriptionBundle verifyFirstBundle(final Account account) throws EntitlementUserApiException, InterruptedException {
// Add a bundle
final SubscriptionBundle bundle = entitlementUserApi.createBundleForAccount(account.getId(), UUID.randomUUID().toString(), context);
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java
index 48202da..d17b0b2 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java
@@ -58,6 +58,7 @@ import com.ning.billing.invoice.model.InvoicingConfiguration;
import com.ning.billing.junction.plumbing.api.BlockingSubscription;
import com.ning.billing.payment.api.PaymentApi;
import com.ning.billing.payment.api.PaymentMethodPlugin;
+import com.ning.billing.util.api.TagUserApi;
import com.ning.billing.util.bus.BusService;
import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.util.callcontext.CallOrigin;
@@ -130,6 +131,9 @@ public class TestIntegrationBase implements TestListenerStatus {
protected DefaultAnalyticsUserApi analyticsUserApi;
@Inject
+ protected TagUserApi tagUserApi;
+
+ @Inject
protected AnalyticsListener analyticsListener;
protected TestApiListener busHandler;