killbill-uncached
Changes
beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestBasicOSGIWithTestBundle.java 6(+1 -5)
beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyCurrencyPlugin.java 4(+1 -3)
beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyPaymentPlugin.java 30(+12 -18)
beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestPaymentOSGIWithTestPaymentBundle.java 4(+0 -4)
beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueIntegration.java 44(+15 -29)
beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithOverdueEnforcementOffTag.java 4(+1 -3)
beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithSubscriptionCancellation.java 5(+2 -3)
beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationInvoiceWithRepairLogic.java 10(+0 -10)
beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java 17(+4 -13)
beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoPayOff.java 18(+4 -14)
beatrix/src/test/resources/catalogSample.xml 1723(+862 -861)
Details
diff --git a/beatrix/src/main/java/com/ning/billing/beatrix/DefaultBeatrixService.java b/beatrix/src/main/java/com/ning/billing/beatrix/DefaultBeatrixService.java
index 8d57212..23e8fda 100644
--- a/beatrix/src/main/java/com/ning/billing/beatrix/DefaultBeatrixService.java
+++ b/beatrix/src/main/java/com/ning/billing/beatrix/DefaultBeatrixService.java
@@ -26,7 +26,6 @@ import com.ning.billing.bus.api.PersistentBus;
import com.ning.billing.lifecycle.LifecycleHandlerType;
import com.ning.billing.lifecycle.LifecycleHandlerType.LifecycleLevel;
-
public class DefaultBeatrixService implements BeatrixService {
public static final String BEATRIX_SERVICE_NAME = "beatrix-service";
@@ -36,7 +35,7 @@ public class DefaultBeatrixService implements BeatrixService {
private final PersistentBus externalBus;
@Inject
- public DefaultBeatrixService(final PersistentBus eventBus,@Named(BeatrixModule.EXTERNAL_BUS) final PersistentBus externalBus, final BeatrixListener beatrixListener) {
+ public DefaultBeatrixService(final PersistentBus eventBus, @Named(BeatrixModule.EXTERNAL_BUS) final PersistentBus externalBus, final BeatrixListener beatrixListener) {
this.eventBus = eventBus;
this.externalBus = externalBus;
this.beatrixListener = beatrixListener;
@@ -47,7 +46,6 @@ public class DefaultBeatrixService implements BeatrixService {
return BEATRIX_SERVICE_NAME;
}
-
@LifecycleHandlerType(LifecycleLevel.INIT_SERVICE)
public void registerForNotifications() {
try {
diff --git a/beatrix/src/main/java/com/ning/billing/beatrix/extbus/BeatrixListener.java b/beatrix/src/main/java/com/ning/billing/beatrix/extbus/BeatrixListener.java
index 208fe9b..ea3db2d 100644
--- a/beatrix/src/main/java/com/ning/billing/beatrix/extbus/BeatrixListener.java
+++ b/beatrix/src/main/java/com/ning/billing/beatrix/extbus/BeatrixListener.java
@@ -27,18 +27,13 @@ import org.slf4j.LoggerFactory;
import com.ning.billing.ObjectType;
import com.ning.billing.account.api.Account;
import com.ning.billing.account.api.AccountApiException;
+import com.ning.billing.account.api.AccountInternalApi;
import com.ning.billing.beatrix.glue.BeatrixModule;
import com.ning.billing.bus.api.BusEvent;
import com.ning.billing.bus.api.PersistentBus;
import com.ning.billing.bus.api.PersistentBus.EventBusException;
-import com.ning.billing.entitlement.EntitlementTransitionType;
-import com.ning.billing.subscription.api.SubscriptionBaseTransitionType;
-import com.ning.billing.notification.plugin.api.ExtBusEventType;
-import com.ning.billing.util.callcontext.CallOrigin;
import com.ning.billing.callcontext.InternalCallContext;
-import com.ning.billing.util.callcontext.InternalCallContextFactory;
-import com.ning.billing.util.callcontext.UserType;
-import com.ning.billing.util.dao.NonEntityDao;
+import com.ning.billing.entitlement.EntitlementTransitionType;
import com.ning.billing.events.AccountChangeInternalEvent;
import com.ning.billing.events.AccountCreationInternalEvent;
import com.ning.billing.events.BusInternalEvent;
@@ -56,17 +51,19 @@ import com.ning.billing.events.PaymentInfoInternalEvent;
import com.ning.billing.events.SubscriptionInternalEvent;
import com.ning.billing.events.UserTagCreationInternalEvent;
import com.ning.billing.events.UserTagDeletionInternalEvent;
-import com.ning.billing.account.api.AccountInternalApi;
+import com.ning.billing.notification.plugin.api.ExtBusEventType;
+import com.ning.billing.subscription.api.SubscriptionBaseTransitionType;
+import com.ning.billing.util.callcontext.CallOrigin;
+import com.ning.billing.util.callcontext.InternalCallContextFactory;
+import com.ning.billing.util.callcontext.UserType;
+import com.ning.billing.util.dao.NonEntityDao;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.joda.JodaModule;
import com.google.common.eventbus.Subscribe;
-public class
-
-
- BeatrixListener {
+public class BeatrixListener {
private static final Logger log = LoggerFactory.getLogger(BeatrixListener.class);
@@ -105,14 +102,12 @@ public class
}
}
-
private BusEvent computeExtBusEventEntryFromBusInternalEvent(final BusInternalEvent event, final InternalCallContext context) {
ObjectType objectType = null;
UUID objectId = null;
ExtBusEventType eventBusType = null;
-
switch (event.getBusEventType()) {
case ACCOUNT_CREATE:
AccountCreationInternalEvent realEventACR = (AccountCreationInternalEvent) event;
@@ -261,5 +256,4 @@ public class
}
}
-
}
diff --git a/beatrix/src/main/java/com/ning/billing/beatrix/extbus/DefaultBusExternalEvent.java b/beatrix/src/main/java/com/ning/billing/beatrix/extbus/DefaultBusExternalEvent.java
index 09a5ae1..beba7df 100644
--- a/beatrix/src/main/java/com/ning/billing/beatrix/extbus/DefaultBusExternalEvent.java
+++ b/beatrix/src/main/java/com/ning/billing/beatrix/extbus/DefaultBusExternalEvent.java
@@ -27,7 +27,6 @@ import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
-
public class DefaultBusExternalEvent implements ExtBusEvent, BusEvent {
private final UUID objectId;
@@ -101,7 +100,6 @@ public class DefaultBusExternalEvent implements ExtBusEvent, BusEvent {
return userToken;
}
-
@Override
public boolean equals(final Object o) {
if (this == o) {
diff --git a/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/DefaultLifecycle.java b/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/DefaultLifecycle.java
index ad86ba9..0ff515a 100644
--- a/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/DefaultLifecycle.java
+++ b/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/DefaultLifecycle.java
@@ -41,7 +41,6 @@ import com.google.common.collect.SetMultimap;
import com.google.inject.Inject;
import com.google.inject.Injector;
-
public class DefaultLifecycle implements Lifecycle {
private static final Logger log = LoggerFactory.getLogger(DefaultLifecycle.class);
@@ -68,7 +67,6 @@ public class DefaultLifecycle implements Lifecycle {
init();
}
-
@Override
public void fireStartupSequencePriorEventRegistration() {
fireSequence(Sequence.STARTUP_PRE_EVENT_REGISTRATION);
@@ -141,7 +139,6 @@ public class DefaultLifecycle implements Lifecycle {
}
-
// Used to disable valid injection failure from unit tests
protected void logWarn(final String msg, final Exception e) {
log.warn(msg, e);
@@ -162,6 +159,7 @@ public class DefaultLifecycle implements Lifecycle {
}
private final class LifecycleHandler<T> {
+
private final T target;
private final Method method;
diff --git a/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/Lifecycle.java b/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/Lifecycle.java
index 9f87538..6c5f9ae 100644
--- a/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/Lifecycle.java
+++ b/beatrix/src/main/java/com/ning/billing/beatrix/lifecycle/Lifecycle.java
@@ -16,7 +16,6 @@
package com.ning.billing.beatrix.lifecycle;
-
public interface Lifecycle {
public void fireStartupSequencePriorEventRegistration();
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 bda63a0..135530f 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
@@ -126,7 +126,7 @@ public class ServiceFinder {
throw new ClassNotFoundException("Bad classpath. Error: " + mue.getMessage());
} catch (IOException io) {
throw new ClassNotFoundException("jar file '" + classPath.getName() +
- "' could not be instantiate from file path. Error: " + io.getMessage());
+ "' could not be instantiate from file path. Error: " + io.getMessage());
}
if (!failed) {
files = module.entries();
@@ -180,7 +180,7 @@ public class ServiceFinder {
module.close();
} catch (IOException ioe) {
throw new ClassNotFoundException("The module jar file '" + classPath.getName() +
- "' could not be closed. Error: " + ioe.getMessage());
+ "' could not be closed. Error: " + ioe.getMessage());
}
}
}
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/extbus/TestEventJson.java b/beatrix/src/test/java/com/ning/billing/beatrix/extbus/TestEventJson.java
index 3c742ef..713365d 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/extbus/TestEventJson.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/extbus/TestEventJson.java
@@ -26,7 +26,6 @@ import com.ning.billing.beatrix.BeatrixTestSuite;
import com.ning.billing.notification.plugin.api.ExtBusEventType;
import com.ning.billing.util.jackson.ObjectMapper;
-
public class TestEventJson extends BeatrixTestSuite {
private final ObjectMapper mapper = new ObjectMapper();
@@ -47,5 +46,4 @@ public class TestEventJson extends BeatrixTestSuite {
final Object obj = mapper.readValue(json, claz);
Assert.assertTrue(obj.equals(e));
}
-
}
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixIntegrationModule.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixIntegrationModule.java
index dd49539..c52cdbd 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixIntegrationModule.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixIntegrationModule.java
@@ -20,9 +20,6 @@ import java.io.IOException;
import java.net.URL;
import java.util.Set;
-import com.ning.billing.currency.glue.CurrencyModule;
-import com.ning.billing.entitlement.EntitlementService;
-import com.ning.billing.entitlement.glue.DefaultEntitlementModule;
import org.skife.config.ConfigSource;
import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
@@ -35,13 +32,15 @@ import com.ning.billing.beatrix.lifecycle.DefaultLifecycle;
import com.ning.billing.beatrix.lifecycle.Lifecycle;
import com.ning.billing.beatrix.util.AccountChecker;
import com.ning.billing.beatrix.util.AuditChecker;
-import com.ning.billing.beatrix.util.SubscriptionChecker;
import com.ning.billing.beatrix.util.InvoiceChecker;
import com.ning.billing.beatrix.util.PaymentChecker;
import com.ning.billing.beatrix.util.RefundChecker;
+import com.ning.billing.beatrix.util.SubscriptionChecker;
import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.catalog.glue.CatalogModule;
-import com.ning.billing.subscription.api.SubscriptionBaseService;
+import com.ning.billing.currency.glue.CurrencyModule;
+import com.ning.billing.entitlement.EntitlementService;
+import com.ning.billing.entitlement.glue.DefaultEntitlementModule;
import com.ning.billing.invoice.api.InvoiceService;
import com.ning.billing.invoice.generator.DefaultInvoiceGeneratorWithSwitchRepairLogic;
import com.ning.billing.invoice.generator.InvoiceGenerator;
@@ -54,6 +53,7 @@ import com.ning.billing.overdue.OverdueService;
import com.ning.billing.payment.api.PaymentService;
import com.ning.billing.payment.glue.PaymentModule;
import com.ning.billing.payment.provider.MockPaymentProviderPluginModule;
+import com.ning.billing.subscription.api.SubscriptionBaseService;
import com.ning.billing.subscription.glue.DefaultSubscriptionModule;
import com.ning.billing.tenant.glue.TenantModule;
import com.ning.billing.usage.glue.UsageModule;
@@ -94,7 +94,6 @@ public class BeatrixIntegrationModule extends AbstractModule {
this.configSource = configSource;
}
-
@Override
protected void configure() {
@@ -138,7 +137,6 @@ public class BeatrixIntegrationModule extends AbstractModule {
bind(AuditChecker.class).asEagerSingleton();
}
-
private static final class DefaultInvoiceModuleWithSwitchRepairLogic extends DefaultInvoiceModule {
public DefaultInvoiceModuleWithSwitchRepairLogic(final ConfigSource configSource) {
@@ -151,7 +149,6 @@ public class BeatrixIntegrationModule extends AbstractModule {
}
}
-
private static final class PaymentPluginMockModule extends PaymentModule {
public PaymentPluginMockModule(final ConfigSource configSource) {
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestBasicOSGIWithTestBundle.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestBasicOSGIWithTestBundle.java
index 56287f9..afab9b2 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestBasicOSGIWithTestBundle.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestBasicOSGIWithTestBundle.java
@@ -41,7 +41,6 @@ import com.ning.billing.DBTestingHelper;
import com.ning.billing.account.api.Account;
import com.ning.billing.beatrix.osgi.SetupBundleWithAssertion;
import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.commons.embeddeddb.EmbeddedDB;
import com.ning.billing.osgi.api.OSGIServiceRegistration;
import com.ning.billing.osgi.glue.OSGIDataSourceConfig;
import com.ning.billing.payment.plugin.api.PaymentInfoPlugin;
@@ -150,7 +149,6 @@ public class TestBasicOSGIWithTestBundle extends TestOSGIBase {
}, "Plugin did not create the payment");
}
-
private void assertWithCallback(final AwaitCallback callback, final String error) {
try {
await().atMost(5000000, TimeUnit.SECONDS).until(new Callable<Boolean>() {
@@ -171,7 +169,6 @@ public class TestBasicOSGIWithTestBundle extends TestOSGIBase {
expectedAmount.compareTo(test.getAmount()) == 0;
}
-
private boolean isPluginInitialized() {
TestModel test = getTestModelFirstRecord();
return test.isStarted();
@@ -195,7 +192,6 @@ public class TestBasicOSGIWithTestBundle extends TestOSGIBase {
}
}
-
private final static class TestModel {
private final Boolean isStarted;
@@ -234,7 +230,6 @@ public class TestBasicOSGIWithTestBundle extends TestOSGIBase {
}
-
private static class TestMapper implements ResultSetMapper<TestModel> {
@Override
@@ -250,6 +245,7 @@ public class TestBasicOSGIWithTestBundle extends TestOSGIBase {
}
private interface AwaitCallback {
+
boolean isSuccess();
}
}
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyCurrencyPlugin.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyCurrencyPlugin.java
index dcba30a..fb4fc6f 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyCurrencyPlugin.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyCurrencyPlugin.java
@@ -40,14 +40,12 @@ public class TestJrubyCurrencyPlugin extends TestOSGIBase {
private final String BUNDLE_TEST_RESOURCE_PREFIX = "killbill-currency-plugin-test";
private final String BUNDLE_TEST_RESOURCE = BUNDLE_TEST_RESOURCE_PREFIX + ".tar.gz";
-
@Inject
private OSGIServiceRegistration<CurrencyPluginApi> currencyPluginApiOSGIServiceRegistration;
@BeforeClass(groups = "slow")
public void beforeClass() throws Exception {
-
// OSGIDataSourceConfig
super.beforeClass();
@@ -58,7 +56,7 @@ public class TestJrubyCurrencyPlugin extends TestOSGIBase {
setupTest.setupJrubyBundle();
}
- @Test(groups = "slow", enabled = true)
+ @Test(groups = "slow")
public void testCurrencyApis() throws Exception {
CurrencyPluginApi api = getTestPluginCurrencyApi();
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyPaymentPlugin.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyPaymentPlugin.java
index 20396bc..be705cd 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyPaymentPlugin.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestJrubyPaymentPlugin.java
@@ -34,9 +34,9 @@ import com.ning.billing.catalog.api.Currency;
import com.ning.billing.osgi.api.OSGIServiceRegistration;
import com.ning.billing.payment.api.PaymentMethodPlugin;
import com.ning.billing.payment.plugin.api.PaymentInfoPlugin;
-import com.ning.billing.payment.plugin.api.PaymentPluginStatus;
import com.ning.billing.payment.plugin.api.PaymentMethodInfoPlugin;
import com.ning.billing.payment.plugin.api.PaymentPluginApi;
+import com.ning.billing.payment.plugin.api.PaymentPluginStatus;
import com.ning.billing.payment.plugin.api.RefundInfoPlugin;
import com.ning.billing.payment.plugin.api.RefundPluginStatus;
@@ -55,7 +55,6 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
@BeforeClass(groups = "slow")
public void beforeClass() throws Exception {
-
// OSGIDataSourceConfig
super.beforeClass();
@@ -67,7 +66,7 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
}
- @Test(groups = "slow", enabled = true)
+ @Test(groups = "slow")
public void testProcessPayment() throws Exception {
PaymentPluginApi api = getTestPluginPaymentApi();
@@ -75,10 +74,9 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
account = createAccountWithNonOsgiPaymentMethod(getAccountData(4));
final DateTime beforeCall = new DateTime().toDateTime(DateTimeZone.UTC).minusSeconds(1);
- PaymentInfoPlugin res = api.processPayment(account.getId(), UUID.randomUUID(), UUID.randomUUID(), BigDecimal.TEN, Currency.USD, callContext);
+ PaymentInfoPlugin res = api.processPayment(account.getId(), UUID.randomUUID(), UUID.randomUUID(), BigDecimal.TEN, Currency.USD, callContext);
final DateTime afterCall = new DateTime().toDateTime(DateTimeZone.UTC).plusSeconds(1);
-
Assert.assertTrue(res.getAmount().compareTo(BigDecimal.TEN) == 0);
Assert.assertTrue(res.getCreatedDate().compareTo(beforeCall) >= 0);
Assert.assertTrue(res.getCreatedDate().compareTo(afterCall) <= 0);
@@ -92,7 +90,7 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
assertEquals(res.getStatus(), PaymentPluginStatus.PROCESSED);
}
- @Test(groups = "slow", enabled = true)
+ @Test(groups = "slow")
public void testGetPaymentInfo() throws Exception {
PaymentPluginApi api = getTestPluginPaymentApi();
@@ -101,7 +99,6 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
PaymentInfoPlugin res = api.getPaymentInfo(UUID.randomUUID(), UUID.randomUUID(), callContext);
final DateTime afterCall = new DateTime().toDateTime(DateTimeZone.UTC).plusSeconds(1);
-
Assert.assertTrue(res.getAmount().compareTo(BigDecimal.ZERO) == 0);
Assert.assertTrue(res.getCreatedDate().compareTo(beforeCall) >= 0);
Assert.assertTrue(res.getCreatedDate().compareTo(afterCall) <= 0);
@@ -115,8 +112,7 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
assertEquals(res.getStatus(), PaymentPluginStatus.PROCESSED);
}
-
- @Test(groups = "slow", enabled = true)
+ @Test(groups = "slow")
public void testProcessRefund() throws Exception {
PaymentPluginApi api = getTestPluginPaymentApi();
@@ -125,7 +121,6 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
RefundInfoPlugin res = api.processRefund(UUID.randomUUID(), UUID.randomUUID(), BigDecimal.TEN, Currency.USD, callContext);
final DateTime afterCall = new DateTime().toDateTime(DateTimeZone.UTC).plusSeconds(1);
-
Assert.assertTrue(res.getAmount().compareTo(BigDecimal.TEN) == 0);
Assert.assertTrue(res.getCreatedDate().compareTo(beforeCall) >= 0);
Assert.assertTrue(res.getCreatedDate().compareTo(afterCall) <= 0);
@@ -139,7 +134,7 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
assertEquals(res.getStatus(), RefundPluginStatus.PROCESSED);
}
- @Test(groups = "slow", enabled = true)
+ @Test(groups = "slow")
public void testAddPaymentMethod() throws Exception {
PaymentPluginApi api = getTestPluginPaymentApi();
@@ -150,15 +145,14 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
final DateTime afterCall = new DateTime().toDateTime(DateTimeZone.UTC).plusSeconds(1);
}
-
- @Test(groups = "slow", enabled = true)
+ @Test(groups = "slow")
public void testDeletePaymentMethod() throws Exception {
PaymentPluginApi api = getTestPluginPaymentApi();
api.deletePaymentMethod(UUID.randomUUID(), UUID.randomUUID(), callContext);
}
- @Test(groups = "slow", enabled = true)
+ @Test(groups = "slow")
public void testGetPaymentMethodDetail() throws Exception {
PaymentPluginApi api = getTestPluginPaymentApi();
@@ -173,7 +167,7 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
assertEquals(res.getProperties().get(1).getValue(), "value2");
}
- @Test(groups = "slow", enabled = true)
+ @Test(groups = "slow")
public void testSetDefaultPaymentMethod() throws Exception {
PaymentPluginApi api = getTestPluginPaymentApi();
@@ -181,7 +175,7 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
api.setDefaultPaymentMethod(UUID.randomUUID(), UUID.randomUUID(), callContext);
}
- @Test(groups = "slow", enabled = true)
+ @Test(groups = "slow")
public void testGetPaymentMethods() throws Exception {
PaymentPluginApi api = getTestPluginPaymentApi();
@@ -197,7 +191,6 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
assertEquals(res0.getPaymentMethodId(), kbAccountId);
}
-
private PaymentPluginApi getTestPluginPaymentApi() {
int retry = 5;
@@ -209,7 +202,8 @@ public class TestJrubyPaymentPlugin extends TestOSGIBase {
try {
log.info("Waiting for Killbill initialization to complete time = " + clock.getUTCNow());
Thread.sleep(1000);
- } catch (InterruptedException ignore) {}
+ } catch (InterruptedException ignore) {
+ }
}
} while (result == null && retry-- > 0);
Assert.assertNotNull(result);
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestOSGIBase.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestOSGIBase.java
index 661e490..eca30ee 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestOSGIBase.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestOSGIBase.java
@@ -17,9 +17,6 @@
package com.ning.billing.beatrix.integration.osgi;
import com.ning.billing.beatrix.integration.TestIntegrationBase;
-import com.ning.billing.util.config.OSGIConfig;
-
-import com.google.inject.Inject;
public class TestOSGIBase extends TestIntegrationBase {
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestPaymentOSGIWithTestPaymentBundle.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestPaymentOSGIWithTestPaymentBundle.java
index 1fbe612..c6b17ab 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestPaymentOSGIWithTestPaymentBundle.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/osgi/TestPaymentOSGIWithTestPaymentBundle.java
@@ -113,7 +113,6 @@ public class TestPaymentOSGIWithTestPaymentBundle extends TestOSGIBase {
Assert.assertTrue(gotException);
}
-
@Test(groups = "slow")
public void testIntegrationOK() throws Exception {
setupIntegration(null, null);
@@ -131,7 +130,6 @@ public class TestPaymentOSGIWithTestPaymentBundle extends TestOSGIBase {
setupIntegration(null, e);
}
-
private void setupIntegration(final PaymentPluginApiException expectedException, final RuntimeException expectedRuntimeException) throws Exception {
final PaymentPluginApiWithTestControl paymentPluginApi = getTestPluginPaymentApi();
@@ -166,7 +164,6 @@ public class TestPaymentOSGIWithTestPaymentBundle extends TestOSGIBase {
final DefaultEntitlement aoEntitlement = addAOEntitlementAndCheckForCompletion(baseEntitlement.getBundleId(), "Telescopic-Scope", ProductCategory.ADD_ON, BillingPeriod.MONTHLY,
expectedEvents.toArray(new NextEvent[expectedEvents.size()]));
-
Invoice invoice = invoiceChecker.checkInvoice(account.getId(), 2, callContext, new ExpectedInvoiceItemCheck(new LocalDate(2012, 4, 1), new LocalDate(2012, 5, 1), InvoiceItemType.RECURRING, new BigDecimal("399.95")));
if (expectedException == null && expectedRuntimeException == null) {
@@ -178,7 +175,6 @@ public class TestPaymentOSGIWithTestPaymentBundle extends TestOSGIBase {
}
}
-
private PaymentPluginApiWithTestControl getTestPluginPaymentApi() {
PaymentPluginApiWithTestControl result = (PaymentPluginApiWithTestControl) paymentPluginApiOSGIServiceRegistration.getServiceForName(BeatrixIntegrationModule.OSGI_PLUGIN_NAME);
Assert.assertNotNull(result);
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/MockOverdueService.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/MockOverdueService.java
index df76116..c6612aa 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/MockOverdueService.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/MockOverdueService.java
@@ -18,17 +18,19 @@ package com.ning.billing.beatrix.integration.overdue;
import javax.inject.Named;
-import com.google.inject.Inject;
-import com.ning.billing.overdue.notification.OverdueNotifier;
import com.ning.billing.overdue.OverdueProperties;
import com.ning.billing.overdue.OverdueUserApi;
import com.ning.billing.overdue.glue.DefaultOverdueModule;
import com.ning.billing.overdue.listener.OverdueListener;
+import com.ning.billing.overdue.notification.OverdueNotifier;
import com.ning.billing.overdue.service.DefaultOverdueService;
import com.ning.billing.overdue.wrapper.OverdueWrapperFactory;
import com.ning.billing.util.svcsapi.bus.BusService;
+import com.google.inject.Inject;
+
public class MockOverdueService extends DefaultOverdueService {
+
@Inject
public MockOverdueService(final OverdueUserApi userApi, final OverdueProperties properties,
@Named(DefaultOverdueModule.OVERDUE_NOTIFIER_CHECK_NAMED) final OverdueNotifier checkNotifier,
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueBase.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueBase.java
index 653a375..6cbfc54 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueBase.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueBase.java
@@ -29,7 +29,6 @@ import com.ning.billing.beatrix.integration.TestIntegrationBase;
import com.ning.billing.catalog.api.BillingPeriod;
import com.ning.billing.entitlement.api.SubscriptionBundle;
import com.ning.billing.overdue.OverdueService;
-import com.ning.billing.subscription.api.user.SubscriptionBaseBundle;
import com.ning.billing.overdue.config.OverdueConfig;
import com.ning.billing.payment.api.PaymentMethodPlugin;
import com.ning.billing.payment.api.TestPaymentMethodPluginBase;
@@ -41,13 +40,11 @@ import static org.testng.Assert.assertNotNull;
public abstract class TestOverdueBase extends TestIntegrationBase {
-
protected Account account;
protected SubscriptionBundle bundle;
protected String productName;
protected BillingPeriod term;
-
public abstract String getOverdueConfig();
final PaymentMethodPlugin paymentMethodPlugin = new TestPaymentMethodPluginBase();
@@ -70,7 +67,6 @@ public abstract class TestOverdueBase extends TestIntegrationBase {
paymentPlugin.clear();
}
-
protected void checkODState(final String expected) {
try {
// This will test the overdue notification queue: when we move the clock, the overdue system
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueIntegration.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueIntegration.java
index 714ba92..71b9f62 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueIntegration.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueIntegration.java
@@ -42,8 +42,8 @@ import com.ning.billing.entitlement.api.EntitlementApiException;
import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceItemType;
import com.ning.billing.invoice.api.InvoicePayment;
-import com.ning.billing.payment.api.Payment;
import com.ning.billing.junction.DefaultBlockingState;
+import com.ning.billing.payment.api.Payment;
import com.google.common.collect.ImmutableList;
@@ -58,11 +58,9 @@ import static org.testng.Assert.assertTrue;
// - The overdue notifications
//
-
@Test(groups = "slow")
public class TestOverdueIntegration extends TestOverdueBase {
-
private final static Integer TIME_SINCE_EARLIEST_INVOICE_TO_TRIGGER_BLOCKING_BILLING = 40;
@Override
@@ -117,8 +115,7 @@ public class TestOverdueIntegration extends TestOverdueBase {
return configXml;
}
-
- @Test(groups = "slow", description="Test overdue stages and return to clear prior to CTD")
+ @Test(groups = "slow", description = "Test overdue stages and return to clear prior to CTD")
public void testOverdueStages1() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
@@ -194,7 +191,6 @@ public class TestOverdueIntegration extends TestOverdueBase {
// New invoice for the part that was unblocked
new ExpectedInvoiceItemCheck(new LocalDate(2012, 7, 23), new LocalDate(2012, 7, 31), InvoiceItemType.RECURRING, new BigDecimal("64.51")));
-
// Add 10 days to generate next invoice. We verify that we indeed have a notification for nextBillingDate
addDaysAndCheckForCompletion(10, NextEvent.INVOICE, NextEvent.PAYMENT);
@@ -208,7 +204,7 @@ public class TestOverdueIntegration extends TestOverdueBase {
assertEquals(invoiceUserApi.getAccountBalance(account.getId(), callContext).compareTo(BigDecimal.ZERO), 0);
}
- @Test(groups = "slow", description="Test overdue stages and return to clear on CTD")
+ @Test(groups = "slow", description = "Test overdue stages and return to clear on CTD")
public void testOverdueStages2() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
@@ -304,8 +300,7 @@ public class TestOverdueIntegration extends TestOverdueBase {
assertEquals(invoiceUserApi.getAccountBalance(account.getId(), callContext).compareTo(BigDecimal.ZERO), 0);
}
-
- @Test(groups = "slow", description="Test overdue stages and return to clear after CTD")
+ @Test(groups = "slow", description = "Test overdue stages and return to clear after CTD")
public void testOverdueStages3() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
@@ -404,12 +399,11 @@ public class TestOverdueIntegration extends TestOverdueBase {
assertEquals(invoiceUserApi.getAccountBalance(account.getId(), callContext).compareTo(BigDecimal.ZERO), 0);
}
-
//
// This test is similar to the previous one except that instaed of moving the clock to check we will get the next invoice
// at the end, we carry a change of plan.
//
- @Test(groups = "slow", description="Test overdue stages and follow with an immediate change of plan")
+ @Test(groups = "slow", description = "Test overdue stages and follow with an immediate change of plan")
public void testOverdueStagesFollowedWithImmediateChange1() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
@@ -473,7 +467,6 @@ public class TestOverdueIntegration extends TestOverdueBase {
addDaysAndCheckForCompletion(5, NextEvent.BLOCK);
checkODState("OD3");
-
allowPaymentsAndResetOverdueToClearByPayingAllUnpaidInvoices();
invoiceChecker.checkInvoice(account.getId(), 4, callContext,
@@ -491,7 +484,6 @@ public class TestOverdueIntegration extends TestOverdueBase {
// CBA generated
new ExpectedInvoiceItemCheck(new LocalDate(2012, 7, 23), new LocalDate(2012, 7, 23), InvoiceItemType.CBA_ADJ, new BigDecimal("64.51")));
-
invoiceChecker.checkInvoice(account.getId(), 5, callContext,
// Item for the upgraded recurring plan
new ExpectedInvoiceItemCheck(new LocalDate(2012, 7, 23), new LocalDate(2012, 7, 31), InvoiceItemType.RECURRING, new BigDecimal("154.85")),
@@ -504,7 +496,7 @@ public class TestOverdueIntegration extends TestOverdueBase {
assertEquals(invoiceUserApi.getAccountBalance(account.getId(), callContext).compareTo(BigDecimal.ZERO), 0);
}
- @Test(groups = "slow", description="Test overdue stages and follow with an immediate change of plan and use of credit")
+ @Test(groups = "slow", description = "Test overdue stages and follow with an immediate change of plan and use of credit")
public void testOverdueStagesFollowedWithImmediateChange2() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
@@ -539,12 +531,12 @@ public class TestOverdueIntegration extends TestOverdueBase {
checkODState("OD1");
// 2012, 7, 10 => Retry P0
- addDaysAndCheckForCompletion(8, NextEvent.BLOCK, NextEvent.INVOICE_ADJUSTMENT, NextEvent.PAYMENT_ERROR);
+ addDaysAndCheckForCompletion(8, NextEvent.BLOCK, NextEvent.INVOICE_ADJUSTMENT, NextEvent.PAYMENT_ERROR);
checkODState("OD2");
invoiceChecker.checkInvoice(account.getId(), 2,
- callContext, new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 31), new LocalDate(2013, 5, 31), InvoiceItemType.RECURRING, new BigDecimal("2399.95")),
- new ExpectedInvoiceItemCheck(new LocalDate(2012, 7, 10), new LocalDate(2013, 5, 31), InvoiceItemType.REPAIR_ADJ, new BigDecimal("-2136.92")));
+ callContext, new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 31), new LocalDate(2013, 5, 31), InvoiceItemType.RECURRING, new BigDecimal("2399.95")),
+ new ExpectedInvoiceItemCheck(new LocalDate(2012, 7, 10), new LocalDate(2013, 5, 31), InvoiceItemType.REPAIR_ADJ, new BigDecimal("-2136.92")));
// 2012, 7, 18 => Retry P0
addDaysAndCheckForCompletion(8, NextEvent.PAYMENT_ERROR);
@@ -560,7 +552,6 @@ public class TestOverdueIntegration extends TestOverdueBase {
// New invoice for the part that was unblocked up to the BCD
new ExpectedInvoiceItemCheck(new LocalDate(2012, 7, 23), new LocalDate(2012, 7, 31), InvoiceItemType.RECURRING, new BigDecimal("52.56")));
-
// Move to 2012, 7, 31 and Make a change of plan
addDaysAndCheckForCompletion(8, NextEvent.INVOICE, NextEvent.PAYMENT);
@@ -568,7 +559,6 @@ public class TestOverdueIntegration extends TestOverdueBase {
// New invoice for the part that was unblocked up to the BCD
new ExpectedInvoiceItemCheck(new LocalDate(2012, 7, 31), new LocalDate(2013, 7, 31), InvoiceItemType.RECURRING, new BigDecimal("2399.95")));
-
checkChangePlanWithOverdueState(baseEntitlement, false, false);
invoiceChecker.checkRepairedInvoice(account.getId(), 4, callContext,
@@ -585,8 +575,7 @@ public class TestOverdueIntegration extends TestOverdueBase {
assertEquals(invoiceUserApi.getAccountBalance(account.getId(), callContext).compareTo(new BigDecimal("-1800")), 0);
}
-
- @Test(groups = "slow", description="Test overdue stages with missing payment method")
+ @Test(groups = "slow", description = "Test overdue stages with missing payment method")
public void testOverdueStateIfNoPaymentMethod() throws Exception {
// This test is similar to the previous one - but there is no default payment method on the account, so there
// won't be any payment retry
@@ -643,7 +632,6 @@ public class TestOverdueIntegration extends TestOverdueBase {
checkODState("OD2");
checkChangePlanWithOverdueState(baseEntitlement, true, true);
-
invoiceChecker.checkInvoice(account.getId(), 3,
callContext, new ExpectedInvoiceItemCheck(new LocalDate(2012, 6, 30), new LocalDate(2012, 7, 31), InvoiceItemType.RECURRING, new BigDecimal("249.95")),
// We paid up to 07-31, hence the adjustment
@@ -683,7 +671,7 @@ public class TestOverdueIntegration extends TestOverdueBase {
assertEquals(invoiceUserApi.getAccountBalance(account.getId(), callContext).compareTo(BigDecimal.ZERO), 0);
}
- @Test(groups = "slow", description="Test overdue from non paid external charge")
+ @Test(groups = "slow", description = "Test overdue from non paid external charge")
public void testShouldBeInOverdueAfterExternalCharge() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
@@ -726,7 +714,7 @@ public class TestOverdueIntegration extends TestOverdueBase {
checkODState(DefaultBlockingState.CLEAR_STATE_NAME);
}
- @Test(groups = "slow", description="Test overdue after refund with no adjustment")
+ @Test(groups = "slow", description = "Test overdue after refund with no adjustment")
public void testShouldBeInOverdueAfterRefundWithoutAdjustment() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
@@ -769,7 +757,7 @@ public class TestOverdueIntegration extends TestOverdueBase {
checkChangePlanWithOverdueState(baseEntitlement, true, true);
}
- @Test(groups = "slow", description="Test overdue after chargeback")
+ @Test(groups = "slow", description = "Test overdue after chargeback")
public void testShouldBeInOverdueAfterChargeback() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
@@ -812,7 +800,7 @@ public class TestOverdueIntegration extends TestOverdueBase {
checkChangePlanWithOverdueState(baseEntitlement, true, true);
}
- @Test(groups = "slow", description="Test overdue clear after external payment")
+ @Test(groups = "slow", description = "Test overdue clear after external payment")
public void testOverdueStateShouldClearAfterExternalPayment() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
@@ -858,8 +846,7 @@ public class TestOverdueIntegration extends TestOverdueBase {
checkODState(DefaultBlockingState.CLEAR_STATE_NAME);
}
-
- @Test(groups = "slow", description="Test overdue clear after item adjustment")
+ @Test(groups = "slow", description = "Test overdue clear after item adjustment")
public void testOverdueStateShouldClearAfterCreditOrInvoiceItemAdjustment() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
@@ -984,7 +971,6 @@ public class TestOverdueIntegration extends TestOverdueBase {
checkODState(DefaultBlockingState.CLEAR_STATE_NAME);
}
-
private void checkChangePlanWithOverdueState(final Entitlement entitlement, final boolean shouldFail, final boolean expectedPayment) {
if (shouldFail) {
try {
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithOverdueEnforcementOffTag.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithOverdueEnforcementOffTag.java
index a9694a2..0fcd92d 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithOverdueEnforcementOffTag.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithOverdueEnforcementOffTag.java
@@ -34,7 +34,6 @@ import com.ning.billing.util.tag.ControlTagType;
@Test(groups = "slow")
public class TestOverdueWithOverdueEnforcementOffTag extends TestOverdueBase {
-
@Override
public String getOverdueConfig() {
final String configXml = "<overdueConfig>" +
@@ -97,7 +96,6 @@ public class TestOverdueWithOverdueEnforcementOffTag extends TestOverdueBase {
checkODState("OD1");
}
-
@Test(groups = "slow")
public void testOverdueAccountWithOverdueEnforcementOffTag() throws Exception {
@@ -134,7 +132,7 @@ public class TestOverdueWithOverdueEnforcementOffTag extends TestOverdueBase {
checkODState(DefaultBlockingState.CLEAR_STATE_NAME);
// Now remove OVERDUE_ENFORCEMENT_OFF tag
- busHandler.pushExpectedEvents(NextEvent.TAG, NextEvent.BLOCK);
+ busHandler.pushExpectedEvents(NextEvent.TAG, NextEvent.BLOCK);
tagUserApi.removeTag(account.getId(), ObjectType.ACCOUNT, ControlTagType.OVERDUE_ENFORCEMENT_OFF.getId(), callContext);
assertListenerStatus();
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithSubscriptionCancellation.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithSubscriptionCancellation.java
index 102f18b..8c1f241 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithSubscriptionCancellation.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/TestOverdueWithSubscriptionCancellation.java
@@ -28,15 +28,14 @@ import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.DefaultEntitlement;
import com.ning.billing.entitlement.api.Entitlement.EntitlementState;
import com.ning.billing.invoice.api.InvoiceItemType;
-import com.ning.billing.subscription.api.SubscriptionBase;
import com.ning.billing.junction.DefaultBlockingState;
+import com.ning.billing.subscription.api.SubscriptionBase;
-import static junit.framework.Assert.assertTrue;
+import static org.testng.Assert.assertTrue;
@Test(groups = "slow")
public class TestOverdueWithSubscriptionCancellation extends TestOverdueBase {
-
@Override
public String getOverdueConfig() {
final String configXml = "<overdueConfig>" +
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestBundleTransfer.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestBundleTransfer.java
index 6b228f7..ac15df5 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestBundleTransfer.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestBundleTransfer.java
@@ -43,7 +43,6 @@ import static org.testng.Assert.assertTrue;
public class TestBundleTransfer extends TestIntegrationBase {
-
@Test(groups = "slow")
public void testBundleTransferWithBPAnnualOnly() throws Exception {
@@ -198,7 +197,6 @@ public class TestBundleTransfer extends TestIntegrationBase {
List<Invoice> invoices = invoiceUserApi.getInvoicesByAccount(account.getId(), callContext);
assertEquals(invoices.size(), 2);
-
// CHECK OLD ACCOUNTS ITEMS
ImmutableList<ExpectedInvoiceItemCheck> toBeChecked = ImmutableList.<ExpectedInvoiceItemCheck>of(
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 1), new LocalDate(2012, 5, 9), InvoiceItemType.RECURRING, new BigDecimal("66.66")),
@@ -206,7 +204,6 @@ public class TestBundleTransfer extends TestIntegrationBase {
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 3), new LocalDate(2012, 5, 3), InvoiceItemType.CBA_ADJ, new BigDecimal("49.99")));
invoiceChecker.checkInvoice(invoices.get(1).getId(), callContext, toBeChecked);
-
// CHECK NEW ACCOUNT ITEMS
invoices = invoiceUserApi.getInvoicesByAccount(newAccount.getId(), callContext);
assertEquals(invoices.size(), 1);
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestCustomFieldApi.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestCustomFieldApi.java
index 398e870..b2e397c 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestCustomFieldApi.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestCustomFieldApi.java
@@ -32,8 +32,8 @@ import com.ning.billing.catalog.api.BillingPeriod;
import com.ning.billing.catalog.api.PriceListSet;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.DefaultEntitlement;
-import com.ning.billing.subscription.api.user.SubscriptionBaseApiException;
import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.subscription.api.user.SubscriptionBaseApiException;
import com.ning.billing.util.api.CustomFieldApiException;
import com.ning.billing.util.api.CustomFieldUserApi;
import com.ning.billing.util.customfield.CustomField;
@@ -42,18 +42,16 @@ import com.ning.billing.util.customfield.StringCustomField;
import com.google.inject.Inject;
import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
public class TestCustomFieldApi extends TestIntegrationBase {
-
private Account account;
@Inject
private CustomFieldUserApi customFieldApi;
@Override
- @BeforeMethod(groups = {"slow"})
+ @BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
super.beforeMethod();
account = createAccountWithNonOsgiPaymentMethod(getAccountData(25));
@@ -75,7 +73,6 @@ public class TestCustomFieldApi extends TestIntegrationBase {
Assert.assertEquals(fields.size(), 2);
}
-
@Test(groups = "slow")
public void testCustomFieldForInvoice() throws CustomFieldApiException, SubscriptionBaseApiException {
@@ -95,7 +92,6 @@ public class TestCustomFieldApi extends TestIntegrationBase {
final Invoice invoice = invoices.get(0);
Assert.assertEquals(invoice.getAccountId(), account.getId());
-
addCustomField("name1", "value1", invoice.getId(), ObjectType.INVOICE, clock.getUTCNow());
addCustomField("name2", "value2", invoice.getId(), ObjectType.INVOICE, clock.getUTCNow());
@@ -130,7 +126,5 @@ public class TestCustomFieldApi extends TestIntegrationBase {
fields.add(f);
customFieldApi.addCustomFields(fields, callContext);
assertListenerStatus();
-
}
-
}
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 bea25d3..9d1ce91 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
@@ -271,7 +271,6 @@ public class TestIntegration extends TestIntegrationBase {
DefaultEntitlement baseEntitlement = createBaseEntitlementAndCheckForCompletion(account.getId(), "bundleKey", "Shotgun", ProductCategory.BASE, BillingPeriod.MONTHLY, NextEvent.CREATE, NextEvent.INVOICE);
DefaultSubscriptionBase subscription = subscriptionDataFromSubscription(baseEntitlement.getSubscriptionBase());
-
invoiceChecker.checkInvoice(account.getId(), invoiceItemCount++, callContext, new ExpectedInvoiceItemCheck(initialCreationDate.toLocalDate(), null, InvoiceItemType.FIXED, new BigDecimal("0")));
// No end date for the trial item (fixed price of zero), and CTD should be today (i.e. when the trial started)
invoiceChecker.checkChargedThroughDate(subscription.getId(), clock.getUTCToday(), callContext);
@@ -341,7 +340,6 @@ public class TestIntegration extends TestIntegrationBase {
log.info("TEST PASSED !");
-
}
@Test(groups = {"stress"}, enabled = false)
@@ -399,10 +397,8 @@ public class TestIntegration extends TestIntegrationBase {
final BillingPeriod term = BillingPeriod.MONTHLY;
final String planSetName = PriceListSet.DEFAULT_PRICELIST_NAME;
-
final DefaultEntitlement baseEntitlement = createBaseEntitlementAndCheckForCompletion(account.getId(), "bundleKey", productName, ProductCategory.BASE, term, NextEvent.CREATE, NextEvent.INVOICE);
-
// MOVE CLOCK A LITTLE BIT-- STILL IN TRIAL
final Interval it = new Interval(clock.getUTCNow(), clock.getUTCNow().plusDays(3));
log.info("Moving clock from" + clock.getUTCNow() + " to " + clock.getUTCNow().plusDays(3));
@@ -411,11 +407,9 @@ public class TestIntegration extends TestIntegrationBase {
final DefaultEntitlement aoEntitlement1 = addAOEntitlementAndCheckForCompletion(baseEntitlement.getBundleId(), "Telescopic-Scope", ProductCategory.ADD_ON, BillingPeriod.MONTHLY,
NextEvent.CREATE, NextEvent.INVOICE, NextEvent.PAYMENT);
-
final DefaultEntitlement aoEntitlement2 = addAOEntitlementAndCheckForCompletion(baseEntitlement.getBundleId(), "Laser-Scope", ProductCategory.ADD_ON, BillingPeriod.MONTHLY,
NextEvent.CREATE, NextEvent.INVOICE, NextEvent.PAYMENT);
-
// MOVE CLOCK A LITTLE BIT MORE -- EITHER STAY IN TRIAL OR GET OUT
busHandler.pushExpectedEvent(NextEvent.PHASE);
busHandler.pushExpectedEvent(NextEvent.PHASE);
@@ -447,7 +441,6 @@ public class TestIntegration extends TestIntegrationBase {
assertListenerStatus();
}
-
@Test(groups = "slow")
public void testCreateMultipleBPWithSameExternalKey() throws Exception {
@@ -482,9 +475,7 @@ public class TestIntegration extends TestIntegrationBase {
assertEquals(newBaseEntitlement.getState(), EntitlementState.ACTIVE);
}
-
-
- @Test(groups = "slow")
+ @Test(groups = "slow")
public void testWithPauseResume() throws Exception {
final DateTime initialDate = new DateTime(2012, 2, 1, 0, 3, 42, 0, testTimeZone);
final int billingDay = 2;
@@ -539,7 +530,6 @@ public class TestIntegration extends TestIntegrationBase {
new ExpectedInvoiceItemCheck(new LocalDate(2012, 3, 4), new LocalDate(2012, 4, 2), InvoiceItemType.REPAIR_ADJ, new BigDecimal("-233.83")),
new ExpectedInvoiceItemCheck(new LocalDate(2012, 3, 4), new LocalDate(2012, 3, 4), InvoiceItemType.CBA_ADJ, new BigDecimal("233.83")));
-
entitlement = (DefaultEntitlement) entitlementApi.getEntitlementForId(baseEntitlement.getId(), callContext);
Assert.assertEquals(entitlement.getState(), EntitlementState.BLOCKED);
@@ -551,7 +541,6 @@ public class TestIntegration extends TestIntegrationBase {
entitlementApi.resume(entitlement.getBundleId(), clock.getUTCNow().toLocalDate(), callContext);
assertListenerStatus();
-
invoiceChecker.checkInvoice(account.getId(), 3, callContext,
new ExpectedInvoiceItemCheck(new LocalDate(2012, 4, 5), new LocalDate(2012, 5, 2), InvoiceItemType.RECURRING, new BigDecimal("224.96")),
new ExpectedInvoiceItemCheck(new LocalDate(2012, 4, 5), new LocalDate(2012, 4, 5), InvoiceItemType.CBA_ADJ, new BigDecimal("-224.96")));
@@ -572,10 +561,8 @@ public class TestIntegration extends TestIntegrationBase {
final String productName = "Blowdart";
final String planSetName = "DEFAULT";
-
final DefaultEntitlement baseEntitlement = createBaseEntitlementAndCheckForCompletion(account.getId(), "bundleKey", productName, ProductCategory.BASE, BillingPeriod.MONTHLY, NextEvent.CREATE, NextEvent.INVOICE);
-
List<Invoice> invoices = invoiceUserApi.getInvoicesByAccount(accountId, callContext);
assertNotNull(invoices);
assertTrue(invoices.size() == 1);
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 fe2e603..c6d30c9 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
@@ -39,6 +39,7 @@ import org.testng.annotations.BeforeMethod;
import com.ning.billing.account.api.Account;
import com.ning.billing.account.api.AccountData;
+import com.ning.billing.account.api.AccountInternalApi;
import com.ning.billing.account.api.AccountService;
import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.api.TestApiListener;
@@ -71,7 +72,7 @@ import com.ning.billing.invoice.api.InvoicePayment;
import com.ning.billing.invoice.api.InvoicePaymentApi;
import com.ning.billing.invoice.api.InvoiceService;
import com.ning.billing.invoice.api.InvoiceUserApi;
-import com.ning.billing.invoice.model.InvoicingConfiguration;
+import com.ning.billing.junction.BlockingInternalApi;
import com.ning.billing.mock.MockAccountBuilder;
import com.ning.billing.overdue.OverdueUserApi;
import com.ning.billing.overdue.wrapper.OverdueWrapperFactory;
@@ -91,8 +92,6 @@ import com.ning.billing.util.api.RecordIdApi;
import com.ning.billing.util.api.TagUserApi;
import com.ning.billing.util.cache.CacheControllerDispatcher;
import com.ning.billing.util.config.OSGIConfig;
-import com.ning.billing.account.api.AccountInternalApi;
-import com.ning.billing.junction.BlockingInternalApi;
import com.ning.billing.util.svcsapi.bus.BusService;
import com.google.common.base.Function;
@@ -109,20 +108,11 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB implemen
protected static final DateTimeZone testTimeZone = DateTimeZone.UTC;
- protected static final int NUMBER_OF_DECIMALS = InvoicingConfiguration.getNumberOfDecimals();
- protected static final int ROUNDING_METHOD = InvoicingConfiguration.getRoundingMode();
-
- protected static final BigDecimal ONE = new BigDecimal("1.0000").setScale(NUMBER_OF_DECIMALS);
- protected static final BigDecimal TWENTY_NINE = new BigDecimal("29.0000").setScale(NUMBER_OF_DECIMALS);
- protected static final BigDecimal THIRTY = new BigDecimal("30.0000").setScale(NUMBER_OF_DECIMALS);
- protected static final BigDecimal THIRTY_ONE = new BigDecimal("31.0000").setScale(NUMBER_OF_DECIMALS);
-
- protected static final Logger log = LoggerFactory.getLogger(TestIntegration.class);
+ protected static final Logger log = LoggerFactory.getLogger(TestIntegrationBase.class);
protected static long AT_LEAST_ONE_MONTH_MS = 32L * 24L * 3600L * 1000L;
protected static final long DELAY = 10000;
-
@Inject
protected Lifecycle lifecycle;
@@ -188,9 +178,8 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB implemen
protected AccountChecker accountChecker;
@Inject
- protected
- @javax.inject.Named(BeatrixModule.EXTERNAL_BUS)
- PersistentBus externalBus;
+ @Named(BeatrixModule.EXTERNAL_BUS)
+ protected PersistentBus externalBus;
@Inject
protected RefundChecker refundChecker;
@@ -246,20 +235,16 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB implemen
SetupBundleWithAssertion setupTest = new SetupBundleWithAssertion("whatever", osgiConfig, "whatever");
setupTest.cleanBundleInstallDir();
-
}
-
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
-
super.beforeMethod();
- log.info("beforeMethod callcontext classLoader = " + (Thread.currentThread().getContextClassLoader() != null ? Thread.currentThread().getContextClassLoader().toString() : "null"));
+ log.debug("beforeMethod callcontext classLoader = " + (Thread.currentThread().getContextClassLoader() != null ? Thread.currentThread().getContextClassLoader().toString() : "null"));
//Thread.currentThread().setContextClassLoader(null);
- log.warn("\n");
- log.warn("RESET TEST FRAMEWORK\n\n");
+ log.debug("RESET TEST FRAMEWORK");
controlCacheDispatcher.clearAll();
@@ -287,9 +272,9 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB implemen
busService.getBus().unregister(busHandler);
lifecycle.fireShutdownSequencePostEventUnRegistration();
- log.info("afterMethod callcontext classLoader = " + (Thread.currentThread().getContextClassLoader() != null ? Thread.currentThread().getContextClassLoader().toString() : "null"));
+ log.debug("afterMethod callcontext classLoader = " + (Thread.currentThread().getContextClassLoader() != null ? Thread.currentThread().getContextClassLoader().toString() : "null"));
- log.warn("DONE WITH TEST\n");
+ log.debug("DONE WITH TEST");
}
protected void verifyTestResult(final UUID accountId, final UUID subscriptionId,
@@ -533,13 +518,12 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB implemen
}, events);
}
-
protected DefaultEntitlement changeEntitlementAndCheckForCompletion(final Entitlement entitlement,
final String productName,
final BillingPeriod billingPeriod,
final BillingActionPolicy billingPolicy,
final NextEvent... events) {
- return (DefaultEntitlement) doCallAndCheckForCompletion(new Function<Void, Entitlement>() {
+ return (DefaultEntitlement) doCallAndCheckForCompletion(new Function<Void, Entitlement>() {
@Override
public Entitlement apply(@Nullable final Void dontcare) {
try {
@@ -569,7 +553,7 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB implemen
// Need to fetch again to get latest CTD updated from the system
Entitlement refreshedEntitlement = entitlementApi.getEntitlementForId(entitlement.getId(), callContext);
refreshedEntitlement = refreshedEntitlement.cancelEntitlementWithDate(requestedDate.toLocalDate(), false, callContext);
- return refreshedEntitlement;
+ return refreshedEntitlement;
} catch (EntitlementApiException e) {
fail(e.getMessage());
return null;
@@ -609,17 +593,15 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB implemen
}
private <T> T doCallAndCheckForCompletion(Function<Void, T> f, final NextEvent... events) {
-
Joiner joiner = Joiner.on(", ");
- log.info(" ************ STARTING BUS HANDLER CHECK : {} ********************", joiner.join(events));
+ log.debug(" ************ STARTING BUS HANDLER CHECK : {} ********************", joiner.join(events));
busHandler.pushExpectedEvents(events);
final T result = f.apply(null);
assertListenerStatus();
-
- log.info(" ************ DONE WITH BUS HANDLER CHECK ********************");
+ log.debug(" ************ DONE WITH BUS HANDLER CHECK ********************");
return result;
}
}
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationInvoiceWithRepairLogic.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationInvoiceWithRepairLogic.java
index d815446..2332a52 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationInvoiceWithRepairLogic.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationInvoiceWithRepairLogic.java
@@ -50,14 +50,12 @@ import com.google.common.collect.ImmutableList;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
public class TestIntegrationInvoiceWithRepairLogic extends TestIntegrationBase {
@Inject
private DefaultInvoiceGeneratorWithSwitchRepairLogic invoiceGenerator;
-
@AfterMethod(groups = "slow")
public void afterMethod() throws Exception {
super.afterMethod();
@@ -78,7 +76,6 @@ public class TestIntegrationInvoiceWithRepairLogic extends TestIntegrationBase {
final BillingPeriod term = BillingPeriod.MONTHLY;
final String pricelistName = PriceListSet.DEFAULT_PRICELIST_NAME;
-
//
// CREATE SUBSCRIPTION AND EXPECT BOTH EVENTS: NextEvent.CREATE NextEvent.INVOICE
//
@@ -426,7 +423,6 @@ public class TestIntegrationInvoiceWithRepairLogic extends TestIntegrationBase {
assertEquals(bpEntitlement.getSubscriptionBase().getCurrentPlan().getBillingPeriod(), BillingPeriod.MONTHLY);
-
invoices = invoiceUserApi.getInvoicesByAccount(account.getId(), callContext);
assertEquals(invoices.size(), 3);
@@ -540,7 +536,6 @@ public class TestIntegrationInvoiceWithRepairLogic extends TestIntegrationBase {
invoices = invoiceUserApi.getInvoicesByAccount(account.getId(), callContext);
assertEquals(invoices.size(), 3);
-
toBeChecked = ImmutableList.<ExpectedInvoiceItemCheck>of(
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 1), new LocalDate(2013, 5, 1), InvoiceItemType.RECURRING, new BigDecimal("2399.95")),
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 1), new LocalDate(2013, 5, 1), InvoiceItemType.REPAIR_ADJ, new BigDecimal("-2399.95")),
@@ -595,7 +590,6 @@ public class TestIntegrationInvoiceWithRepairLogic extends TestIntegrationBase {
invoiceChecker.checkInvoice(invoices.get(4).getId(), callContext, toBeChecked);
}
-
@Test(groups = "slow")
public void testInvoiceLogicWithFullRepairFollowedByPartialRepairWithItemAdjustment() throws Exception {
@@ -640,7 +634,6 @@ public class TestIntegrationInvoiceWithRepairLogic extends TestIntegrationBase {
final ExpectedPaymentCheck expectedPaymentCheck = new ExpectedPaymentCheck(clock.getUTCNow().toLocalDate(), new BigDecimal("2399.95"), PaymentStatus.SUCCESS, invoice1.getId(), Currency.USD);
final Payment payment1 = payments.get(0);
-
final Map<UUID, BigDecimal> iias = new HashMap<UUID, BigDecimal>();
iias.put(invoice1.getInvoiceItems().get(0).getId(), new BigDecimal("10.00"));
busHandler.pushExpectedEvents(NextEvent.INVOICE_ADJUSTMENT);
@@ -650,14 +643,12 @@ public class TestIntegrationInvoiceWithRepairLogic extends TestIntegrationBase {
invoices = invoiceUserApi.getInvoicesByAccount(account.getId(), callContext);
assertEquals(invoices.size(), 2);
-
toBeChecked = ImmutableList.<ExpectedInvoiceItemCheck>of(
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 1), new LocalDate(2013, 5, 1), InvoiceItemType.RECURRING, new BigDecimal("2399.95")),
// TODO SETPH the ITEM_ADJ seems to be created with the callcontext getCreatedDate()
new ExpectedInvoiceItemCheck(callContext.getCreatedDate().toLocalDate(), callContext.getCreatedDate().toLocalDate(), InvoiceItemType.ITEM_ADJ, new BigDecimal("-10.00")));
invoiceChecker.checkInvoice(invoices.get(1).getId(), callContext, toBeChecked);
-
//
// FORCE AN IMMEDIATE CHANGE OF THE BILLING PERIOD
//
@@ -666,7 +657,6 @@ public class TestIntegrationInvoiceWithRepairLogic extends TestIntegrationBase {
invoices = invoiceUserApi.getInvoicesByAccount(account.getId(), callContext);
assertEquals(invoices.size(), 3);
-
toBeChecked = ImmutableList.<ExpectedInvoiceItemCheck>of(
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 1), new LocalDate(2013, 5, 1), InvoiceItemType.RECURRING, new BigDecimal("2399.95")),
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 1), new LocalDate(2013, 5, 1), InvoiceItemType.REPAIR_ADJ, new BigDecimal("-2389.95")),
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java
index 0744c47..80fbf5a 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java
@@ -28,12 +28,10 @@ import com.ning.billing.ObjectType;
import com.ning.billing.account.api.Account;
import com.ning.billing.api.TestApiListener.NextEvent;
import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.PriceListSet;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.DefaultEntitlement;
import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceUserApi;
-import com.ning.billing.subscription.api.user.SubscriptionBaseBundle;
import com.ning.billing.util.api.TagApiException;
import com.ning.billing.util.api.TagDefinitionApiException;
import com.ning.billing.util.api.TagUserApi;
@@ -44,7 +42,6 @@ import com.google.inject.Inject;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
public class TestIntegrationWithAutoInvoiceOffTag extends TestIntegrationBase {
@@ -55,23 +52,20 @@ public class TestIntegrationWithAutoInvoiceOffTag extends TestIntegrationBase {
private TagUserApi tagApi;
private Account account;
- private SubscriptionBaseBundle bundle;
private String productName;
private BillingPeriod term;
- private String planSetName;
@Override
- @BeforeMethod(groups = {"slow"})
+ @BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
super.beforeMethod();
account = createAccountWithNonOsgiPaymentMethod(getAccountData(25));
assertNotNull(account);
productName = "Shotgun";
term = BillingPeriod.MONTHLY;
- planSetName = PriceListSet.DEFAULT_PRICELIST_NAME;
}
- @Test(groups = {"slow"}, enabled = true)
+ @Test(groups = "slow")
public void testAutoInvoiceOffAccount() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
add_AUTO_INVOICING_OFF_Tag(account.getId(), ObjectType.ACCOUNT);
@@ -104,7 +98,7 @@ public class TestIntegrationWithAutoInvoiceOffTag extends TestIntegrationBase {
assertEquals(invoices.size(), 1);
}
- @Test(groups = {"slow"}, enabled = true)
+ @Test(groups = "slow")
public void testAutoInvoiceOffSingleSubscription() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
@@ -115,7 +109,6 @@ public class TestIntegrationWithAutoInvoiceOffTag extends TestIntegrationBase {
Collection<Invoice> invoices = invoiceApi.getInvoicesByAccount(account.getId(), callContext);
assertEquals(invoices.size(), 1); // first invoice is generated immediately after creation can't reliably stop it
-
add_AUTO_INVOICING_OFF_Tag(bpEntitlement.getSubscriptionBase().getBundleId(), ObjectType.BUNDLE);
busHandler.pushExpectedEvents(NextEvent.PHASE);
@@ -124,11 +117,9 @@ public class TestIntegrationWithAutoInvoiceOffTag extends TestIntegrationBase {
invoices = invoiceApi.getInvoicesByAccount(account.getId(), callContext);
assertEquals(invoices.size(), 1); //No additional invoices generated
-
}
-
- @Test(groups = {"slow"}, enabled = true)
+ @Test(groups = "slow")
public void testAutoInvoiceOffMultipleSubscriptions() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoPayOff.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoPayOff.java
index b01f4c4..06bae39 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoPayOff.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoPayOff.java
@@ -50,7 +50,6 @@ import static org.testng.Assert.assertTrue;
public class TestIntegrationWithAutoPayOff extends TestIntegrationBase {
-
@Inject
private InvoiceUserApi invoiceApi;
@@ -60,16 +59,14 @@ public class TestIntegrationWithAutoPayOff extends TestIntegrationBase {
@Inject
private PaymentConfig paymentConfig;
-
private Account account;
private SubscriptionBaseBundle bundle;
private String productName;
private BillingPeriod term;
private String planSetName;
-
@Override
- @BeforeMethod(groups = {"slow"})
+ @BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
super.beforeMethod();
account = createAccountWithNonOsgiPaymentMethod(getAccountData(25));
@@ -79,12 +76,11 @@ public class TestIntegrationWithAutoPayOff extends TestIntegrationBase {
planSetName = PriceListSet.DEFAULT_PRICELIST_NAME;
}
- @Test(groups = {"slow"}, enabled = true)
+ @Test(groups = "slow")
public void testAutoPayOff() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
add_AUTO_PAY_OFF_Tag(account.getId(), ObjectType.ACCOUNT);
-
final DefaultEntitlement bpEntitlement = createBaseEntitlementAndCheckForCompletion(account.getId(), "externalKey", productName, ProductCategory.BASE, term, NextEvent.CREATE, NextEvent.INVOICE);
assertNotNull(bpEntitlement);
@@ -123,8 +119,7 @@ public class TestIntegrationWithAutoPayOff extends TestIntegrationBase {
assertListenerStatus();
}
-
- @Test(groups = {"slow"}, enabled = true)
+ @Test(groups = "slow")
public void testAutoPayOffWithPaymentFailure() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
add_AUTO_PAY_OFF_Tag(account.getId(), ObjectType.ACCOUNT);
@@ -185,8 +180,7 @@ public class TestIntegrationWithAutoPayOff extends TestIntegrationBase {
}
-
- @Test(groups = {"slow"}, enabled = true)
+ @Test(groups = "slow")
public void testAutoPayOffWithPaymentFailureOn_AUTO_PAY_OFF() throws Exception {
clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
add_AUTO_PAY_OFF_Tag(account.getId(), ObjectType.ACCOUNT);
@@ -219,7 +213,6 @@ public class TestIntegrationWithAutoPayOff extends TestIntegrationBase {
assertListenerStatus();
addDelayBceauseOfLackOfCorrectSynchro();
-
invoices = invoiceApi.getInvoicesByAccount(account.getId(), callContext);
assertEquals(invoices.size(), 2);
for (Invoice cur : invoices) {
@@ -260,7 +253,6 @@ public class TestIntegrationWithAutoPayOff extends TestIntegrationBase {
clock.addDays(nbDaysBeforeRetry + 1);
assertListenerStatus();
-
invoices = invoiceApi.getInvoicesByAccount(account.getId(), callContext);
for (Invoice cur : invoices) {
if (cur.getChargedAmount().compareTo(BigDecimal.ZERO) == 0) {
@@ -273,7 +265,6 @@ public class TestIntegrationWithAutoPayOff extends TestIntegrationBase {
}
-
private void add_AUTO_PAY_OFF_Tag(final UUID id, final ObjectType type) throws TagDefinitionApiException, TagApiException {
busHandler.pushExpectedEvent(NextEvent.TAG);
tagApi.addTag(id, type, ControlTagType.AUTO_PAY_OFF.getId(), callContext);
@@ -289,7 +280,6 @@ public class TestIntegrationWithAutoPayOff extends TestIntegrationBase {
assertListenerStatus();
}
-
private void addDelayBceauseOfLackOfCorrectSynchro() {
// TODO When removing the tag, the payment system will schedule retries for payments that are in non terminal state
// The issue is that at this point we know the event went on the bus but we don't know if the listener in payment completed
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestPaymentRefund.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestPaymentRefund.java
index d212691..c33eca2 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestPaymentRefund.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestPaymentRefund.java
@@ -121,7 +121,6 @@ public class TestPaymentRefund extends TestIntegrationBase {
new LocalDate(2012, 3, 31), InvoiceItemType.RECURRING, new BigDecimal("233.83")));
payment = paymentChecker.checkPayment(account.getId(), 1, callContext, new ExpectedPaymentCheck(new LocalDate(2012, 3, 2), new BigDecimal("233.83"), PaymentStatus.SUCCESS, invoice.getId(), Currency.USD));
-
// Filter and extract UUId from all Recuring invoices
invoiceItems = new HashSet<UUID>(Collections2.transform(Collections2.filter(invoice.getInvoiceItems(), new Predicate<InvoiceItem>() {
@Override
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestPublicBus.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestPublicBus.java
index fca53cb..7e62cb7 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestPublicBus.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestPublicBus.java
@@ -37,13 +37,11 @@ import com.google.common.eventbus.Subscribe;
import static com.jayway.awaitility.Awaitility.await;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
public class TestPublicBus extends TestIntegrationBase {
private PublicListener publicListener;
-
private AtomicInteger externalBusCount;
public class PublicListener {
@@ -63,8 +61,7 @@ public class TestPublicBus extends TestIntegrationBase {
publicListener = new PublicListener();
- log.warn("\n");
- log.warn("RESET TEST FRAMEWORK\n\n");
+ log.debug("RESET TEST FRAMEWORK");
clock.resetDeltaFromReality();
resetTestListenerStatus();
@@ -79,7 +76,6 @@ public class TestPublicBus extends TestIntegrationBase {
this.externalBusCount = new AtomicInteger(0);
}
-
@Test(groups = "{slow}")
public void testSimple() throws Exception {
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestRepairIntegration.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestRepairIntegration.java
index 8c65150..36b1e95 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestRepairIntegration.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestRepairIntegration.java
@@ -35,30 +35,28 @@ import com.ning.billing.catalog.api.PlanPhaseSpecifier;
import com.ning.billing.catalog.api.PriceListSet;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.DefaultEntitlement;
+import com.ning.billing.entitlement.api.Entitlement.EntitlementState;
import com.ning.billing.subscription.api.SubscriptionBaseTransitionType;
import com.ning.billing.subscription.api.timeline.BundleBaseTimeline;
import com.ning.billing.subscription.api.timeline.SubscriptionBaseTimeline;
-import com.ning.billing.subscription.api.user.DefaultSubscriptionBase;
-import com.ning.billing.subscription.api.user.SubscriptionEvents;
import com.ning.billing.subscription.api.timeline.SubscriptionBaseTimeline.DeletedEvent;
import com.ning.billing.subscription.api.timeline.SubscriptionBaseTimeline.ExistingEvent;
import com.ning.billing.subscription.api.timeline.SubscriptionBaseTimeline.NewEvent;
-import com.ning.billing.entitlement.api.Entitlement.EntitlementState;
+import com.ning.billing.subscription.api.user.DefaultSubscriptionBase;
+import com.ning.billing.subscription.api.user.SubscriptionEvents;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
public class TestRepairIntegration extends TestIntegrationBase {
-
- @Test(groups = {"slow"}, enabled = false)
+ @Test(groups = "slow", enabled = false)
public void testRepairChangeBPWithAddonIncludedIntrial() throws Exception {
log.info("Starting testRepairChangeBPWithAddonIncludedIntrial");
testRepairChangeBPWithAddonIncluded(true);
}
- @Test(groups = {"slow"}, enabled = false)
+ @Test(groups = "slow", enabled = false)
public void testRepairChangeBPWithAddonIncludedOutOfTrial() throws Exception {
log.info("Starting testRepairChangeBPWithAddonIncludedOutOfTrial");
testRepairChangeBPWithAddonIncluded(false);
@@ -82,8 +80,8 @@ public class TestRepairIntegration extends TestIntegrationBase {
Interval it = new Interval(clock.getUTCNow(), clock.getUTCNow().plusDays(3));
clock.addDeltaFromReality(it.toDurationMillis());
- final DefaultEntitlement aoEntitlement1 = addAOEntitlementAndCheckForCompletion(bpEntitlement.getBundleId(), "Telescopic-Scope", ProductCategory.ADD_ON, BillingPeriod.MONTHLY,NextEvent.CREATE, NextEvent.INVOICE, NextEvent.PAYMENT);
- final DefaultEntitlement aoEntitlement2 = addAOEntitlementAndCheckForCompletion(bpEntitlement.getBundleId(), "Laser-Scope", ProductCategory.ADD_ON, BillingPeriod.MONTHLY,NextEvent.CREATE, NextEvent.INVOICE, NextEvent.PAYMENT);
+ final DefaultEntitlement aoEntitlement1 = addAOEntitlementAndCheckForCompletion(bpEntitlement.getBundleId(), "Telescopic-Scope", ProductCategory.ADD_ON, BillingPeriod.MONTHLY, NextEvent.CREATE, NextEvent.INVOICE, NextEvent.PAYMENT);
+ final DefaultEntitlement aoEntitlement2 = addAOEntitlementAndCheckForCompletion(bpEntitlement.getBundleId(), "Laser-Scope", ProductCategory.ADD_ON, BillingPeriod.MONTHLY, NextEvent.CREATE, NextEvent.INVOICE, NextEvent.PAYMENT);
// MOVE CLOCK A LITTLE BIT MORE -- EITHER STAY IN TRIAL OR GET OUT
final int duration = inTrial ? 3 : 35;
@@ -133,7 +131,6 @@ public class TestRepairIntegration extends TestIntegrationBase {
repairApi.repairBundle(bundleRepair, false, callContext);
assertListenerStatus();
-
final DefaultSubscriptionBase newAoSubscription = (DefaultSubscriptionBase) aoEntitlement1.getSubscriptionBase();
assertEquals(newAoSubscription.getState(), EntitlementState.CANCELLED);
assertEquals(newAoSubscription.getAllTransitions().size(), 2);
@@ -144,7 +141,6 @@ public class TestRepairIntegration extends TestIntegrationBase {
assertEquals(newAoSubscription2.getAllTransitions().size(), 2);
assertEquals(newAoSubscription2.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1);
-
final DefaultSubscriptionBase newBaseSubscription = (DefaultSubscriptionBase) bpEntitlement.getSubscriptionBase();
assertEquals(newBaseSubscription.getState(), EntitlementState.ACTIVE);
assertEquals(newBaseSubscription.getAllTransitions().size(), 3);
@@ -193,7 +189,6 @@ public class TestRepairIntegration extends TestIntegrationBase {
};
}
-
protected BundleBaseTimeline createBundleRepair(final UUID bundleId, final String viewId, final List<SubscriptionBaseTimeline> subscriptionRepair) {
return new BundleBaseTimeline() {
@Override
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestSubscription.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestSubscription.java
index e7cca7e..c99bca8 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestSubscription.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestSubscription.java
@@ -38,7 +38,6 @@ import com.google.common.collect.ImmutableList;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
public class TestSubscription extends TestIntegrationBase {
@@ -94,7 +93,6 @@ public class TestSubscription extends TestIntegrationBase {
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 11), new LocalDate(2012, 5, 11), InvoiceItemType.CBA_ADJ, new BigDecimal("-169.32")));
invoiceChecker.checkInvoice(invoices.get(2).getId(), callContext, toBeChecked);
-
//
// FORCE ANOTHER CHANGE
//
@@ -103,7 +101,6 @@ public class TestSubscription extends TestIntegrationBase {
invoices = invoiceUserApi.getInvoicesByAccount(account.getId(), callContext);
assertEquals(invoices.size(), 4);
-
toBeChecked = ImmutableList.<ExpectedInvoiceItemCheck>of(
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 11), new LocalDate(2012, 6, 1), InvoiceItemType.RECURRING, new BigDecimal("169.32")),
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 11), new LocalDate(2012, 5, 11), InvoiceItemType.CBA_ADJ, new BigDecimal("-169.32")),
@@ -111,13 +108,11 @@ public class TestSubscription extends TestIntegrationBase {
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 11), new LocalDate(2012, 5, 11), InvoiceItemType.CBA_ADJ, new BigDecimal("169.32")));
invoiceChecker.checkInvoice(invoices.get(2).getId(), callContext, toBeChecked);
-
toBeChecked = ImmutableList.<ExpectedInvoiceItemCheck>of(
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 11), new LocalDate(2012, 6, 1), InvoiceItemType.RECURRING, new BigDecimal("137.76")),
new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 11), new LocalDate(2012, 5, 11), InvoiceItemType.CBA_ADJ, new BigDecimal("-137.76")));
invoiceChecker.checkInvoice(invoices.get(3).getId(), callContext, toBeChecked);
-
}
}
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestTagApi.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestTagApi.java
index 690e132..6fe6a54 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestTagApi.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestTagApi.java
@@ -36,7 +36,6 @@ import com.ning.billing.util.tag.Tag;
import com.ning.billing.util.tag.TagDefinition;
import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
public class TestTagApi extends TestIntegrationBase {
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/lifecycle/TestLifecycle.java b/beatrix/src/test/java/com/ning/billing/beatrix/lifecycle/TestLifecycle.java
index 6f2ee55..75c1229 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/lifecycle/TestLifecycle.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/lifecycle/TestLifecycle.java
@@ -34,6 +34,7 @@ import com.google.inject.Injector;
import com.google.inject.Stage;
public class TestLifecycle extends BeatrixTestSuite {
+
private static final Logger log = LoggerFactory.getLogger(TestLifecycle.class);
private Service1 s1;
@@ -42,6 +43,7 @@ public class TestLifecycle extends BeatrixTestSuite {
private DefaultLifecycle lifecycle;
public static class ServiceBase {
+
private int count = 0;
public ServiceBase() {
@@ -66,6 +68,7 @@ public class TestLifecycle extends BeatrixTestSuite {
}
public static class Service1 extends ServiceBase implements TestService1Interface {
+
@LifecycleHandlerType(LifecycleLevel.INIT_BUS)
public void initBus() {
log.info("Service1 : got INIT_BUS");
@@ -95,6 +98,7 @@ public class TestLifecycle extends BeatrixTestSuite {
}
public static class Service2 extends ServiceBase implements TestService2Interface {
+
@LifecycleHandlerType(LifecycleLevel.LOAD_CATALOG)
public void loadCatalog() {
log.info("Service2 : got LOAD_CATALOG");
@@ -157,6 +161,7 @@ public class TestLifecycle extends BeatrixTestSuite {
}
public static class LifecycleNoWarn extends DefaultLifecycle {
+
@Inject
public LifecycleNoWarn(final Injector injector) {
super(injector);
@@ -168,6 +173,7 @@ public class TestLifecycle extends BeatrixTestSuite {
}
public static class TestLifecycleModule extends AbstractModule {
+
@Override
protected void configure() {
bind(DefaultLifecycle.class).to(LifecycleNoWarn.class).asEagerSingleton();
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/osgi/SetupBundleWithAssertion.java b/beatrix/src/test/java/com/ning/billing/beatrix/osgi/SetupBundleWithAssertion.java
index 4ccae09..14c5856 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/osgi/SetupBundleWithAssertion.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/osgi/SetupBundleWithAssertion.java
@@ -57,7 +57,6 @@ public class SetupBundleWithAssertion {
this.rootInstallDir = new File(config.getRootInstallationDir());
}
-
public void setupJrubyBundle() {
try {
@@ -67,7 +66,6 @@ public class SetupBundleWithAssertion {
final URL resourceUrl = Resources.getResource(bundleName);
final File unzippedRubyPlugin = unGzip(new File(resourceUrl.getFile()), rootInstallDir);
-
final StringBuilder tmp = new StringBuilder(rootInstallDir.getAbsolutePath());
tmp.append("/plugins/")
.append(PluginLanguage.RUBY.toString().toLowerCase());
@@ -155,7 +153,6 @@ public class SetupBundleWithAssertion {
}
}
-
private void installJrubyJar() throws IOException {
final String resourceName = JRUBY_BUNDLE_RESOURCE + "-" + killbillVersion + ".jar";
@@ -171,7 +168,6 @@ public class SetupBundleWithAssertion {
ByteStreams.copy(new FileInputStream(rubyJarInput), new FileOutputStream(rubyJarDestination));
}
-
private PluginJavaConfig extractJavaBundleTestResource() {
final String resourceName = bundleName + "-" + killbillVersion + "-jar-with-dependencies.jar";
@@ -235,7 +231,6 @@ public class SetupBundleWithAssertion {
};
}
-
private static void unTar(final File inputFile, final File outputDir) throws IOException, ArchiveException {
InputStream is = null;
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/util/AuditChecker.java b/beatrix/src/test/java/com/ning/billing/beatrix/util/AuditChecker.java
index f49a5c3..1099bf6 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/util/AuditChecker.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/util/AuditChecker.java
@@ -35,15 +35,15 @@ import com.ning.billing.account.dao.AccountSqlDao;
import com.ning.billing.entitlement.api.SubscriptionApi;
import com.ning.billing.entitlement.api.SubscriptionApiException;
import com.ning.billing.entitlement.api.SubscriptionBundle;
-import com.ning.billing.subscription.engine.dao.BundleSqlDao;
-import com.ning.billing.subscription.engine.dao.SubscriptionEventSqlDao;
-import com.ning.billing.subscription.engine.dao.SubscriptionSqlDao;
import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.invoice.dao.InvoiceItemSqlDao;
import com.ning.billing.invoice.dao.InvoiceSqlDao;
import com.ning.billing.payment.api.Payment;
import com.ning.billing.payment.dao.PaymentSqlDao;
+import com.ning.billing.subscription.engine.dao.BundleSqlDao;
+import com.ning.billing.subscription.engine.dao.SubscriptionEventSqlDao;
+import com.ning.billing.subscription.engine.dao.SubscriptionSqlDao;
import com.ning.billing.util.api.AuditLevel;
import com.ning.billing.util.api.AuditUserApi;
import com.ning.billing.util.audit.AuditLog;
@@ -59,7 +59,6 @@ import com.ning.billing.util.entity.Entity;
import com.ning.billing.util.entity.dao.EntityModelDao;
import com.ning.billing.util.entity.dao.EntitySqlDao;
-import com.google.common.collect.Lists;
import com.google.inject.Inject;
public class AuditChecker {
@@ -72,7 +71,6 @@ public class AuditChecker {
private final InternalCallContextFactory callContextFactory;
private final NonEntityDao nonEntityDao;
-
@Inject
public AuditChecker(final AuditUserApi auditUserApi, final IDBI dbi, final SubscriptionApi subscriptionApi, final InternalCallContextFactory callContextFactory, final NonEntityDao nonEntityDao) {
this.auditUserApi = auditUserApi;
@@ -82,7 +80,6 @@ public class AuditChecker {
this.nonEntityDao = nonEntityDao;
}
-
/**
* ******************************************** ACCOUNT *******************************************************
*/
@@ -93,7 +90,6 @@ public class AuditChecker {
checkAuditLog(ChangeType.UPDATE, context, result.getAccountAuditLogs().get(1), account.getId(), AccountSqlDao.class, true, true);
}
-
public void checkPaymentCreated(final Payment payment, final CallContext context) {
AuditLogsForPayments result = getAuditLogsForPayment(payment, context);
Assert.assertEquals(result.getPaymentsAuditLogs().size(), 1);
@@ -107,7 +103,6 @@ public class AuditChecker {
* ******************************************** BUNDLE *******************************************************
*/
-
// Pass the call callcontext used to create the bundle
public void checkBundleCreated(final UUID bundleId, final CallContext context) {
final AuditLogsForBundles auditLogsForBundles = getAuditLogsForBundle(bundleId, context);
@@ -153,8 +148,6 @@ public class AuditChecker {
checkAuditLog(ChangeType.INSERT, context, auditLogsForBundles.getSubscriptionEventsAuditLogs().get(subscriptionEventId).get(0), subscriptionEventId, SubscriptionEventSqlDao.class, false, true);
}
-
-
// Pass the call callcontext used to update the subscription event
public void checkSubscriptionEventUpdated(final UUID bundleId, final UUID subscriptionEventId, final CallContext context) {
final AuditLogsForBundles auditLogsForBundles = getAuditLogsForBundle(bundleId, context);
@@ -162,7 +155,6 @@ public class AuditChecker {
checkAuditLog(ChangeType.UPDATE, context, auditLogsForBundles.getSubscriptionEventsAuditLogs().get(subscriptionEventId).get(1), subscriptionEventId, SubscriptionEventSqlDao.class, false, true);
}
-
/**
* ******************************************** PAYMENT *******************************************************
*/
@@ -191,7 +183,6 @@ public class AuditChecker {
}
}
-
private AuditLogsForBundles getAuditLogsForBundle(final UUID bundleId, final CallContext context) {
try {
final SubscriptionBundle bundle = subscriptionApi.getSubscriptionBundle(bundleId, context);
@@ -206,12 +197,10 @@ public class AuditChecker {
return auditUserApi.getAuditLogsForInvoices(Collections.singletonList(invoice), AuditLevel.FULL, context);
}
-
private void checkAuditLog(final ChangeType insert, final AuditLog auditLog) {
checkAuditLog(insert, null, auditLog, null, EntitySqlDao.class, false, false);
}
-
private <T extends EntitySqlDao<M, E>, M extends EntityModelDao<E>, E extends Entity> void checkAuditLog(final ChangeType changeType, @Nullable final CallContext context, final AuditLog auditLog, final UUID entityId, Class<T> sqlDao,
boolean useHistory, boolean checkContext) {
Assert.assertEquals(auditLog.getChangeType(), changeType);
@@ -228,10 +217,8 @@ public class AuditChecker {
}
-
private <T extends EntitySqlDao<M, E>, M extends EntityModelDao<E>, E extends Entity> M extractEntityModelFromEntityWithTargetRecordId(final UUID entityId, final UUID auditLogId, final Class<T> sqlDao, final CallContext context, final boolean useHistory) {
-
final M modelDaoThatGivesMeTableName = dbi.onDemand(sqlDao).getById(entityId.toString(), callContextFactory.createInternalCallContext(context));
Integer targetRecordId = dbi.withHandle(new HandleCallback<Integer>() {
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/util/InvoiceChecker.java b/beatrix/src/test/java/com/ning/billing/beatrix/util/InvoiceChecker.java
index 863a1af..d36682c 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/util/InvoiceChecker.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/util/InvoiceChecker.java
@@ -152,7 +152,6 @@ public class InvoiceChecker {
private final InvoiceItemType type;
private final BigDecimal Amount;
-
public ExpectedInvoiceItemCheck(final InvoiceItemType type, final BigDecimal amount) {
this.checkDates = false;
this.type = type;
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/util/PaymentChecker.java b/beatrix/src/test/java/com/ning/billing/beatrix/util/PaymentChecker.java
index 2763aed..ec0d05a 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/util/PaymentChecker.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/util/PaymentChecker.java
@@ -16,7 +16,6 @@
package com.ning.billing.beatrix.util;
-
import java.math.BigDecimal;
import java.util.List;
import java.util.UUID;
@@ -39,7 +38,6 @@ public class PaymentChecker {
private static final Logger log = LoggerFactory.getLogger(PaymentChecker.class);
-
private final PaymentApi paymentApi;
private final AuditChecker auditChecker;
@@ -64,7 +62,7 @@ public class PaymentChecker {
private void checkPayment(final UUID accountId, final Payment payment, final CallContext context, final ExpectedPaymentCheck expected) {
Assert.assertEquals(payment.getAccountId(), accountId);
Assert.assertTrue(payment.getAmount().compareTo(expected.getAmount()) == 0);
- Assert.assertEquals(payment.getPaymentStatus(),expected.getStatus());
+ Assert.assertEquals(payment.getPaymentStatus(), expected.getStatus());
Assert.assertEquals(payment.getInvoiceId(), expected.getInvoiceId());
Assert.assertEquals(payment.getCurrency(), expected.getCurrency());
auditChecker.checkPaymentCreated(payment, context);
@@ -73,7 +71,7 @@ public class PaymentChecker {
private void checkPaymentNoAuditForRuntimeException(final UUID accountId, final Payment payment, final CallContext context, final ExpectedPaymentCheck expected) {
Assert.assertEquals(payment.getAccountId(), accountId);
Assert.assertTrue(payment.getAmount().compareTo(expected.getAmount()) == 0);
- Assert.assertEquals(payment.getPaymentStatus(),expected.getStatus());
+ Assert.assertEquals(payment.getPaymentStatus(), expected.getStatus());
Assert.assertEquals(payment.getInvoiceId(), expected.getInvoiceId());
Assert.assertEquals(payment.getCurrency(), expected.getCurrency());
}
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/util/RefundChecker.java b/beatrix/src/test/java/com/ning/billing/beatrix/util/RefundChecker.java
index 93ee40c..28942e6 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/util/RefundChecker.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/util/RefundChecker.java
@@ -30,8 +30,8 @@ import org.testng.Assert;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.invoice.api.InvoicePayment;
-import com.ning.billing.invoice.api.InvoicePaymentType;
import com.ning.billing.invoice.api.InvoicePaymentApi;
+import com.ning.billing.invoice.api.InvoicePaymentType;
import com.ning.billing.invoice.api.InvoiceUserApi;
import com.ning.billing.payment.api.PaymentApi;
import com.ning.billing.payment.api.PaymentApiException;
@@ -46,7 +46,6 @@ public class RefundChecker {
private static final Logger log = LoggerFactory.getLogger(RefundChecker.class);
-
private final PaymentApi paymentApi;
private final InvoicePaymentApi invoicePaymentApi;
private final AuditChecker auditChecker;
@@ -60,12 +59,12 @@ public class RefundChecker {
this.invoiceUserApi = invoiceApi;
}
- public Refund checkRefund(final UUID paymentId, final CallContext context, ExpectedRefundCheck expected) throws PaymentApiException {
+ public Refund checkRefund(final UUID paymentId, final CallContext context, ExpectedRefundCheck expected) throws PaymentApiException {
final List<Refund> refunds = paymentApi.getPaymentRefunds(paymentId, context);
Assert.assertEquals(refunds.size(), 1);
- final InvoicePayment refundInvoicePayment = getInvoicePaymentEntry(paymentId, InvoicePaymentType.REFUND , context);
+ final InvoicePayment refundInvoicePayment = getInvoicePaymentEntry(paymentId, InvoicePaymentType.REFUND, context);
final InvoicePayment invoicePayment = getInvoicePaymentEntry(paymentId, InvoicePaymentType.ATTEMPT, context);
final Refund refund = refunds.get(0);
@@ -84,9 +83,8 @@ public class RefundChecker {
return refund;
}
-
private InvoicePayment getInvoicePaymentEntry(final UUID paymentId, final InvoicePaymentType type, final CallContext context) {
- final List<InvoicePayment> invoicePayments = invoicePaymentApi.getInvoicePayments(paymentId, context);
+ final List<InvoicePayment> invoicePayments = invoicePaymentApi.getInvoicePayments(paymentId, context);
final Collection<InvoicePayment> refundInvoicePayments = Collections2.filter(invoicePayments, new Predicate<InvoicePayment>() {
@Override
public boolean apply(@Nullable final InvoicePayment invoicePayment) {
@@ -97,7 +95,6 @@ public class RefundChecker {
return refundInvoicePayments.iterator().next();
}
-
public static class ExpectedRefundCheck {
private final UUID paymentId;
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/util/SubscriptionChecker.java b/beatrix/src/test/java/com/ning/billing/beatrix/util/SubscriptionChecker.java
index 43b3e57..2dcc679 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/util/SubscriptionChecker.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/util/SubscriptionChecker.java
@@ -25,18 +25,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
+import com.ning.billing.callcontext.InternalCallContext;
+import com.ning.billing.callcontext.InternalTenantContext;
import com.ning.billing.subscription.api.SubscriptionBase;
+import com.ning.billing.subscription.api.SubscriptionBaseInternalApi;
import com.ning.billing.subscription.api.user.SubscriptionBaseApiException;
import com.ning.billing.subscription.api.user.SubscriptionBaseBundle;
import com.ning.billing.subscription.api.user.SubscriptionBaseTransition;
import com.ning.billing.subscription.api.user.SubscriptionBaseTransitionData;
-import com.ning.billing.callcontext.InternalCallContext;
-import com.ning.billing.callcontext.InternalTenantContext;
-import com.ning.billing.subscription.api.SubscriptionBaseInternalApi;
public class SubscriptionChecker {
-
private static final Logger log = LoggerFactory.getLogger(SubscriptionChecker.class);
private final SubscriptionBaseInternalApi subscriptionApi;
beatrix/src/test/resources/catalogSample.xml 1723(+862 -861)
diff --git a/beatrix/src/test/resources/catalogSample.xml b/beatrix/src/test/resources/catalogSample.xml
index 9cdf94a..8aa1247 100644
--- a/beatrix/src/test/resources/catalogSample.xml
+++ b/beatrix/src/test/resources/catalogSample.xml
@@ -24,872 +24,873 @@
and a one off (refurbish-maintenance) Phan with more than 2 phase (gunclub
discount plans) Use Cases to do: Tiered Add On Riskfree period -->
<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="CatalogSchema.xsd ">
+ xsi:noNamespaceSchemaLocation="CatalogSchema.xsd ">
- <effectiveDate>2011-01-01T00:00:00+00:00</effectiveDate>
- <catalogName>Firearms</catalogName>
+ <effectiveDate>2011-01-01T00:00:00+00:00</effectiveDate>
+ <catalogName>Firearms</catalogName>
- <currencies>
- <currency>USD</currency>
- <currency>EUR</currency>
- <currency>GBP</currency>
- </currencies>
+ <currencies>
+ <currency>USD</currency>
+ <currency>EUR</currency>
+ <currency>GBP</currency>
+ </currencies>
- <products>
- <product name="Blowdart">
- <category>BASE</category>
- </product>
- <product name="Pistol">
- <category>BASE</category>
- </product>
- <product name="Shotgun">
- <category>BASE</category>
- <available>
- <addonProduct>Telescopic-Scope</addonProduct>
- <addonProduct>Laser-Scope</addonProduct>
- </available>
- </product>
- <product name="Assault-Rifle">
- <category>BASE</category>
- <included>
- <addonProduct>Telescopic-Scope</addonProduct>
- </included>
- <available>
- <addonProduct>Laser-Scope</addonProduct>
- </available>
- </product>
- <product name="Telescopic-Scope">
- <category>ADD_ON</category>
- </product>
- <product name="Laser-Scope">
- <category>ADD_ON</category>
- </product>
- <product name="Holster">
- <category>ADD_ON</category>
- </product>
- <product name="Extra-Ammo">
- <category>ADD_ON</category>
- </product>
- <product name="Refurbish-Maintenance">
- <category>ADD_ON</category>
- </product>
- </products>
+ <products>
+ <product name="Blowdart">
+ <category>BASE</category>
+ </product>
+ <product name="Pistol">
+ <category>BASE</category>
+ </product>
+ <product name="Shotgun">
+ <category>BASE</category>
+ <available>
+ <addonProduct>Telescopic-Scope</addonProduct>
+ <addonProduct>Laser-Scope</addonProduct>
+ </available>
+ </product>
+ <product name="Assault-Rifle">
+ <category>BASE</category>
+ <included>
+ <addonProduct>Telescopic-Scope</addonProduct>
+ </included>
+ <available>
+ <addonProduct>Laser-Scope</addonProduct>
+ </available>
+ </product>
+ <product name="Telescopic-Scope">
+ <category>ADD_ON</category>
+ </product>
+ <product name="Laser-Scope">
+ <category>ADD_ON</category>
+ </product>
+ <product name="Holster">
+ <category>ADD_ON</category>
+ </product>
+ <product name="Extra-Ammo">
+ <category>ADD_ON</category>
+ </product>
+ <product name="Refurbish-Maintenance">
+ <category>ADD_ON</category>
+ </product>
+ </products>
- <rules>
- <changePolicy>
- <changePolicyCase>
- <phaseType>TRIAL</phaseType>
- <policy>IMMEDIATE</policy>
- </changePolicyCase>
- <changePolicyCase>
- <toProduct>Assault-Rifle</toProduct>
- <policy>IMMEDIATE</policy>
- </changePolicyCase>
- <changePolicyCase>
- <fromProduct>Pistol</fromProduct>
- <toProduct>Shotgun</toProduct>
- <policy>IMMEDIATE</policy>
- </changePolicyCase>
- <changePolicyCase>
- <toPriceList>rescue</toPriceList>
- <policy>END_OF_TERM</policy>
- </changePolicyCase>
- <changePolicyCase>
- <fromBillingPeriod>MONTHLY</fromBillingPeriod>
- <toBillingPeriod>ANNUAL</toBillingPeriod>
- <policy>IMMEDIATE</policy>
- </changePolicyCase>
- <changePolicyCase>
- <fromBillingPeriod>ANNUAL</fromBillingPeriod>
- <toBillingPeriod>MONTHLY</toBillingPeriod>
- <policy>END_OF_TERM</policy>
- </changePolicyCase>
- <changePolicyCase>
- <policy>END_OF_TERM</policy>
- </changePolicyCase>
- </changePolicy>
- <changeAlignment>
- <changeAlignmentCase>
- <toPriceList>rescue</toPriceList>
- <alignment>CHANGE_OF_PLAN</alignment>
- </changeAlignmentCase>
- <changeAlignmentCase>
- <fromPriceList>rescue</fromPriceList>
- <toPriceList>rescue</toPriceList>
- <alignment>CHANGE_OF_PRICELIST</alignment>
- </changeAlignmentCase>
- <changeAlignmentCase>
- <alignment>START_OF_SUBSCRIPTION</alignment>
- </changeAlignmentCase>
- </changeAlignment>
- <cancelPolicy>
- <cancelPolicyCase>
- <phaseType>TRIAL</phaseType>
- <policy>IMMEDIATE</policy>
- </cancelPolicyCase>
- <cancelPolicyCase>
- <policy>END_OF_TERM</policy>
- </cancelPolicyCase>
- </cancelPolicy>
- <createAlignment>
- <createAlignmentCase>
- <product>Laser-Scope</product>
- <alignment>START_OF_SUBSCRIPTION</alignment>
- </createAlignmentCase>
- <createAlignmentCase>
- <alignment>START_OF_BUNDLE</alignment>
- </createAlignmentCase>
- </createAlignment>
- <billingAlignment>
- <billingAlignmentCase>
- <productCategory>ADD_ON</productCategory>
- <alignment>BUNDLE</alignment>
- </billingAlignmentCase>
- <billingAlignmentCase>
- <billingPeriod>ANNUAL</billingPeriod>
- <alignment>SUBSCRIPTION</alignment>
- </billingAlignmentCase>
- <billingAlignmentCase>
- <alignment>ACCOUNT</alignment>
- </billingAlignmentCase>
- </billingAlignment>
- <priceList>
- <priceListCase>
- <fromPriceList>rescue</fromPriceList>
- <toPriceList>DEFAULT</toPriceList>
- </priceListCase>
- </priceList>
- </rules>
+ <rules>
+ <changePolicy>
+ <changePolicyCase>
+ <phaseType>TRIAL</phaseType>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <toProduct>Assault-Rifle</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Pistol</fromProduct>
+ <toProduct>Shotgun</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <toPriceList>rescue</toPriceList>
+ <policy>END_OF_TERM</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromBillingPeriod>MONTHLY</fromBillingPeriod>
+ <toBillingPeriod>ANNUAL</toBillingPeriod>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromBillingPeriod>ANNUAL</fromBillingPeriod>
+ <toBillingPeriod>MONTHLY</toBillingPeriod>
+ <policy>END_OF_TERM</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <policy>END_OF_TERM</policy>
+ </changePolicyCase>
+ </changePolicy>
+ <changeAlignment>
+ <changeAlignmentCase>
+ <toPriceList>rescue</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <fromPriceList>rescue</fromPriceList>
+ <toPriceList>rescue</toPriceList>
+ <alignment>CHANGE_OF_PRICELIST</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <alignment>START_OF_SUBSCRIPTION</alignment>
+ </changeAlignmentCase>
+ </changeAlignment>
+ <cancelPolicy>
+ <cancelPolicyCase>
+ <phaseType>TRIAL</phaseType>
+ <policy>IMMEDIATE</policy>
+ </cancelPolicyCase>
+ <cancelPolicyCase>
+ <policy>END_OF_TERM</policy>
+ </cancelPolicyCase>
+ </cancelPolicy>
+ <createAlignment>
+ <createAlignmentCase>
+ <product>Laser-Scope</product>
+ <alignment>START_OF_SUBSCRIPTION</alignment>
+ </createAlignmentCase>
+ <createAlignmentCase>
+ <alignment>START_OF_BUNDLE</alignment>
+ </createAlignmentCase>
+ </createAlignment>
+ <billingAlignment>
+ <billingAlignmentCase>
+ <productCategory>ADD_ON</productCategory>
+ <alignment>BUNDLE</alignment>
+ </billingAlignmentCase>
+ <billingAlignmentCase>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <alignment>SUBSCRIPTION</alignment>
+ </billingAlignmentCase>
+ <billingAlignmentCase>
+ <alignment>ACCOUNT</alignment>
+ </billingAlignmentCase>
+ </billingAlignment>
+ <priceList>
+ <priceListCase>
+ <fromPriceList>rescue</fromPriceList>
+ <toPriceList>DEFAULT</toPriceList>
+ </priceListCase>
+ </priceList>
+ </rules>
- <plans>
- <plan name="blowdart-monthly">
- <product>Blowdart</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice>
- </fixedPrice>
- </phase>
- <phase type="DISCOUNT">
- <duration>
- <unit>MONTHS</unit>
- <number>6</number>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>9.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>9.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>9.95</value>
- </price>
- </recurringPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>29.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>29.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>29.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
+ <plans>
+ <plan name="blowdart-monthly">
+ <product>Blowdart</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ </fixedPrice>
+ </phase>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>6</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>9.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>9.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>9.95</value>
+ </price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>29.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>29.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>29.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
- <plan name="pistol-monthly">
- <product>Pistol</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice> <!-- empty price implies $0 -->
- </fixedPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>GBP</currency>
- <value>29.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>29.95</value>
- </price>
- <price>
- <currency>USD</currency>
- <value>29.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="shotgun-monthly">
- <product>Shotgun</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice></fixedPrice>
- <!-- no price implies $0 -->
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- <number>-1</number>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>249.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>149.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>169.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="assault-rifle-monthly">
- <product>Assault-Rifle</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice>
- </fixedPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>599.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>349.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>399.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="pistol-annual">
- <product>Pistol</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice>
- </fixedPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>ANNUAL</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>199.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>199.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>199.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="shotgun-annual">
- <product>Shotgun</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice>
- </fixedPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>ANNUAL</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>2399.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>1499.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>1699.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="assault-rifle-annual">
- <product>Assault-Rifle</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice>
- </fixedPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>ANNUAL</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>5999.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>3499.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>3999.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="pistol-annual-gunclub-discount">
- <product>Pistol</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice>
- </fixedPrice>
- </phase>
- <phase type="DISCOUNT">
- <duration>
- <unit>MONTHS</unit>
- <number>6</number>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>9.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>9.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>9.95</value>
- </price>
- </recurringPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>ANNUAL</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>199.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>199.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>199.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="shotgun-annual-gunclub-discount">
- <product>Shotgun</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice>
- </fixedPrice>
- </phase>
- <phase type="DISCOUNT">
- <duration>
- <unit>MONTHS</unit>
- <number>6</number>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>19.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>49.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>69.95</value>
- </price>
- </recurringPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>ANNUAL</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>2399.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>1499.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>1699.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="assault-rifle-annual-gunclub-discount">
- <product>Assault-Rifle</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice>
- </fixedPrice>
- </phase>
- <phase type="DISCOUNT">
- <duration>
- <unit>MONTHS</unit>
- <number>6</number>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>99.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>99.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>99.95</value>
- </price>
- </recurringPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>ANNUAL</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>5999.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>3499.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>3999.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="laser-scope-monthly">
- <product>Laser-Scope</product>
- <initialPhases>
- <phase type="DISCOUNT">
- <duration>
- <unit>MONTHS</unit>
- <number>1</number>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>999.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>499.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>999.95</value>
- </price>
- </recurringPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>1999.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>1499.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>1999.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="telescopic-scope-monthly">
- <product>Telescopic-Scope</product>
- <initialPhases>
- <phase type="DISCOUNT">
- <duration>
- <unit>MONTHS</unit>
- <number>1</number>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>399.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>299.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>399.95</value>
- </price>
- </recurringPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>999.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>499.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>999.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="extra-ammo-monthly">
- <product>Extra-Ammo</product>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>999.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>499.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>999.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- <plansAllowedInBundle>-1</plansAllowedInBundle> <!-- arbitrary number of these (multipack) -->
- </plan>
- <plan name="holster-monthly-regular">
- <product>Holster</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice>
- </fixedPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>ANNUAL</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>199.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>199.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>199.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="holster-monthly-special">
- <product>Holster</product>
- <initialPhases>
- <phase type="TRIAL">
- <duration>
- <unit>DAYS</unit>
- <number>30</number>
- </duration>
- <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
- <fixedPrice>
- </fixedPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>ANNUAL</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>199.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>199.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>199.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="assault-rifle-annual-rescue">
- <product>Assault-Rifle</product>
- <initialPhases>
- <phase type="DISCOUNT">
- <duration>
- <unit>YEARS</unit>
- <number>1</number>
- </duration>
- <billingPeriod>ANNUAL</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>5999.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>3499.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>3999.95</value>
- </price>
- </recurringPrice>
- </phase>
- </initialPhases>
- <finalPhase type="EVERGREEN">
- <duration>
- <unit>UNLIMITED</unit>
- </duration>
- <billingPeriod>ANNUAL</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>5999.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>3499.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>3999.95</value>
- </price>
- </recurringPrice>
- </finalPhase>
- </plan>
- <plan name="refurbish-maintenance">
- <product>Refurbish-Maintenance</product>
- <finalPhase type="FIXEDTERM">
- <duration>
- <unit>MONTHS</unit>
- <number>12</number>
- </duration>
- <billingPeriod>MONTHLY</billingPeriod>
- <recurringPrice>
- <price>
- <currency>USD</currency>
- <value>199.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>199.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>199.95</value>
- </price>
- </recurringPrice>
- <fixedPrice>
- <price>
- <currency>USD</currency>
- <value>599.95</value>
- </price>
- <price>
- <currency>EUR</currency>
- <value>599.95</value>
- </price>
- <price>
- <currency>GBP</currency>
- <value>599.95</value>
- </price>
- </fixedPrice>
- </finalPhase>
- </plan>
- </plans>
- <priceLists>
- <defaultPriceList name="DEFAULT">
- <plans>
- <plan>blowdart-monthly</plan>
- <plan>pistol-monthly</plan>
- <plan>shotgun-monthly</plan>
- <plan>assault-rifle-monthly</plan>
- <plan>pistol-annual</plan>
- <plan>shotgun-annual</plan>
- <plan>assault-rifle-annual</plan>
- <plan>laser-scope-monthly</plan>
- <plan>telescopic-scope-monthly</plan>
- <plan>extra-ammo-monthly</plan>
- <plan>holster-monthly-regular</plan>
- <plan>refurbish-maintenance</plan>
- </plans>
- </defaultPriceList>
- <childPriceList name="gunclubDiscount">
- <plans>
- <plan>pistol-monthly</plan>
- <plan>shotgun-monthly</plan>
- <plan>assault-rifle-monthly</plan>
- <plan>pistol-annual-gunclub-discount</plan>
- <plan>shotgun-annual-gunclub-discount</plan>
- <plan>assault-rifle-annual-gunclub-discount</plan>
- <plan>holster-monthly-special</plan>
- </plans>
- </childPriceList>
- <childPriceList name="rescue">
- <plans>
- <plan>assault-rifle-annual-rescue</plan>
- </plans>
- </childPriceList>
- </priceLists>
+ <plan name="pistol-monthly">
+ <product>Pistol</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice> <!-- empty price implies $0 -->
+ </fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>GBP</currency>
+ <value>29.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>29.95</value>
+ </price>
+ <price>
+ <currency>USD</currency>
+ <value>29.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="shotgun-monthly">
+ <product>Shotgun</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ <!-- no price implies $0 -->
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ <number>-1</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>249.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>149.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>169.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="assault-rifle-monthly">
+ <product>Assault-Rifle</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ </fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>599.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>349.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>399.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pistol-annual">
+ <product>Pistol</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ </fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>199.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>199.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>199.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="shotgun-annual">
+ <product>Shotgun</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ </fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>2399.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>1499.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>1699.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="assault-rifle-annual">
+ <product>Assault-Rifle</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ </fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>5999.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>3499.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>3999.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pistol-annual-gunclub-discount">
+ <product>Pistol</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ </fixedPrice>
+ </phase>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>6</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>9.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>9.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>9.95</value>
+ </price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>199.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>199.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>199.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="shotgun-annual-gunclub-discount">
+ <product>Shotgun</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ </fixedPrice>
+ </phase>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>6</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>19.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>49.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>69.95</value>
+ </price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>2399.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>1499.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>1699.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="assault-rifle-annual-gunclub-discount">
+ <product>Assault-Rifle</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ </fixedPrice>
+ </phase>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>6</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>99.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>99.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>99.95</value>
+ </price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>5999.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>3499.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>3999.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="laser-scope-monthly">
+ <product>Laser-Scope</product>
+ <initialPhases>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>1</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>999.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>499.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>999.95</value>
+ </price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>1999.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>1499.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>1999.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="telescopic-scope-monthly">
+ <product>Telescopic-Scope</product>
+ <initialPhases>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>1</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>399.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>299.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>399.95</value>
+ </price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>999.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>499.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>999.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="extra-ammo-monthly">
+ <product>Extra-Ammo</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>999.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>499.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>999.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ <plansAllowedInBundle>-1</plansAllowedInBundle>
+ <!-- arbitrary number of these (multipack) -->
+ </plan>
+ <plan name="holster-monthly-regular">
+ <product>Holster</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ </fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>199.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>199.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>199.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="holster-monthly-special">
+ <product>Holster</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ </fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>199.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>199.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>199.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="assault-rifle-annual-rescue">
+ <product>Assault-Rifle</product>
+ <initialPhases>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>YEARS</unit>
+ <number>1</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>5999.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>3499.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>3999.95</value>
+ </price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>5999.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>3499.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>3999.95</value>
+ </price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="refurbish-maintenance">
+ <product>Refurbish-Maintenance</product>
+ <finalPhase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price>
+ <currency>USD</currency>
+ <value>199.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>199.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>199.95</value>
+ </price>
+ </recurringPrice>
+ <fixedPrice>
+ <price>
+ <currency>USD</currency>
+ <value>599.95</value>
+ </price>
+ <price>
+ <currency>EUR</currency>
+ <value>599.95</value>
+ </price>
+ <price>
+ <currency>GBP</currency>
+ <value>599.95</value>
+ </price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ </plans>
+ <priceLists>
+ <defaultPriceList name="DEFAULT">
+ <plans>
+ <plan>blowdart-monthly</plan>
+ <plan>pistol-monthly</plan>
+ <plan>shotgun-monthly</plan>
+ <plan>assault-rifle-monthly</plan>
+ <plan>pistol-annual</plan>
+ <plan>shotgun-annual</plan>
+ <plan>assault-rifle-annual</plan>
+ <plan>laser-scope-monthly</plan>
+ <plan>telescopic-scope-monthly</plan>
+ <plan>extra-ammo-monthly</plan>
+ <plan>holster-monthly-regular</plan>
+ <plan>refurbish-maintenance</plan>
+ </plans>
+ </defaultPriceList>
+ <childPriceList name="gunclubDiscount">
+ <plans>
+ <plan>pistol-monthly</plan>
+ <plan>shotgun-monthly</plan>
+ <plan>assault-rifle-monthly</plan>
+ <plan>pistol-annual-gunclub-discount</plan>
+ <plan>shotgun-annual-gunclub-discount</plan>
+ <plan>assault-rifle-annual-gunclub-discount</plan>
+ <plan>holster-monthly-special</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="rescue">
+ <plans>
+ <plan>assault-rifle-annual-rescue</plan>
+ </plans>
+ </childPriceList>
+ </priceLists>
</catalog>