killbill-aplcache
Changes
invoice/pom.xml 29(+0 -29)
invoice/src/main/java/com/ning/billing/invoice/template/translator/DefaultInvoiceTranslator.java 5(+3 -2)
invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java 12(+5 -7)
invoice/src/test/java/com/ning/billing/invoice/notification/TestNextBillingDateNotifier.java 23(+9 -14)
util/src/main/java/com/ning/billing/util/template/translation/DefaultCatalogTranslator.java 4(+2 -2)
util/src/main/resources/com/ning/billing/util/template/translation/CatalogTranslation_EN_US.properties 0(+0 -0)
util/src/main/resources/com/ning/billing/util/template/translation/CatalogTranslation_FR_CA.properties 0(+0 -0)
Details
diff --git a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java
index ca58034..cbab941 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java
@@ -16,6 +16,8 @@
package com.ning.billing.analytics;
+import com.ning.billing.util.email.EmailModule;
+import com.ning.billing.util.glue.GlobalLockerModule;
import org.skife.jdbi.v2.IDBI;
import com.ning.billing.account.glue.AccountModule;
@@ -42,6 +44,8 @@ public class AnalyticsTestModule extends AnalyticsModule
super.configure();
// Need to configure a few more things for the EventBus
+ install(new EmailModule());
+ install(new GlobalLockerModule());
install(new ClockModule());
install(new CallContextModule());
install(new FieldStoreModule());
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java b/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
index d59701a..fa2a46a 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
@@ -113,5 +113,4 @@ public interface BillingEvent extends Comparable<BillingEvent> {
* @return a unique long indicating the ordering on which events got inserted on disk-- used for sorting only
*/
public Long getTotalOrdering();
-
}
diff --git a/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/ServiceFinder.java b/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/ServiceFinder.java
index 83115de..e27dff9 100644
--- a/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/ServiceFinder.java
+++ b/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/ServiceFinder.java
@@ -60,7 +60,7 @@ public class ServiceFinder {
final Set<String> packageFilter = new HashSet<String>();
packageFilter.add("com.ning.billing");
final String jarFilter = "killbill";
- return findClasses(loader, KillbillService.class.getName().toString(), jarFilter, packageFilter);
+ return findClasses(loader, KillbillService.class.getName(), jarFilter, packageFilter);
} catch (ClassNotFoundException nfe) {
throw new RuntimeException("Failed to initialize ClassFinder", nfe);
}
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java
index 0a4a18a..8eafa8d 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java
@@ -22,6 +22,8 @@ import java.io.IOException;
import java.net.URL;
import java.util.Set;
+import com.ning.billing.util.email.EmailConfig;
+import com.ning.billing.util.email.EmailModule;
import org.skife.config.ConfigurationObjectFactory;
import org.skife.jdbi.v2.IDBI;
@@ -83,6 +85,7 @@ public class MockModule extends AbstractModule {
bind(IDBI.class).toInstance(dbi);
}
+ install(new EmailModule());
install(new CallContextModule());
install(new GlobalLockerModule());
install(new BusModule());
invoice/pom.xml 29(+0 -29)
diff --git a/invoice/pom.xml b/invoice/pom.xml
index 552b41d..2083a0c 100644
--- a/invoice/pom.xml
+++ b/invoice/pom.xml
@@ -39,29 +39,6 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>com.ning.billing</groupId>
- <artifactId>killbill-entitlement</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.ning.billing</groupId>
- <artifactId>killbill-entitlement</artifactId>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.ning.billing</groupId>
- <artifactId>killbill-junction</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.ning.billing</groupId>
- <artifactId>killbill-junction</artifactId>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
-
<dependency>
<groupId>com.ning.billing</groupId>
<artifactId>killbill-catalog</artifactId>
@@ -74,12 +51,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>com.ning.billing</groupId>
- <artifactId>killbill-account</artifactId>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<scope>test</scope>
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
index 9572e57..3917848 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
@@ -165,13 +165,13 @@ public class DefaultInvoiceDao implements InvoiceDao {
RecurringInvoiceItemSqlDao recurringInvoiceItemDao = invoiceDao.become(RecurringInvoiceItemSqlDao.class);
recurringInvoiceItemDao.batchCreateFromTransaction(recurringInvoiceItems, context);
- notifyOfFutureBillingEvents(invoiceSqlDao, recurringInvoiceItems);
+ notifyOfFutureBillingEvents(invoiceDao, recurringInvoiceItems);
List<InvoiceItem> fixedPriceInvoiceItems = invoice.getInvoiceItems(FixedPriceInvoiceItem.class);
FixedPriceInvoiceItemSqlDao fixedPriceInvoiceItemDao = invoiceDao.become(FixedPriceInvoiceItemSqlDao.class);
fixedPriceInvoiceItemDao.batchCreateFromTransaction(fixedPriceInvoiceItems, context);
- setChargedThroughDates(invoiceSqlDao, fixedPriceInvoiceItems, recurringInvoiceItems, context);
+ setChargedThroughDates(invoiceDao, fixedPriceInvoiceItems, recurringInvoiceItems, context);
// STEPH Why do we need that? Are the payments not always null at this point?
List<InvoicePayment> invoicePayments = invoice.getPayments();
diff --git a/invoice/src/main/java/com/ning/billing/invoice/glue/InvoiceModule.java b/invoice/src/main/java/com/ning/billing/invoice/glue/InvoiceModule.java
index 41b782d..8fd0386 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/glue/InvoiceModule.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/glue/InvoiceModule.java
@@ -58,9 +58,6 @@ public class InvoiceModule extends AbstractModule {
protected void installConfig() {
final InvoiceConfig config = new ConfigurationObjectFactory(System.getProperties()).build(InvoiceConfig.class);
bind(InvoiceConfig.class).toInstance(config);
-
- final EmailConfig emailConfig = new ConfigurationObjectFactory(System.getProperties()).build(EmailConfig.class);
- bind(EmailConfig.class).toInstance(emailConfig);
}
protected void installInvoiceService() {
@@ -77,28 +74,24 @@ public class InvoiceModule extends AbstractModule {
bind(InvoiceNotifier.class).to(EmailInvoiceNotifier.class).asEagerSingleton();
}
- protected void installGlobalLocker() {
- install(new GlobalLockerModule());
- }
-
protected void installInvoiceListener() {
bind(InvoiceListener.class).asEagerSingleton();
}
+ protected void installInvoiceGenerator() {
+ bind(InvoiceGenerator.class).to(DefaultInvoiceGenerator.class).asEagerSingleton();
+ }
+
@Override
protected void configure() {
installInvoiceService();
installConfig();
installNotifiers();
-
installInvoiceListener();
- bind(InvoiceGenerator.class).to(DefaultInvoiceGenerator.class).asEagerSingleton();
+ installInvoiceGenerator();
installInvoiceDao();
installInvoiceUserApi();
installInvoicePaymentApi();
installInvoiceMigrationApi();
- installGlobalLocker();
}
-
-
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java b/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java
index 4b366f8..e94d4a3 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java
@@ -24,6 +24,7 @@ import java.util.TreeSet;
import java.util.UUID;
import com.ning.billing.invoice.notification.NullInvoiceNotifier;
+import com.ning.billing.invoice.tests.InvoicingTestBase;
import org.apache.commons.io.IOUtils;
import org.joda.time.DateTime;
import org.slf4j.Logger;
@@ -58,7 +59,6 @@ import com.ning.billing.invoice.api.InvoiceUserApi;
import com.ning.billing.invoice.dao.InvoiceDao;
import com.ning.billing.invoice.model.InvoiceGenerator;
import com.ning.billing.junction.api.BillingApi;
-import com.ning.billing.junction.plumbing.billing.DefaultBillingEvent;
import com.ning.billing.mock.BrainDeadProxyFactory;
import com.ning.billing.mock.BrainDeadProxyFactory.ZombieControl;
import com.ning.billing.util.bus.BusService;
@@ -72,7 +72,7 @@ import com.ning.billing.util.clock.ClockMock;
import com.ning.billing.util.globallocker.GlobalLocker;
@Guice(modules = {MockModuleNoEntitlement.class})
-public class TestDefaultInvoiceMigrationApi {
+public class TestDefaultInvoiceMigrationApi extends InvoicingTestBase {
Logger log = LoggerFactory.getLogger(TestDefaultInvoiceMigrationApi.class);
@Inject
@@ -100,8 +100,6 @@ public class TestDefaultInvoiceMigrationApi {
@Inject
private BillingApi billingApi;
-
-
private UUID accountId ;
private UUID subscriptionId ;
private DateTime date_migrated;
@@ -187,9 +185,9 @@ public class TestDefaultInvoiceMigrationApi {
DateTime effectiveDate = new DateTime().minusDays(1);
Currency currency = Currency.USD;
BigDecimal fixedPrice = null;
- events.add(new DefaultBillingEvent(account, subscription, effectiveDate,plan, planPhase,
- fixedPrice, BigDecimal.ONE, currency, BillingPeriod.MONTHLY, 1,
- BillingModeType.IN_ADVANCE, "", 1L, SubscriptionTransitionType.CREATE));
+ events.add(createMockBillingEvent(account, subscription, effectiveDate, plan, planPhase,
+ fixedPrice, BigDecimal.ONE, currency, BillingPeriod.MONTHLY, 1,
+ BillingModeType.IN_ADVANCE, "", 1L, SubscriptionTransitionType.CREATE));
BillingApi entitlementBillingApi = BrainDeadProxyFactory.createBrainDeadProxyFor(BillingApi.class);
((ZombieControl)entitlementBillingApi).addResult("getBillingEventsForAccountAndUpdateAccountBCD", events);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
index 42a9531..08354db 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
@@ -70,12 +70,10 @@ public abstract class InvoiceDaoTestBase extends InvoicingTestBase {
protected void setup() throws IOException {
module = new InvoiceModuleWithEmbeddedDb();
final String invoiceDdl = IOUtils.toString(DefaultInvoiceDao.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
- final String entitlementDdl = IOUtils.toString(DefaultInvoiceDao.class.getResourceAsStream("/com/ning/billing/entitlement/ddl.sql"));
final String utilDdl = IOUtils.toString(DefaultInvoiceDao.class.getResourceAsStream("/com/ning/billing/util/ddl.sql"));
module.startDb();
module.initDb(invoiceDdl);
- module.initDb(entitlementDdl);
module.initDb(utilDdl);
final Injector injector = Guice.createInjector(Stage.DEVELOPMENT, module);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java
index 81a940e..423777f 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java
@@ -53,7 +53,6 @@ import com.ning.billing.invoice.model.BillingEventSet;
import com.ning.billing.invoice.model.DefaultInvoice;
import com.ning.billing.invoice.model.DefaultInvoicePayment;
import com.ning.billing.invoice.model.RecurringInvoiceItem;
-import com.ning.billing.junction.plumbing.billing.DefaultBillingEvent;
import com.ning.billing.mock.BrainDeadProxyFactory;
import com.ning.billing.mock.BrainDeadProxyFactory.ZombieControl;
import com.ning.billing.util.tag.ControlTagType;
@@ -410,7 +409,7 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
Subscription subscription = getZombieSubscription();
DateTime effectiveDate1 = new DateTime(2011, 2, 1, 0, 0, 0, 0);
- BillingEvent event1 = new DefaultBillingEvent(null, subscription, effectiveDate1, plan1, phase1, null,
+ BillingEvent event1 = createMockBillingEvent(null, subscription, effectiveDate1, plan1, phase1, null,
recurringPrice.getPrice(currency), currency, BillingPeriod.MONTHLY, 1, BillingModeType.IN_ADVANCE,
"testEvent1", 1L, SubscriptionTransitionType.CREATE);
@@ -428,7 +427,7 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
MockPlan plan2 = new MockPlan(phase2);
DateTime effectiveDate2 = new DateTime(2011, 2, 15, 0, 0, 0, 0);
- BillingEvent event2 = new DefaultBillingEvent(null, subscription, effectiveDate2, plan2, phase2, null,
+ BillingEvent event2 = createMockBillingEvent(null, subscription, effectiveDate2, plan2, phase2, null,
recurringPrice2.getPrice(currency), currency, BillingPeriod.MONTHLY, 1, BillingModeType.IN_ADVANCE,
"testEvent2", 2L, SubscriptionTransitionType.CREATE);
events.add(event2);
@@ -460,7 +459,7 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
Subscription subscription = getZombieSubscription();
DateTime effectiveDate = buildDateTime(2011, 1, 1);
- BillingEvent event = new DefaultBillingEvent(null, subscription, effectiveDate, plan, phase, null,
+ BillingEvent event = createMockBillingEvent(null, subscription, effectiveDate, plan, phase, null,
recurringPrice.getPrice(currency), currency, BillingPeriod.MONTHLY, 15, BillingModeType.IN_ADVANCE,
"testEvent", 1L, SubscriptionTransitionType.CREATE);
BillingEventSet events = new BillingEventSet();
@@ -499,7 +498,7 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
Subscription subscription = getZombieSubscription();
DateTime effectiveDate1 = buildDateTime(2011, 1, 1);
- BillingEvent event1 = new DefaultBillingEvent(null, subscription, effectiveDate1, plan, phase1, fixedPrice.getPrice(currency),
+ BillingEvent event1 = createMockBillingEvent(null, subscription, effectiveDate1, plan, phase1, fixedPrice.getPrice(currency),
null, currency, BillingPeriod.MONTHLY, 1, BillingModeType.IN_ADVANCE,
"testEvent1", 1L, SubscriptionTransitionType.CREATE);
BillingEventSet events = new BillingEventSet();
@@ -515,7 +514,7 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
invoiceList.add(invoice1);
DateTime effectiveDate2 = effectiveDate1.plusDays(30);
- BillingEvent event2 = new DefaultBillingEvent(null, subscription, effectiveDate2, plan, phase2, null,
+ BillingEvent event2 = createMockBillingEvent(null, subscription, effectiveDate2, plan, phase2, null,
recurringPrice.getPrice(currency), currency, BillingPeriod.MONTHLY, 31, BillingModeType.IN_ADVANCE,
"testEvent2", 2L, SubscriptionTransitionType.CHANGE);
events.add(event2);
@@ -558,7 +557,7 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
Subscription subscription = getZombieSubscription();
DateTime effectiveDate1 = buildDateTime(2011, 1, 1);
- BillingEvent event1 = new DefaultBillingEvent(null, subscription, effectiveDate1, plan, phase1,
+ BillingEvent event1 = createMockBillingEvent(null, subscription, effectiveDate1, plan, phase1,
fixedPrice.getPrice(currency), null, currency,
BillingPeriod.MONTHLY, 1, BillingModeType.IN_ADVANCE,
"testEvent1", 1L, SubscriptionTransitionType.CREATE);
@@ -566,7 +565,7 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
events.add(event1);
DateTime effectiveDate2 = effectiveDate1.plusDays(30);
- BillingEvent event2 = new DefaultBillingEvent(null, subscription, effectiveDate2, plan, phase2, null,
+ BillingEvent event2 = createMockBillingEvent(null, subscription, effectiveDate2, plan, phase2, null,
recurringPrice.getPrice(currency), currency, BillingPeriod.MONTHLY, 31, BillingModeType.IN_ADVANCE,
"testEvent2", 2L, SubscriptionTransitionType.CHANGE);
events.add(event2);
@@ -604,10 +603,10 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
BillingEventSet events = new BillingEventSet();
List<Invoice> invoices = new ArrayList<Invoice>();
- BillingEvent event1 = new DefaultBillingEvent(null, subscription, targetDate1, plan, phase1, null,
- TEN, currency,
- BillingPeriod.MONTHLY, 31, BillingModeType.IN_ADVANCE,
- "testEvent1", 1L, SubscriptionTransitionType.CHANGE);
+ BillingEvent event1 = createMockBillingEvent(null, subscription, targetDate1, plan, phase1, null,
+ TEN, currency,
+ BillingPeriod.MONTHLY, 31, BillingModeType.IN_ADVANCE,
+ "testEvent1", 1L, SubscriptionTransitionType.CHANGE);
events.add(event1);
Invoice invoice1 = generator.generateInvoice(UUID.randomUUID(), events, invoices, targetDate1, Currency.USD);
@@ -616,10 +615,10 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
invoice1 = invoiceDao.getById(invoice1.getId());
assertNotNull(invoice1.getInvoiceNumber());
- BillingEvent event2 = new DefaultBillingEvent(null, subscription, targetDate1, plan, phase2, null,
- TWENTY, currency,
- BillingPeriod.MONTHLY, 31, BillingModeType.IN_ADVANCE,
- "testEvent2", 2L, SubscriptionTransitionType.CHANGE);
+ BillingEvent event2 = createMockBillingEvent(null, subscription, targetDate1, plan, phase2, null,
+ TWENTY, currency,
+ BillingPeriod.MONTHLY, 31, BillingModeType.IN_ADVANCE,
+ "testEvent2", 2L, SubscriptionTransitionType.CHANGE);
events.add(event2);
Invoice invoice2 = generator.generateInvoice(UUID.randomUUID(), events, invoices, targetDate2, Currency.USD);
invoiceDao.create(invoice2, context);
@@ -641,10 +640,10 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
Currency currency = Currency.USD;
// create pseudo-random invoice
- BillingEvent event1 = new DefaultBillingEvent(null, subscription, targetDate1, plan, phase1, null,
- TEN, currency,
- BillingPeriod.MONTHLY, 31, BillingModeType.IN_ADVANCE,
- "testEvent1", 1L, SubscriptionTransitionType.CHANGE);
+ BillingEvent event1 = createMockBillingEvent(null, subscription, targetDate1, plan, phase1, null,
+ TEN, currency,
+ BillingPeriod.MONTHLY, 31, BillingModeType.IN_ADVANCE,
+ "testEvent1", 1L, SubscriptionTransitionType.CHANGE);
BillingEventSet events = new BillingEventSet();
events.add(event1);
@@ -671,10 +670,10 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
Currency currency = Currency.USD;
// create pseudo-random invoice
- BillingEvent event1 = new DefaultBillingEvent(null, subscription, targetDate1, plan, phase1, null,
- TEN, currency,
- BillingPeriod.MONTHLY, 31, BillingModeType.IN_ADVANCE,
- "testEvent1", 1L, SubscriptionTransitionType.CHANGE);
+ BillingEvent event1 = createMockBillingEvent(null, subscription, targetDate1, plan, phase1, null,
+ TEN, currency,
+ BillingPeriod.MONTHLY, 31, BillingModeType.IN_ADVANCE,
+ "testEvent1", 1L, SubscriptionTransitionType.CHANGE);
BillingEventSet events = new BillingEventSet();
events.add(event1);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java b/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java
index 170ee9c..11af858 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java
@@ -21,6 +21,7 @@ import static org.testng.Assert.assertNotNull;
import java.io.IOException;
import java.net.URL;
+import com.ning.billing.entitlement.api.user.EntitlementUserApi;
import com.ning.billing.invoice.api.InvoiceNotifier;
import com.ning.billing.invoice.notification.NullInvoiceNotifier;
import org.skife.jdbi.v2.IDBI;
@@ -28,7 +29,6 @@ import org.skife.jdbi.v2.IDBI;
import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.catalog.glue.CatalogModule;
import com.ning.billing.dbi.MysqlTestingHelper;
-import com.ning.billing.entitlement.glue.EntitlementModule;
import com.ning.billing.invoice.api.test.DefaultInvoiceTestApi;
import com.ning.billing.invoice.api.test.InvoiceTestApi;
import com.ning.billing.invoice.dao.InvoicePaymentSqlDao;
@@ -39,6 +39,7 @@ import com.ning.billing.invoice.notification.NextBillingDateNotifier;
import com.ning.billing.invoice.notification.NextBillingDatePoster;
import com.ning.billing.junction.api.BillingApi;
import com.ning.billing.mock.BrainDeadProxyFactory;
+import com.ning.billing.mock.BrainDeadProxyFactory.ZombieControl;
import com.ning.billing.util.callcontext.CallContextFactory;
import com.ning.billing.util.callcontext.DefaultCallContextFactory;
import com.ning.billing.util.clock.Clock;
@@ -98,15 +99,22 @@ public class InvoiceModuleWithEmbeddedDb extends InvoiceModule {
bind(Clock.class).to(DefaultClock.class).asEagerSingleton();
bind(CallContextFactory.class).to(DefaultCallContextFactory.class).asEagerSingleton();
- install(new FieldStoreModule());
+ install(new FieldStoreModule());
install(new TagStoreModule());
installNotificationQueue();
// install(new AccountModule());
bind(AccountUserApi.class).toInstance(BrainDeadProxyFactory.createBrainDeadProxyFor(AccountUserApi.class));
- bind(BillingApi.class).toInstance(BrainDeadProxyFactory.createBrainDeadProxyFor(BillingApi.class));
+
+ BillingApi billingApi = BrainDeadProxyFactory.createBrainDeadProxyFor(BillingApi.class);
+ ((ZombieControl) billingApi).addResult("setChargedThroughDateFromTransaction", BrainDeadProxyFactory.ZOMBIE_VOID);
+ bind(BillingApi.class).toInstance(billingApi);
+
install(new CatalogModule());
- install(new EntitlementModule());
+
+ EntitlementUserApi entitlementUserApi = BrainDeadProxyFactory.createBrainDeadProxyFor(EntitlementUserApi.class);
+ bind(EntitlementUserApi.class).toInstance(entitlementUserApi);
+
install(new GlobalLockerModule());
super.configure();
diff --git a/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithMocks.java b/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithMocks.java
index c814379..17e732b 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithMocks.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithMocks.java
@@ -34,11 +34,6 @@ public class InvoiceModuleWithMocks extends InvoiceModule {
}
@Override
- protected void installGlobalLocker() {
- bind(GlobalLocker.class).to(MockGlobalLocker.class).asEagerSingleton();
- }
-
- @Override
protected void installInvoiceListener() {
}
@@ -63,6 +58,5 @@ public class InvoiceModuleWithMocks extends InvoiceModule {
super.configure();
install(new FieldStoreModule());
- //install(new TagStoreModule());
}
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/MockModule.java b/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
index a95864b..f87f65e 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
@@ -16,18 +16,18 @@
package com.ning.billing.invoice;
+import com.ning.billing.entitlement.api.user.EntitlementUserApi;
+import com.ning.billing.mock.BrainDeadProxyFactory;
+import com.ning.billing.util.email.EmailModule;
import org.skife.config.ConfigurationObjectFactory;
import org.skife.jdbi.v2.IDBI;
import com.google.inject.AbstractModule;
-import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.catalog.glue.CatalogModule;
import com.ning.billing.dbi.DBIProvider;
import com.ning.billing.dbi.DbiConfig;
import com.ning.billing.dbi.MysqlTestingHelper;
-import com.ning.billing.entitlement.glue.EntitlementModule;
import com.ning.billing.invoice.glue.InvoiceModule;
-import com.ning.billing.mock.BrainDeadProxyFactory;
import com.ning.billing.mock.glue.MockJunctionModule;
import com.ning.billing.util.callcontext.CallContextFactory;
import com.ning.billing.util.callcontext.DefaultCallContextFactory;
@@ -39,10 +39,7 @@ import com.ning.billing.util.glue.GlobalLockerModule;
import com.ning.billing.util.glue.NotificationQueueModule;
import com.ning.billing.util.glue.TagStoreModule;
-
public class MockModule extends AbstractModule {
- public static final String PLUGIN_NAME = "yoyo";
-
@Override
protected void configure() {
bind(Clock.class).to(ClockMock.class).asEagerSingleton();
@@ -62,6 +59,7 @@ public class MockModule extends AbstractModule {
bind(IDBI.class).toInstance(dbi);
}
+ install(new EmailModule());
install(new GlobalLockerModule());
install(new NotificationQueueModule());
installEntitlementModule();
@@ -72,11 +70,11 @@ public class MockModule extends AbstractModule {
}
protected void installEntitlementModule() {
- install(new EntitlementModule());
+ EntitlementUserApi api = BrainDeadProxyFactory.createBrainDeadProxyFor(EntitlementUserApi.class);
+ bind(EntitlementUserApi.class).toInstance(api);
}
protected void installInvoiceModule() {
install(new InvoiceModule());
}
-
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/notification/TestNextBillingDateNotifier.java b/invoice/src/test/java/com/ning/billing/invoice/notification/TestNextBillingDateNotifier.java
index b957d5f..fc2e865 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/notification/TestNextBillingDateNotifier.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/notification/TestNextBillingDateNotifier.java
@@ -24,7 +24,9 @@ import java.sql.SQLException;
import java.util.UUID;
import java.util.concurrent.Callable;
+import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.invoice.api.InvoiceNotifier;
+import com.ning.billing.junction.api.BillingApi;
import org.apache.commons.io.IOUtils;
import org.joda.time.DateTime;
import org.skife.config.ConfigurationObjectFactory;
@@ -40,27 +42,20 @@ import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Stage;
-import com.ning.billing.account.api.AccountUserApi;
-import com.ning.billing.account.api.MockAccountUserApi;
import com.ning.billing.catalog.DefaultCatalogService;
import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.config.CatalogConfig;
import com.ning.billing.config.InvoiceConfig;
import com.ning.billing.dbi.MysqlTestingHelper;
import com.ning.billing.entitlement.api.billing.ChargeThruApi;
-import com.ning.billing.entitlement.api.user.DefaultEntitlementUserApi;
import com.ning.billing.entitlement.api.user.EntitlementUserApi;
import com.ning.billing.entitlement.api.user.Subscription;
-import com.ning.billing.entitlement.engine.dao.EntitlementDao;
-import com.ning.billing.entitlement.engine.dao.EntitlementSqlDao;
import com.ning.billing.invoice.InvoiceDispatcher;
import com.ning.billing.invoice.InvoiceListener;
import com.ning.billing.invoice.dao.DefaultInvoiceDao;
import com.ning.billing.invoice.dao.InvoiceDao;
import com.ning.billing.invoice.model.DefaultInvoiceGenerator;
import com.ning.billing.invoice.model.InvoiceGenerator;
-import com.ning.billing.junction.api.BillingApi;
-import com.ning.billing.junction.plumbing.billing.DefaultBillingApi;
import com.ning.billing.lifecycle.KillbillService.ServiceException;
import com.ning.billing.mock.BrainDeadProxyFactory;
import com.ning.billing.mock.BrainDeadProxyFactory.ZombieControl;
@@ -115,7 +110,6 @@ public class TestNextBillingDateNotifier {
}
-
@BeforeClass(groups={"slow"})
public void setup() throws ServiceException, IOException, ClassNotFoundException, SQLException {
//TestApiBase.loadSystemPropertiesFromClasspath("/entitlement.properties");
@@ -137,16 +131,19 @@ public class TestNextBillingDateNotifier {
IDBI dbi = helper.getDBI();
bind(IDBI.class).toInstance(dbi);
bind(TagDao.class).to(AuditedTagDao.class).asEagerSingleton();
- bind(EntitlementDao.class).to(EntitlementSqlDao.class).asEagerSingleton();
bind(CustomFieldDao.class).to(AuditedCustomFieldDao.class).asEagerSingleton();
bind(GlobalLocker.class).to(MySqlGlobalLocker.class).asEagerSingleton();
bind(InvoiceGenerator.class).to(DefaultInvoiceGenerator.class).asEagerSingleton();
bind(InvoiceDao.class).to(DefaultInvoiceDao.class);
bind(NextBillingDatePoster.class).to(DefaultNextBillingDatePoster.class).asEagerSingleton();
- bind(AccountUserApi.class).to(MockAccountUserApi.class).asEagerSingleton();
- bind(BillingApi.class).to(DefaultBillingApi.class).asEagerSingleton();
- bind(EntitlementUserApi.class).to(DefaultEntitlementUserApi.class).asEagerSingleton();
+ bind(BillingApi.class).toInstance(BrainDeadProxyFactory.createBrainDeadProxyFor(BillingApi.class));
bind(ChargeThruApi.class).toInstance(BrainDeadProxyFactory.createBrainDeadProxyFor(ChargeThruApi.class));
+
+ AccountUserApi accountUserApi = BrainDeadProxyFactory.createBrainDeadProxyFor(AccountUserApi.class);
+ bind(AccountUserApi.class).toInstance(accountUserApi);
+
+ EntitlementUserApi entitlementUserApi = BrainDeadProxyFactory.createBrainDeadProxyFor(EntitlementUserApi.class);
+ bind(EntitlementUserApi.class).toInstance(entitlementUserApi);
}
});
@@ -171,11 +168,9 @@ public class TestNextBillingDateNotifier {
private void startMysql() throws IOException, ClassNotFoundException, SQLException {
final String ddl = IOUtils.toString(NotificationSqlDao.class.getResourceAsStream("/com/ning/billing/util/ddl.sql"));
final String testDdl = IOUtils.toString(NotificationSqlDao.class.getResourceAsStream("/com/ning/billing/util/ddl_test.sql"));
- final String entitlementDdl = IOUtils.toString(NotificationSqlDao.class.getResourceAsStream("/com/ning/billing/entitlement/ddl.sql"));
helper.startMysql();
helper.initDb(ddl);
helper.initDb(testDdl);
- helper.initDb(entitlementDdl);
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/TestInvoiceDispatcher.java b/invoice/src/test/java/com/ning/billing/invoice/TestInvoiceDispatcher.java
index 0e9f315..753fda2 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/TestInvoiceDispatcher.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/TestInvoiceDispatcher.java
@@ -25,6 +25,7 @@ import java.util.UUID;
import com.ning.billing.invoice.api.InvoiceNotifier;
import com.ning.billing.invoice.notification.NullInvoiceNotifier;
+import com.ning.billing.invoice.tests.InvoicingTestBase;
import org.apache.commons.io.IOUtils;
import org.joda.time.DateTime;
import org.slf4j.Logger;
@@ -55,7 +56,6 @@ import com.ning.billing.invoice.dao.InvoiceDao;
import com.ning.billing.invoice.model.InvoiceGenerator;
import com.ning.billing.invoice.notification.NextBillingDateNotifier;
import com.ning.billing.junction.api.BillingApi;
-import com.ning.billing.junction.plumbing.billing.DefaultBillingEvent;
import com.ning.billing.mock.BrainDeadProxyFactory;
import com.ning.billing.mock.BrainDeadProxyFactory.ZombieControl;
import com.ning.billing.util.bus.BusService;
@@ -69,7 +69,7 @@ import com.ning.billing.util.globallocker.GlobalLocker;
@Test(groups = "slow")
@Guice(modules = {MockModule.class})
-public class TestInvoiceDispatcher {
+public class TestInvoiceDispatcher extends InvoicingTestBase {
private Logger log = LoggerFactory.getLogger(TestInvoiceDispatcher.class);
@Inject
@@ -101,13 +101,11 @@ public class TestInvoiceDispatcher {
@BeforeSuite(groups = "slow")
public void setup() throws IOException
{
- final String entitlementDdl = IOUtils.toString(TestInvoiceDispatcher.class.getResourceAsStream("/com/ning/billing/entitlement/ddl.sql"));
final String invoiceDdl = IOUtils.toString(TestInvoiceDispatcher.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
final String utilDdl = IOUtils.toString(TestInvoiceDispatcher.class.getResourceAsStream("/com/ning/billing/util/ddl.sql"));
helper.startMysql();
- helper.initDb(entitlementDdl);
helper.initDb(invoiceDdl);
helper.initDb(utilDdl);
notifier.initialize();
@@ -152,12 +150,12 @@ public class TestInvoiceDispatcher {
DateTime effectiveDate = new DateTime().minusDays(1);
Currency currency = Currency.USD;
BigDecimal fixedPrice = null;
- events.add(new DefaultBillingEvent(account, subscription, effectiveDate,plan, planPhase,
- fixedPrice, BigDecimal.ONE, currency, BillingPeriod.MONTHLY, 1,
- BillingModeType.IN_ADVANCE, "", 1L, SubscriptionTransitionType.CREATE));
+ events.add(createMockBillingEvent(account, subscription, effectiveDate, plan, planPhase,
+ fixedPrice, BigDecimal.ONE, currency, BillingPeriod.MONTHLY, 1,
+ BillingModeType.IN_ADVANCE, "", 1L, SubscriptionTransitionType.CREATE));
BillingApi entitlementBillingApi = BrainDeadProxyFactory.createBrainDeadProxyFor(BillingApi.class);
- ((ZombieControl)entitlementBillingApi).addResult("getBillingEventsForAccountAndUpdateAccountBCD", events);
+ ((ZombieControl) entitlementBillingApi).addResult("getBillingEventsForAccountAndUpdateAccountBCD", events);
DateTime target = new DateTime();
diff --git a/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java b/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java
index 3e9c99f..8492691 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java
@@ -44,9 +44,7 @@ import com.ning.billing.config.InvoiceConfig;
import com.ning.billing.entitlement.api.billing.BillingEvent;
import com.ning.billing.entitlement.api.billing.BillingModeType;
import com.ning.billing.entitlement.api.user.Subscription;
-import com.ning.billing.entitlement.api.user.SubscriptionData;
import com.ning.billing.entitlement.api.user.SubscriptionEventTransition.SubscriptionTransitionType;
-import com.ning.billing.entitlement.api.user.SubscriptionFactory.SubscriptionBuilder;
import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceApiException;
import com.ning.billing.invoice.model.BillingEventSet;
@@ -54,7 +52,6 @@ import com.ning.billing.invoice.model.DefaultInvoiceGenerator;
import com.ning.billing.invoice.model.FixedPriceInvoiceItem;
import com.ning.billing.invoice.model.InvoiceGenerator;
import com.ning.billing.invoice.model.RecurringInvoiceItem;
-import com.ning.billing.junction.plumbing.billing.DefaultBillingEvent;
import com.ning.billing.mock.BrainDeadProxyFactory;
import com.ning.billing.mock.BrainDeadProxyFactory.ZombieControl;
import com.ning.billing.util.clock.Clock;
@@ -62,38 +59,38 @@ import com.ning.billing.util.clock.DefaultClock;
@Test(groups = {"fast", "invoicing", "invoiceGenerator"})
public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
- private final Clock clock = new DefaultClock();
- private final InvoiceConfig invoiceConfig = new InvoiceConfig() {
- @Override
- public long getDaoClaimTimeMs() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public int getDaoMaxReadyEvents() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public long getNotificationSleepTimeMs() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public int getNumberOfMonthsInFuture() {
- return 36;
- }
-
- @Override
- public boolean isNotificationProcessingOff() {
- throw new UnsupportedOperationException();
- }
- };
-
private final InvoiceGenerator generator;
public DefaultInvoiceGeneratorTests() {
super();
+
+ Clock clock = new DefaultClock();
+ InvoiceConfig invoiceConfig = new InvoiceConfig() {
+ @Override
+ public long getDaoClaimTimeMs() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int getDaoMaxReadyEvents() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public long getNotificationSleepTimeMs() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int getNumberOfMonthsInFuture() {
+ return 36;
+ }
+
+ @Override
+ public boolean isNotificationProcessingOff() {
+ throw new UnsupportedOperationException();
+ }
+ };
this.generator = new DefaultInvoiceGenerator(clock, invoiceConfig);
}
@@ -119,7 +116,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
public void testWithSingleMonthlyEvent() throws InvoiceApiException, CatalogApiException {
BillingEventSet events = new BillingEventSet();
- Subscription sub = new SubscriptionData(new SubscriptionBuilder().setId(UUID.randomUUID()));
+ Subscription sub = createZombieSubscription();
DateTime startDate = buildDateTime(2011, 9, 1);
Plan plan = new MockPlan();
@@ -139,11 +136,23 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
assertEquals(invoice.getInvoiceItems().get(0).getSubscriptionId(), sub.getId());
}
+ private Subscription createZombieSubscription() {
+ return createZombieSubscription(UUID.randomUUID());
+ }
+
+ private Subscription createZombieSubscription(UUID subscriptionId) {
+ Subscription sub = BrainDeadProxyFactory.createBrainDeadProxyFor(Subscription.class);
+ ((ZombieControl) sub).addResult("getId", subscriptionId);
+ ((ZombieControl) sub).addResult("getBundleId", UUID.randomUUID());
+
+ return sub;
+ }
+
@Test
public void testWithSingleMonthlyEventWithLeadingProRation() throws InvoiceApiException, CatalogApiException {
BillingEventSet events = new BillingEventSet();
- Subscription sub = new SubscriptionData(new SubscriptionBuilder().setId(UUID.randomUUID()));
+ Subscription sub = createZombieSubscription();
DateTime startDate = buildDateTime(2011, 9, 1);
Plan plan = new MockPlan();
@@ -177,7 +186,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
BigDecimal rate2 = TEN;
PlanPhase phase2 = createMockMonthlyPlanPhase(rate2);
- Subscription sub = new SubscriptionData(new SubscriptionBuilder().setId(UUID.randomUUID()));
+ Subscription sub = createZombieSubscription();
BillingEvent event1 = createBillingEvent(sub.getId(), buildDateTime(2011, 9, 1), plan1, phase1, 1);
events.add(event1);
@@ -202,7 +211,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
BigDecimal rate1 = FIVE;
PlanPhase phase1 = createMockMonthlyPlanPhase(rate1);
- Subscription sub = new SubscriptionData(new SubscriptionBuilder().setId(UUID.randomUUID()));
+ Subscription sub = createZombieSubscription();
BillingEvent event1 = createBillingEvent(sub.getId(), buildDateTime(2011, 9, 1), plan1,phase1, 1);
events.add(event1);
@@ -239,7 +248,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
BigDecimal rate1 = FIVE;
PlanPhase phase1 = createMockMonthlyPlanPhase(rate1);
- Subscription sub = new SubscriptionData(new SubscriptionBuilder().setId(UUID.randomUUID()));
+ Subscription sub = createZombieSubscription();
BillingEvent event1 = createBillingEvent(sub.getId(), buildDateTime(2011, 9, 1), plan1, phase1, 1);
events.add(event1);
@@ -266,7 +275,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
public void testSingleEventWithExistingInvoice() throws InvoiceApiException, CatalogApiException {
BillingEventSet events = new BillingEventSet();
- Subscription sub = new SubscriptionData(new SubscriptionBuilder().setId(UUID.randomUUID()));
+ Subscription sub = createZombieSubscription();
DateTime startDate = buildDateTime(2011, 9, 1);
Plan plan1 = new MockPlan();
@@ -480,9 +489,7 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
@Test
public void testFixedPriceLifeCycle() throws InvoiceApiException {
UUID accountId = UUID.randomUUID();
- Subscription subscription = BrainDeadProxyFactory.createBrainDeadProxyFor(Subscription.class);
- ((ZombieControl) subscription).addResult("getId", UUID.randomUUID());
- ((ZombieControl) subscription).addResult("getBundleId", UUID.randomUUID());
+ Subscription subscription = createZombieSubscription();
Plan plan = new MockPlan("plan 1");
MockInternationalPrice zeroPrice = new MockInternationalPrice(new DefaultPrice(ZERO, Currency.USD));
@@ -495,17 +502,17 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
BillingEventSet events = new BillingEventSet();
- BillingEvent event1 = new DefaultBillingEvent(null, subscription, new DateTime("2012-01-1T00:00:00.000-08:00"),
- plan, phase1,
- ZERO, null, Currency.USD, BillingPeriod.NO_BILLING_PERIOD, 1,
- BillingModeType.IN_ADVANCE, "Test Event 1", 1L,
- SubscriptionTransitionType.CREATE);
+ BillingEvent event1 = createMockBillingEvent(null, subscription, new DateTime("2012-01-1T00:00:00.000-08:00"),
+ plan, phase1,
+ ZERO, null, Currency.USD, BillingPeriod.NO_BILLING_PERIOD, 1,
+ BillingModeType.IN_ADVANCE, "Test Event 1", 1L,
+ SubscriptionTransitionType.CREATE);
- BillingEvent event2 = new DefaultBillingEvent(null, subscription, changeDate,
- plan, phase2,
- ZERO, null, Currency.USD, BillingPeriod.NO_BILLING_PERIOD, 1,
- BillingModeType.IN_ADVANCE, "Test Event 2", 2L,
- SubscriptionTransitionType.PHASE);
+ BillingEvent event2 = createMockBillingEvent(null, subscription, changeDate,
+ plan, phase2,
+ ZERO, null, Currency.USD, BillingPeriod.NO_BILLING_PERIOD, 1,
+ BillingModeType.IN_ADVANCE, "Test Event 2", 2L,
+ SubscriptionTransitionType.PHASE);
events.add(event2);
events.add(event1);
@@ -688,16 +695,16 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
null, BillingPeriod.ANNUAL, phaseType);
}
- private DefaultBillingEvent createBillingEvent(final UUID subscriptionId, final DateTime startDate,
+ private BillingEvent createBillingEvent(final UUID subscriptionId, final DateTime startDate,
final Plan plan, final PlanPhase planPhase, final int billCycleDay) throws CatalogApiException {
- Subscription sub = new SubscriptionData(new SubscriptionBuilder().setId(subscriptionId));
+ Subscription sub = createZombieSubscription(subscriptionId);
Currency currency = Currency.USD;
- return new DefaultBillingEvent(null, sub, startDate, plan, planPhase,
- planPhase.getFixedPrice() == null ? null : planPhase.getFixedPrice().getPrice(currency),
- planPhase.getRecurringPrice() == null ? null : planPhase.getRecurringPrice().getPrice(currency),
- currency, planPhase.getBillingPeriod(),
- billCycleDay, BillingModeType.IN_ADVANCE, "Test", 1L, SubscriptionTransitionType.CREATE);
+ return createMockBillingEvent(null, sub, startDate, plan, planPhase,
+ planPhase.getFixedPrice() == null ? null : planPhase.getFixedPrice().getPrice(currency),
+ planPhase.getRecurringPrice() == null ? null : planPhase.getRecurringPrice().getPrice(currency),
+ currency, planPhase.getBillingPeriod(),
+ billCycleDay, BillingModeType.IN_ADVANCE, "Test", 1L, SubscriptionTransitionType.CREATE);
}
private void testInvoiceGeneration(final UUID accountId, final BillingEventSet events, final List<Invoice> existingInvoices,
diff --git a/invoice/src/test/java/com/ning/billing/invoice/tests/InvoicingTestBase.java b/invoice/src/test/java/com/ning/billing/invoice/tests/InvoicingTestBase.java
index 50f1b23..0f6d9db 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/tests/InvoicingTestBase.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/tests/InvoicingTestBase.java
@@ -18,10 +18,22 @@ package com.ning.billing.invoice.tests;
import java.math.BigDecimal;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.catalog.api.BillingPeriod;
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.entitlement.api.billing.BillingEvent;
+import com.ning.billing.entitlement.api.billing.BillingModeType;
+import com.ning.billing.entitlement.api.user.Subscription;
+import com.ning.billing.entitlement.api.user.SubscriptionEventTransition;
+import com.ning.billing.entitlement.api.user.SubscriptionEventTransition.SubscriptionTransitionType;
import org.joda.time.DateTime;
import com.ning.billing.invoice.model.InvoicingConfiguration;
+import javax.annotation.Nullable;
+
public abstract class InvoicingTestBase {
protected static final int NUMBER_OF_DECIMALS = InvoicingConfiguration.getNumberOfDecimals();
protected static final int ROUNDING_METHOD = InvoicingConfiguration.getRoundingMode();
@@ -70,4 +82,84 @@ public abstract class InvoicingTestBase {
protected DateTime buildDateTime(int year, int month, int day) {
return new DateTime(year, month, day, 0, 0, 0, 0);
}
+
+ protected BillingEvent createMockBillingEvent(@Nullable final Account account, final Subscription subscription,
+ final DateTime effectiveDate,
+ final Plan plan, final PlanPhase planPhase,
+ @Nullable final BigDecimal fixedPrice, @Nullable final BigDecimal recurringPrice,
+ final Currency currency, final BillingPeriod billingPeriod, final int billCycleDay,
+ final BillingModeType billingModeType, final String description,
+ final long totalOrdering,
+ final SubscriptionEventTransition.SubscriptionTransitionType type) {
+ return new BillingEvent() {
+ @Override
+ public Account getAccount() {
+ return account;
+ }
+ @Override
+ public int getBillCycleDay() {
+ return billCycleDay;
+ }
+ @Override
+ public Subscription getSubscription() {
+ return subscription;
+ }
+ @Override
+ public DateTime getEffectiveDate() {
+ return effectiveDate;
+ }
+ @Override
+ public PlanPhase getPlanPhase() {
+ return planPhase;
+ }
+ @Override
+ public Plan getPlan() {
+ return plan;
+ }
+ @Override
+ public BillingPeriod getBillingPeriod() {
+ return billingPeriod;
+ }
+ @Override
+ public BillingModeType getBillingMode() {
+ return billingModeType;
+ }
+ @Override
+ public String getDescription() {
+ return description;
+ }
+ @Override
+ public BigDecimal getFixedPrice() {
+ return fixedPrice;
+ }
+ @Override
+ public BigDecimal getRecurringPrice() {
+ return recurringPrice;
+ }
+ @Override
+ public Currency getCurrency() {
+ return currency;
+ }
+ @Override
+ public SubscriptionTransitionType getTransitionType() {
+ return type;
+ }
+ @Override
+ public Long getTotalOrdering() {
+ return totalOrdering;
+ }
+ @Override
+ public int compareTo(BillingEvent e1) {
+ if (!getSubscription().getId().equals(e1.getSubscription().getId())) { // First order by subscription
+ return getSubscription().getId().compareTo(e1.getSubscription().getId());
+ } else { // subscriptions are the same
+ if (! getEffectiveDate().equals(e1.getEffectiveDate())) { // Secondly order by date
+ return getEffectiveDate().compareTo(e1.getEffectiveDate());
+ } else { // dates and subscriptions are the same
+ return getTotalOrdering().compareTo(e1.getTotalOrdering());
+ }
+ }
+ }
+ };
+ }
}
diff --git a/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java b/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java
index 0345375..337d9f8 100644
--- a/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java
+++ b/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java
@@ -67,8 +67,7 @@ public class TestBlockingDao {
helper.stopMysql();
}
}
-
-
+
@Test(groups={"slow"}, enabled=true)
public void testDao() {
ClockMock clock = new ClockMock();
diff --git a/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java b/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java
index 2cdced0..c6ef1e0 100644
--- a/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java
+++ b/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java
@@ -16,6 +16,9 @@
package com.ning.billing.server.modules;
+import com.ning.billing.util.email.EmailConfig;
+import com.ning.billing.util.email.EmailModule;
+import com.ning.billing.util.glue.GlobalLockerModule;
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.IDBI;
@@ -71,6 +74,8 @@ public class KillbillServerModule extends AbstractModule
}
protected void installKillbillModules() {
+ install(new EmailModule());
+ install(new GlobalLockerModule());
install(new FieldStoreModule());
install(new TagStoreModule());
install(new CatalogModule());
diff --git a/util/src/main/java/com/ning/billing/util/email/EmailModule.java b/util/src/main/java/com/ning/billing/util/email/EmailModule.java
new file mode 100644
index 0000000..5bb252a
--- /dev/null
+++ b/util/src/main/java/com/ning/billing/util/email/EmailModule.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning 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
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.util.email;
+
+import com.google.inject.AbstractModule;
+import org.skife.config.ConfigurationObjectFactory;
+
+public class EmailModule extends AbstractModule {
+ protected void installEmailConfig() {
+ EmailConfig config = new ConfigurationObjectFactory(System.getProperties()).build(EmailConfig.class);
+ bind(EmailConfig.class).toInstance(config);
+ }
+
+ @Override
+ protected void configure() {
+ installEmailConfig();
+ }
+}
diff --git a/util/src/main/java/com/ning/billing/util/email/formatters/DefaultInvoiceFormatter.java b/util/src/main/java/com/ning/billing/util/email/formatters/DefaultInvoiceFormatter.java
index 434f7c6..231bae3 100644
--- a/util/src/main/java/com/ning/billing/util/email/formatters/DefaultInvoiceFormatter.java
+++ b/util/src/main/java/com/ning/billing/util/email/formatters/DefaultInvoiceFormatter.java
@@ -37,7 +37,7 @@ import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.invoice.api.InvoicePayment;
import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.util.customfield.CustomField;
-import com.ning.billing.util.email.translation.TranslatorConfig;
+import com.ning.billing.util.template.translation.TranslatorConfig;
import com.ning.billing.util.tag.Tag;
import com.ning.billing.util.tag.TagDefinition;
import org.joda.time.DateTime;
diff --git a/util/src/main/java/com/ning/billing/util/email/formatters/DefaultInvoiceItemFormatter.java b/util/src/main/java/com/ning/billing/util/email/formatters/DefaultInvoiceItemFormatter.java
index 875e1c0..a78e5ea 100644
--- a/util/src/main/java/com/ning/billing/util/email/formatters/DefaultInvoiceItemFormatter.java
+++ b/util/src/main/java/com/ning/billing/util/email/formatters/DefaultInvoiceItemFormatter.java
@@ -18,9 +18,9 @@ package com.ning.billing.util.email.formatters;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.invoice.api.InvoiceItem;
-import com.ning.billing.util.email.translation.DefaultCatalogTranslator;
-import com.ning.billing.util.email.translation.Translator;
-import com.ning.billing.util.email.translation.TranslatorConfig;
+import com.ning.billing.util.template.translation.DefaultCatalogTranslator;
+import com.ning.billing.util.template.translation.Translator;
+import com.ning.billing.util.template.translation.TranslatorConfig;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormatter;
diff --git a/util/src/main/java/com/ning/billing/util/email/templates/MustacheTemplateEngine.java b/util/src/main/java/com/ning/billing/util/email/templates/MustacheTemplateEngine.java
new file mode 100644
index 0000000..dba8757
--- /dev/null
+++ b/util/src/main/java/com/ning/billing/util/email/templates/MustacheTemplateEngine.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning 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
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.util.email.templates;
+
+import com.samskivert.mustache.Mustache;
+import com.samskivert.mustache.Template;
+import org.apache.commons.io.IOUtils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.util.Map;
+
+public class MustacheTemplateEngine implements TemplateEngine {
+ @Override
+ public String executeTemplate(String templateName, Map<String, Object> data) throws IOException {
+ String templateText = getTemplateText(templateName);
+ Template template = Mustache.compiler().compile(templateText);
+ return template.execute(data);
+ }
+
+ private String getTemplateText(String templateName) throws IOException {
+ InputStream templateStream = this.getClass().getResourceAsStream(templateName + ".mustache");
+ StringWriter writer = new StringWriter();
+ IOUtils.copy(templateStream, writer, "UTF-8");
+ return writer.toString();
+ }
+}
diff --git a/util/src/main/java/com/ning/billing/util/email/templates/TemplateEngine.java b/util/src/main/java/com/ning/billing/util/email/templates/TemplateEngine.java
new file mode 100644
index 0000000..9a47008
--- /dev/null
+++ b/util/src/main/java/com/ning/billing/util/email/templates/TemplateEngine.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning 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
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.util.email.templates;
+
+import java.io.IOException;
+import java.util.Map;
+
+public interface TemplateEngine {
+ public String executeTemplate(String templateName, Map<String, Object> data) throws IOException;
+}
diff --git a/util/src/test/java/com/ning/billing/util/customfield/TestFieldStore.java b/util/src/test/java/com/ning/billing/util/customfield/TestFieldStore.java
index 8a2385b..fbd2be3 100644
--- a/util/src/test/java/com/ning/billing/util/customfield/TestFieldStore.java
+++ b/util/src/test/java/com/ning/billing/util/customfield/TestFieldStore.java
@@ -79,7 +79,9 @@ public class TestFieldStore {
@AfterClass(groups = {"util", "slow"})
public void stopMysql()
{
- helper.stopMysql();
+ if (helper!= null) {
+ helper.stopMysql();
+ }
}
@Test
diff --git a/util/src/test/java/com/ning/billing/util/email/DefaultCatalogTranslationTest.java b/util/src/test/java/com/ning/billing/util/email/DefaultCatalogTranslationTest.java
index 2b218fa..0be05ac 100644
--- a/util/src/test/java/com/ning/billing/util/email/DefaultCatalogTranslationTest.java
+++ b/util/src/test/java/com/ning/billing/util/email/DefaultCatalogTranslationTest.java
@@ -14,9 +14,9 @@ package com.ning.billing.util.email;/*
* under the License.
*/
-import com.ning.billing.util.email.translation.DefaultCatalogTranslator;
-import com.ning.billing.util.email.translation.Translator;
-import com.ning.billing.util.email.translation.TranslatorConfig;
+import com.ning.billing.util.template.translation.DefaultCatalogTranslator;
+import com.ning.billing.util.template.translation.Translator;
+import com.ning.billing.util.template.translation.TranslatorConfig;
import org.skife.config.ConfigurationObjectFactory;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
diff --git a/util/src/test/java/com/ning/billing/util/globallocker/TestMysqlGlobalLocker.java b/util/src/test/java/com/ning/billing/util/globallocker/TestMysqlGlobalLocker.java
index 6f2facd..be642f8 100644
--- a/util/src/test/java/com/ning/billing/util/globallocker/TestMysqlGlobalLocker.java
+++ b/util/src/test/java/com/ning/billing/util/globallocker/TestMysqlGlobalLocker.java
@@ -58,7 +58,9 @@ public class TestMysqlGlobalLocker {
@AfterClass(groups = "slow")
public void tearDown() {
- helper.stopMysql();
+ if (helper != null) {
+ helper.stopMysql();
+ }
}
// Used as a manual test to validate the simple DAO by stepping through that locking is done and release correctly
diff --git a/util/src/test/java/com/ning/billing/util/notificationq/dao/TestNotificationSqlDao.java b/util/src/test/java/com/ning/billing/util/notificationq/dao/TestNotificationSqlDao.java
index 891cadf..d5de415 100644
--- a/util/src/test/java/com/ning/billing/util/notificationq/dao/TestNotificationSqlDao.java
+++ b/util/src/test/java/com/ning/billing/util/notificationq/dao/TestNotificationSqlDao.java
@@ -78,7 +78,9 @@ public class TestNotificationSqlDao {
@AfterSuite(groups = "slow")
public void stopMysql()
{
- helper.stopMysql();
+ if (helper != null) {
+ helper.stopMysql();
+ }
}
diff --git a/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java b/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
index 99226e2..e29023f 100644
--- a/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
+++ b/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
@@ -103,7 +103,9 @@ public class TestTagStore {
@AfterClass(groups="slow")
public void stopMysql()
{
- helper.stopMysql();
+ if (helper != null) {
+ helper.stopMysql();
+ }
}
private void cleanupTags() {