killbill-memoizeit

Merge branch 'integration' of github.com:ning/killbill

3/17/2012 12:49:16 AM

Details

diff --git a/api/src/main/java/com/ning/billing/util/tag/ControlTag.java b/api/src/main/java/com/ning/billing/util/tag/ControlTag.java
index a933cff..3ae9eb5 100644
--- a/api/src/main/java/com/ning/billing/util/tag/ControlTag.java
+++ b/api/src/main/java/com/ning/billing/util/tag/ControlTag.java
@@ -16,7 +16,6 @@
 
 package com.ning.billing.util.tag;
 
-import com.ning.billing.account.api.ControlTagType;
 
 public interface ControlTag extends Tag {
     public ControlTagType getControlTagType();
diff --git a/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java b/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java
index ff60d06..23561a1 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java
@@ -94,7 +94,8 @@ public class TestDefaultInvoiceMigrationApi {
 
 	private UUID accountId ;
 	private UUID subscriptionId ;
-	private DateTime now;
+	private DateTime date_migrated;
+	private DateTime date_regular;
 
 	private UUID migrationInvoiceId;
 	private UUID regularInvoiceId;
@@ -110,7 +111,8 @@ public class TestDefaultInvoiceMigrationApi {
 		log.info("Starting set up");
 		accountId = UUID.randomUUID();
 		subscriptionId = UUID.randomUUID();
-		now = new ClockMock().getUTCNow();
+		date_migrated = new ClockMock().getUTCNow().minusYears(1);
+		date_regular = new ClockMock().getUTCNow();
 
 		final String invoiceDdl = IOUtils.toString(TestInvoiceDispatcher.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
 		final String utilDdl = IOUtils.toString(TestInvoiceDispatcher.class.getResourceAsStream("/com/ning/billing/util/ddl.sql"));
@@ -137,7 +139,7 @@ public class TestDefaultInvoiceMigrationApi {
 	}
 
 	private UUID createAndCheckMigrationInvoice(){
-		UUID migrationInvoiceId = migrationApi.createMigrationInvoice(accountId, now, MIGRATION_INVOICE_AMOUNT, MIGRATION_INVOICE_CURRENCY);
+		UUID migrationInvoiceId = migrationApi.createMigrationInvoice(accountId, date_migrated, MIGRATION_INVOICE_AMOUNT, MIGRATION_INVOICE_CURRENCY);
 		Assert.assertNotNull(migrationInvoiceId);
 		//Double check it was created and values are correct
 
@@ -145,7 +147,7 @@ public class TestDefaultInvoiceMigrationApi {
 		Assert.assertNotNull(invoice);
 
 		Assert.assertEquals(invoice.getAccountId(), accountId);
-		Assert.assertEquals(invoice.getTargetDate().compareTo(now), 0); //temp to avoid tz test artifact
+		Assert.assertEquals(invoice.getTargetDate().compareTo(date_migrated), 0); //temp to avoid tz test artifact
 		//		Assert.assertEquals(invoice.getTargetDate(),now);
 		Assert.assertEquals(invoice.getNumberOfItems(), 1);
 		Assert.assertEquals(invoice.getInvoiceItems().get(0).getAmount().compareTo(MIGRATION_INVOICE_AMOUNT), 0 );
@@ -178,17 +180,15 @@ public class TestDefaultInvoiceMigrationApi {
 		EntitlementBillingApi entitlementBillingApi = BrainDeadProxyFactory.createBrainDeadProxyFor(EntitlementBillingApi.class);
 		((ZombieControl)entitlementBillingApi).addResult("getBillingEventsForAccount", events);
 
-		DateTime target = new DateTime();
-
 		InvoiceDispatcher dispatcher = new InvoiceDispatcher(generator, accountUserApi, entitlementBillingApi, invoiceDao, locker);
 
-		Invoice invoice = dispatcher.processAccount(accountId, target, true);
+		Invoice invoice = dispatcher.processAccount(accountId, date_regular, true);
 		Assert.assertNotNull(invoice);
 
 		List<Invoice> invoices = invoiceDao.getInvoicesByAccount(accountId);
 		Assert.assertEquals(invoices.size(),0);
 
-		invoice = dispatcher.processAccount(accountId, target, false);
+		invoice = dispatcher.processAccount(accountId, date_regular, false);
 		Assert.assertNotNull(invoice);
 
 		invoices = invoiceDao.getInvoicesByAccount(accountId);
@@ -204,13 +204,13 @@ public class TestDefaultInvoiceMigrationApi {
 		Assert.assertEquals(byAccount.size(),1);
 		Assert.assertEquals(byAccount.get(0).getId(), regularInvoiceId);
 
-		List<Invoice> byAccountAndDate = invoiceUserApi.getInvoicesByAccount(accountId, now.minusDays(1));
+		List<Invoice> byAccountAndDate = invoiceUserApi.getInvoicesByAccount(accountId, date_migrated.minusDays(1));
 		Assert.assertEquals(byAccountAndDate.size(),1);
 		Assert.assertEquals(byAccountAndDate.get(0).getId(), regularInvoiceId);
 
-		Collection<Invoice> unpaid = invoiceUserApi.getUnpaidInvoicesByAccountId(accountId, now.plusDays(1));
-		Assert.assertEquals(unpaid.size(),1);
-		Assert.assertEquals(unpaid.iterator().next().getId(), regularInvoiceId);
+		Collection<Invoice> unpaid = invoiceUserApi.getUnpaidInvoicesByAccountId(accountId, date_regular.plusDays(1));
+		Assert.assertEquals(unpaid.size(), 1);
+		Assert.assertEquals(regularInvoiceId, unpaid.iterator().next().getId());
 
 	}
 
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
index 5d7daca..63bc87e 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
@@ -188,6 +188,14 @@ public class DefaultPaymentApi implements PaymentApi {
                                                                                         UUID.fromString(invoiceId)));
                 processedPaymentsOrErrors.add(result);
             }
+            else if (invoice.isMigrationInvoice()) {
+            	log.info("Received invoice for payment that is a migration invoice - don't know how to handle those yet: {}", invoice);
+            	Either<PaymentError, PaymentInfo> result = Either.left(new PaymentError("migration invoice",
+                        "Invoice balance was a migration invoice",
+                        account.getId(),
+                        UUID.fromString(invoiceId)));
+            			processedPaymentsOrErrors.add(result);
+            }
             else {
                 PaymentAttempt paymentAttempt = paymentDao.createPaymentAttempt(invoice);
 
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/DefaultTagDefinitionDao.java b/util/src/main/java/com/ning/billing/util/tag/dao/DefaultTagDefinitionDao.java
index baaf9cd..dddb14f 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/DefaultTagDefinitionDao.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/DefaultTagDefinitionDao.java
@@ -21,9 +21,9 @@ import java.util.List;
 import org.skife.jdbi.v2.IDBI;
 import com.google.inject.Inject;
 import com.ning.billing.ErrorCode;
-import com.ning.billing.account.api.ControlTagType;
 import com.ning.billing.util.api.TagDefinitionApiException;
 import com.ning.billing.util.clock.Clock;
+import com.ning.billing.util.tag.ControlTagType;
 import com.ning.billing.util.tag.DefaultTagDefinition;
 import com.ning.billing.util.tag.Tag;
 import com.ning.billing.util.tag.TagDefinition;
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java b/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java
index fadf98c..4e3804f 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java
@@ -22,7 +22,8 @@ import java.util.UUID;
 import org.joda.time.DateTime;
 import org.skife.jdbi.v2.StatementContext;
 import org.skife.jdbi.v2.tweak.ResultSetMapper;
-import com.ning.billing.account.api.ControlTagType;
+
+import com.ning.billing.util.tag.ControlTagType;
 import com.ning.billing.util.tag.DefaultControlTag;
 import com.ning.billing.util.tag.DefaultTagDefinition;
 import com.ning.billing.util.tag.DescriptiveTag;
diff --git a/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java b/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java
index 707526d..588beb7 100644
--- a/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java
+++ b/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java
@@ -18,7 +18,6 @@ package com.ning.billing.util.tag;
 
 import java.util.UUID;
 import org.joda.time.DateTime;
-import com.ning.billing.account.api.ControlTagType;
 
 public class DefaultControlTag extends DescriptiveTag implements ControlTag {
     private final ControlTagType controlTagType;
diff --git a/util/src/main/java/com/ning/billing/util/tag/DefaultTagStore.java b/util/src/main/java/com/ning/billing/util/tag/DefaultTagStore.java
index 2fd8144..eace017 100644
--- a/util/src/main/java/com/ning/billing/util/tag/DefaultTagStore.java
+++ b/util/src/main/java/com/ning/billing/util/tag/DefaultTagStore.java
@@ -17,7 +17,6 @@
 package com.ning.billing.util.tag;
 
 import java.util.UUID;
-import com.ning.billing.account.api.ControlTagType;
 import com.ning.billing.util.entity.EntityCollectionBase;
 
 public class DefaultTagStore extends EntityCollectionBase<Tag> implements TagStore {
@@ -39,7 +38,7 @@ public class DefaultTagStore extends EntityCollectionBase<Tag> implements TagSto
         for (Tag tag : entities.values()) {
             if (tag instanceof ControlTag) {
                 ControlTag controlTag = (ControlTag) tag;
-                if (controlTag.getControlTagType() == ControlTagType.AUTO_BILLING_OFF) {
+                if (controlTag.getControlTagType() == ControlTagType.AUTO_PAY_OFF) {
                     return false;
                 }
             }
diff --git a/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java b/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
index 727a7cc..0952388 100644
--- a/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
+++ b/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
@@ -30,11 +30,11 @@ import org.slf4j.LoggerFactory;
 import org.testng.annotations.Guice;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
+
 import com.google.inject.Inject;
-import com.ning.billing.account.api.ControlTagType;
 import com.ning.billing.dbi.MysqlTestingHelper;
+
 import com.ning.billing.util.api.TagDefinitionApiException;
 import com.ning.billing.util.clock.Clock;
 import com.ning.billing.util.tag.dao.TagDefinitionDao;
@@ -248,7 +248,7 @@ public class TestTagStore {
         assertEquals(tagStore.generateInvoice(), false);
         assertEquals(tagStore.processPayment(), true);
 
-        ControlTag paymentTag = new DefaultControlTag("testUser", clock.getUTCNow(), ControlTagType.AUTO_BILLING_OFF);
+        ControlTag paymentTag = new DefaultControlTag("testUser", clock.getUTCNow(), ControlTagType.AUTO_PAY_OFF);
         tagStore.add(paymentTag);
         assertEquals(tagStore.generateInvoice(), false);
         assertEquals(tagStore.processPayment(), false);
@@ -256,7 +256,7 @@ public class TestTagStore {
 
     @Test(expectedExceptions = TagDefinitionApiException.class)
     public void testTagDefinitionCreationWithControlTagName() throws TagDefinitionApiException {
-        String definitionName = ControlTagType.AUTO_BILLING_OFF.toString();
+        String definitionName = ControlTagType.AUTO_PAY_OFF.toString();
         tagDefinitionDao.create(definitionName, "This should break", "test");
     }