Details
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 cacbf01..58cc017 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
@@ -68,7 +68,6 @@ public class MockModule extends AbstractModule {
bind(ClockMock.class).asEagerSingleton();
bind(Lifecycle.class).to(SubsetDefaultLifecycle.class).asEagerSingleton();
-
final MysqlTestingHelper helper = new MysqlTestingHelper();
bind(MysqlTestingHelper.class).toInstance(helper);
if (helper.isUsingLocalInstance()) {
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
index b4a4019..8e517d1 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
@@ -560,8 +560,6 @@ public class TestIntegration {
@Test(enabled = true)
public void testHappyPath() throws AccountApiException, EntitlementUserApiException {
- long DELAY = 5000 * 10;
-
Account account = accountUserApi.createAccount(getAccountData(3), null, null);
assertNotNull(account);
@@ -597,8 +595,6 @@ public class TestIntegration {
@Test
public void testForMultipleRecurringPhases() throws AccountApiException, EntitlementUserApiException, InterruptedException {
- final long DELAY = 50000;
-
clock.setDeltaFromReality(new DateTime().getMillis() - clock.getUTCNow().getMillis());
Account account = accountUserApi.createAccount(getAccountData(15), null, null);
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultBillingEvent.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultBillingEvent.java
index df9e744..7209239 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultBillingEvent.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultBillingEvent.java
@@ -86,11 +86,11 @@ public class TestDefaultBillingEvent {
}
@Test(groups={"fast"})
- public void testEventOrderingType() {
+ public void testEventTotalOrdering() {
- BillingEvent event0 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.CREATE);
- BillingEvent event1 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.CHANGE);
- BillingEvent event2 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.CANCEL);
+ BillingEvent event0 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.CREATE, 1L);
+ BillingEvent event1 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.CANCEL, 2L);
+ BillingEvent event2 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.RE_CREATE, 3L);
SortedSet<BillingEvent> set = new TreeSet<BillingEvent>();
set.add(event2);
@@ -123,8 +123,11 @@ public class TestDefaultBillingEvent {
Assert.assertEquals(event2, it.next());
}
+ private BillingEvent createEvent(Subscription sub, DateTime effectiveDate, SubscriptionTransitionType type) {
+ return createEvent(sub, effectiveDate, type, 1L);
+ }
- private BillingEvent createEvent(Subscription sub, DateTime effectiveDate, SubscriptionTransitionType type) {
+ private BillingEvent createEvent(Subscription sub, DateTime effectiveDate, SubscriptionTransitionType type, long totalOrdering) {
int billCycleDay = 1;
Plan shotgun = new MockPlan();
@@ -133,7 +136,7 @@ public class TestDefaultBillingEvent {
return new DefaultBillingEvent(sub , effectiveDate,
shotgun, shotgunMonthly,
BigDecimal.ZERO, null, Currency.USD, BillingPeriod.NO_BILLING_PERIOD, billCycleDay,
- BillingModeType.IN_ADVANCE, "Test Event 1", 1L, type);
+ BillingModeType.IN_ADVANCE, "Test Event 1", totalOrdering, type);
}
private MockPlanPhase createMockMonthlyPlanPhase(@Nullable final BigDecimal recurringRate,
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiRecreate.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiRecreate.java
index 092e1ec..cff7e91 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiRecreate.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiRecreate.java
@@ -100,7 +100,15 @@ public abstract class TestUserApiRecreate extends TestApiBase {
subscription.cancel(null, false);
testListener.pushExpectedEvent(NextEvent.PHASE);
- testListener.pushExpectedEvent(NextEvent.CREATE);
+ testListener.pushExpectedEvent(NextEvent.RE_CREATE);
+
+ // Avoid ordering issue for events at excat same date; this is actually a real good test, we
+ // we test it at Beatrix level. At this level that would work for sql tests but not for in memory.
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+
+ }
if (fromUserAPi) {
subscription = (SubscriptionData) entitlementApi.createSubscription(bundle.getId(),
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
index acb54ad..66c71bd 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
@@ -246,7 +246,8 @@ public class DefaultInvoiceGenerator implements InvoiceGenerator {
return new FixedPriceInvoiceItem(invoiceId, thisEvent.getSubscription().getId(),
thisEvent.getPlan().getName(), thisEvent.getPlanPhase().getName(),
- thisEvent.getEffectiveDate(), endDate, fixedPrice, currency);
+ thisEvent.getEffectiveDate(), endDate, fixedPrice, currency,
+ clock.getUTCNow());
} else {
return null;
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
index 2c01329..4a1bc1d 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
@@ -25,8 +25,9 @@ import java.util.UUID;
public class FixedPriceInvoiceItem extends InvoiceItemBase {
public FixedPriceInvoiceItem(UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
- DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency) {
- super(invoiceId, subscriptionId, planName, phaseName, startDate, endDate, amount, currency);
+ DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency,
+ DateTime createdDate) {
+ super(invoiceId, subscriptionId, planName, phaseName, startDate, endDate, amount, currency, createdDate);
}
public FixedPriceInvoiceItem(UUID id, UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
index d855681..6f69e33 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
@@ -16,13 +16,10 @@
package com.ning.billing.invoice.model;
-import com.google.inject.Inject;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.invoice.api.InvoiceItem;
-import com.ning.billing.util.clock.Clock;
import org.joda.time.DateTime;
-import javax.annotation.Nullable;
import java.math.BigDecimal;
import java.util.UUID;
@@ -38,18 +35,16 @@ public abstract class InvoiceItemBase implements InvoiceItem {
protected final Currency currency;
protected final DateTime createdDate;
- @Inject
- private Clock clock;
-
public InvoiceItemBase(UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
- DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency) {
+ DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency,
+ DateTime createdDate) {
this(UUID.randomUUID(), invoiceId, subscriptionId, planName, phaseName,
- startDate, endDate, amount, currency, null);
+ startDate, endDate, amount, currency, createdDate);
}
public InvoiceItemBase(UUID id, UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency,
- @Nullable DateTime createdDate) {
+ DateTime createdDate) {
this.id = id;
this.invoiceId = invoiceId;
this.subscriptionId = subscriptionId;
@@ -59,7 +54,7 @@ public abstract class InvoiceItemBase implements InvoiceItem {
this.endDate = endDate;
this.amount = amount;
this.currency = currency;
- this.createdDate = (createdDate == null) ? clock.getUTCNow() : createdDate;
+ this.createdDate = createdDate;
}
public DateTime getCreatedDate() {