killbill-aplcache

invoice: more fixes for tests Signed-off-by: Pierre-Alexandre

11/10/2012 4:54:42 PM

Details

diff --git a/api/src/main/java/com/ning/billing/invoice/api/Invoice.java b/api/src/main/java/com/ning/billing/invoice/api/Invoice.java
index b8dff70..bb31fd5 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/Invoice.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/Invoice.java
@@ -17,6 +17,7 @@
 package com.ning.billing.invoice.api;
 
 import java.math.BigDecimal;
+import java.util.Collection;
 import java.util.List;
 import java.util.UUID;
 
@@ -29,7 +30,7 @@ public interface Invoice extends Entity {
 
     boolean addInvoiceItem(InvoiceItem item);
 
-    boolean addInvoiceItems(List<InvoiceItem> items);
+    boolean addInvoiceItems(Collection<InvoiceItem> items);
 
     List<InvoiceItem> getInvoiceItems();
 
@@ -39,7 +40,7 @@ public interface Invoice extends Entity {
 
     boolean addPayment(InvoicePayment payment);
 
-    boolean addPayments(List<InvoicePayment> payments);
+    boolean addPayments(Collection<InvoicePayment> payments);
 
     List<InvoicePayment> getPayments();
 
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
index a7c576c..753b7a1 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
@@ -175,7 +175,9 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, InvoiceApi
 
                     // Create the invoice items
                     final InvoiceItemSqlDao transInvoiceItemSqlDao = entitySqlDaoWrapperFactory.become(InvoiceItemSqlDao.class);
-                    transInvoiceItemSqlDao.batchCreateFromTransaction(invoiceItems, context);
+                    for (final InvoiceItemModelDao invoiceItemModelDao : invoiceItems) {
+                        transInvoiceItemSqlDao.create(invoiceItemModelDao, context);
+                    }
 
                     // Add entries in the notification queue for recurring items
                     final List<InvoiceItemModelDao> recurringInvoiceItems = ImmutableList.<InvoiceItemModelDao>copyOf(Collections2.filter(invoiceItems, new Predicate<InvoiceItemModelDao>() {
@@ -817,7 +819,7 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, InvoiceApi
         // Finally, create the adjustment
         // Note! The amount is negated here!
         return new InvoiceItemModelDao(InvoiceItemType.ITEM_ADJ, invoiceItemToBeAdjusted.getInvoiceId(), invoiceItemToBeAdjusted.getAccountId(),
-                                       null, null, null, null, effectiveDate, null, amountToAdjust.negate(), null, currencyForAdjustment, invoiceItemToBeAdjusted.getId());
+                                       null, null, null, null, effectiveDate, effectiveDate, amountToAdjust.negate(), null, currencyForAdjustment, invoiceItemToBeAdjusted.getId());
     }
 
     /**
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemSqlDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemSqlDao.java
index 2789596..431d946 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemSqlDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemSqlDao.java
@@ -27,7 +27,6 @@ import org.joda.time.LocalDate;
 import org.skife.jdbi.v2.StatementContext;
 import org.skife.jdbi.v2.sqlobject.Bind;
 import org.skife.jdbi.v2.sqlobject.BindBean;
-import org.skife.jdbi.v2.sqlobject.SqlBatch;
 import org.skife.jdbi.v2.sqlobject.SqlQuery;
 import org.skife.jdbi.v2.sqlobject.SqlUpdate;
 import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
@@ -66,11 +65,6 @@ public interface InvoiceItemSqlDao extends EntitySqlDao<InvoiceItemModelDao> {
     void create(@BindBean final InvoiceItemModelDao invoiceItem,
                 @BindBean final InternalCallContext context);
 
-    @SqlBatch(transactional = false)
-    @Audited(ChangeType.INSERT)
-    void batchCreateFromTransaction(@BindBean final List<InvoiceItemModelDao> items,
-                                    @BindBean final InternalCallContext context);
-
     public static class InvoiceItemModelDaoSqlDaoMapper extends MapperBase implements ResultSetMapper<InvoiceItemModelDao> {
 
         @Override
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java
index 803bfd9..2d9c044 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java
@@ -18,6 +18,7 @@ package com.ning.billing.invoice.model;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.UUID;
 
@@ -30,9 +31,14 @@ import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.invoice.api.InvoiceItem;
 import com.ning.billing.invoice.api.InvoicePayment;
+import com.ning.billing.invoice.dao.InvoiceItemModelDao;
 import com.ning.billing.invoice.dao.InvoiceModelDao;
+import com.ning.billing.invoice.dao.InvoicePaymentModelDao;
 import com.ning.billing.util.entity.EntityBase;
 
+import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
+
 public class DefaultInvoice extends EntityBase implements Invoice {
 
     private final InvoiceItemList invoiceItems = new InvoiceItemList();
@@ -71,6 +77,18 @@ public class DefaultInvoice extends EntityBase implements Invoice {
         this(invoiceModelDao.getId(), invoiceModelDao.getCreatedDate(), invoiceModelDao.getAccountId(),
              invoiceModelDao.getInvoiceNumber(), invoiceModelDao.getInvoiceDate(), invoiceModelDao.getTargetDate(),
              invoiceModelDao.getCurrency(), invoiceModelDao.isMigrated());
+        addInvoiceItems(Collections2.transform(invoiceModelDao.getInvoiceItems(), new Function<InvoiceItemModelDao, InvoiceItem>() {
+            @Override
+            public InvoiceItem apply(final InvoiceItemModelDao input) {
+                return InvoiceItemFactory.fromModelDao(input);
+            }
+        }));
+        addPayments(Collections2.transform(invoiceModelDao.getInvoicePayments(), new Function<InvoicePaymentModelDao, InvoicePayment>() {
+            @Override
+            public InvoicePayment apply(final InvoicePaymentModelDao input) {
+                return new DefaultInvoicePayment(input);
+            }
+        }));
     }
 
     @Override
@@ -79,7 +97,7 @@ public class DefaultInvoice extends EntityBase implements Invoice {
     }
 
     @Override
-    public boolean addInvoiceItems(final List<InvoiceItem> items) {
+    public boolean addInvoiceItems(final Collection<InvoiceItem> items) {
         return this.invoiceItems.addAll(items);
     }
 
@@ -110,7 +128,7 @@ public class DefaultInvoice extends EntityBase implements Invoice {
     }
 
     @Override
-    public boolean addPayments(final List<InvoicePayment> payments) {
+    public boolean addPayments(final Collection<InvoicePayment> payments) {
         return this.payments.addAll(payments);
     }
 
diff --git a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
index 7c22a77..bdc8e23 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
@@ -35,6 +35,7 @@ package com.ning.billing.invoice.template.formatters;
 import java.math.BigDecimal;
 import java.text.NumberFormat;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.Locale;
 import java.util.UUID;
@@ -153,7 +154,7 @@ public class DefaultInvoiceFormatter implements InvoiceFormatter {
     }
 
     @Override
-    public boolean addInvoiceItems(final List<InvoiceItem> items) {
+    public boolean addInvoiceItems(final Collection<InvoiceItem> items) {
         return invoice.addInvoiceItems(items);
     }
 
@@ -173,7 +174,7 @@ public class DefaultInvoiceFormatter implements InvoiceFormatter {
     }
 
     @Override
-    public boolean addPayments(final List<InvoicePayment> payments) {
+    public boolean addPayments(final Collection<InvoicePayment> payments) {
         return invoice.addPayments(payments);
     }
 
diff --git a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.sql.stg b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.sql.stg
index 86bfd1b..6428f7c 100644
--- a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.sql.stg
+++ b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.sql.stg
@@ -69,7 +69,7 @@ getRemainingAmountPaid() ::= <<
 >>
 
 getAccountIdFromInvoicePaymentId() ::= <<
-    SELECT <tableName()>
+    SELECT i.account_id
     FROM <tableName()> ip
     INNER JOIN invoices i ON i.id = ip.invoice_id
     WHERE ip.id = :invoicePaymentId
diff --git a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg
index 3fe868d..7293b45 100644
--- a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg
+++ b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg
@@ -24,7 +24,7 @@ tableValues(prefix) ::= <<
 >>
 
 extraTableFieldsWithComma(prefix) ::= <<
-, record_id as invoice_number
+, <prefix>record_id as invoice_number
 >>
 
 getInvoicesByAccount() ::= <<
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/TestDefaultInvoiceDao.java b/invoice/src/test/java/com/ning/billing/invoice/dao/TestDefaultInvoiceDao.java
index 4b277e5..3b0a030 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/TestDefaultInvoiceDao.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/TestDefaultInvoiceDao.java
@@ -36,10 +36,6 @@ import com.ning.billing.invoice.notification.NextBillingDatePoster;
 import com.ning.billing.util.callcontext.InternalTenantContext;
 import com.ning.billing.util.entity.dao.EntitySqlDao;
 import com.ning.billing.util.svcsapi.bus.InternalBus;
-import com.ning.billing.util.tag.dao.MockTagDao;
-import com.ning.billing.util.tag.dao.MockTagDefinitionDao;
-import com.ning.billing.util.tag.dao.TagDao;
-import com.ning.billing.util.tag.dao.TagDefinitionDao;
 
 import com.google.common.collect.ImmutableMap;
 
@@ -68,8 +64,6 @@ public class TestDefaultInvoiceDao extends InvoiceTestSuite {
         });
 
         final NextBillingDatePoster poster = Mockito.mock(NextBillingDatePoster.class);
-        final TagDefinitionDao tagDefinitionDao = new MockTagDefinitionDao();
-        final TagDao tagDao = new MockTagDao();
         dao = new DefaultInvoiceDao(idbi, poster, Mockito.mock(InternalBus.class));
     }
 
@@ -109,18 +103,4 @@ public class TestDefaultInvoiceDao extends InvoiceTestSuite {
         final BigDecimal actualRefundAmount = dao.computePositiveRefundAmount(invoicePayment, requestedAmount, invoiceItemIdsWithAmounts);
         Assert.assertEquals(actualRefundAmount, expectedRefundAmount);
     }
-
-    @Test(groups = "fast")
-    public void testFindByNumber() throws Exception {
-        final Integer number = Integer.MAX_VALUE;
-        final InvoiceModelDao invoice = Mockito.mock(InvoiceModelDao.class);
-        Mockito.when(invoiceSqlDao.getByRecordId(number.longValue(), internalCallContext)).thenReturn(invoice);
-
-        Assert.assertEquals(dao.getByNumber(number, internalCallContext), invoice);
-        try {
-            dao.getByNumber(Integer.MIN_VALUE, internalCallContext);
-            Assert.fail();
-        } catch (InvoiceApiException e) {
-        }
-    }
 }
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceDao.java b/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceDao.java
index 29f0d13..27fbba8 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceDao.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceDao.java
@@ -130,8 +130,13 @@ public class TestInvoiceDao extends InvoiceDaoTestBase {
 
     @Test(groups = "slow")
     public void testRetrievalForNonExistentInvoiceId() throws InvoiceApiException {
-        invoiceDao.getById(UUID.randomUUID(), internalCallContext);
-        Assert.fail();
+        try {
+            invoiceDao.getById(UUID.randomUUID(), internalCallContext);
+            Assert.fail();
+        } catch (TransactionFailedException e) {
+            Assert.assertTrue(e.getCause() instanceof InvoiceApiException);
+            Assert.assertEquals(((InvoiceApiException) e.getCause()).getCode(), ErrorCode.INVOICE_NOT_FOUND.getCode());
+        }
     }
 
     @Test(groups = "slow")
diff --git a/invoice/src/test/java/com/ning/billing/invoice/tests/TestChargeBacks.java b/invoice/src/test/java/com/ning/billing/invoice/tests/TestChargeBacks.java
index d1003f3..6cda9cb 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/tests/TestChargeBacks.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/tests/TestChargeBacks.java
@@ -28,6 +28,7 @@ import org.skife.jdbi.v2.exceptions.TransactionFailedException;
 import org.testng.annotations.BeforeSuite;
 import org.testng.annotations.Test;
 
+import com.ning.billing.ErrorCode;
 import com.ning.billing.KillbillTestSuiteWithEmbeddedDB;
 import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.dbi.MysqlTestingHelper;
@@ -162,9 +163,15 @@ public class TestChargeBacks extends InvoiceTestSuiteWithEmbeddedDB {
         assertEquals(accountId, invoice.getAccountId());
     }
 
-    @Test(groups = "slow", expectedExceptions = InvoiceApiException.class)
+    @Test(groups = "slow")
     public void testGetAccountIdFromPaymentIdBadPaymentId() throws InvoiceApiException {
-        invoicePaymentApi.getAccountIdFromInvoicePaymentId(UUID.randomUUID(), callContext);
+        try {
+            invoicePaymentApi.getAccountIdFromInvoicePaymentId(UUID.randomUUID(), callContext);
+            fail();
+        } catch (TransactionFailedException e) {
+            assertTrue(e.getCause() instanceof InvoiceApiException);
+            assertEquals(((InvoiceApiException) e.getCause()).getCode(), ErrorCode.CHARGE_BACK_COULD_NOT_FIND_ACCOUNT_ID.getCode());
+        }
     }
 
     @Test(groups = "slow")
diff --git a/payment/src/test/java/com/ning/billing/payment/MockInvoice.java b/payment/src/test/java/com/ning/billing/payment/MockInvoice.java
index 2cde1b1..6aaac26 100644
--- a/payment/src/test/java/com/ning/billing/payment/MockInvoice.java
+++ b/payment/src/test/java/com/ning/billing/payment/MockInvoice.java
@@ -16,12 +16,14 @@
 
 package com.ning.billing.payment;
 
-import javax.annotation.Nullable;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import org.joda.time.LocalDate;
 
 import com.ning.billing.catalog.api.Currency;
@@ -64,7 +66,7 @@ public class MockInvoice extends EntityBase implements Invoice {
     }
 
     @Override
-    public boolean addInvoiceItems(final List<InvoiceItem> items) {
+    public boolean addInvoiceItems(final Collection<InvoiceItem> items) {
         return this.invoiceItems.addAll(items);
     }
 
@@ -95,7 +97,7 @@ public class MockInvoice extends EntityBase implements Invoice {
     }
 
     @Override
-    public boolean addPayments(final List<InvoicePayment> payments) {
+    public boolean addPayments(final Collection<InvoicePayment> payments) {
         return this.payments.addAll(payments);
     }
 
diff --git a/util/src/main/java/com/ning/billing/util/svcapi/tag/DefaultTagInternalApi.java b/util/src/main/java/com/ning/billing/util/svcapi/tag/DefaultTagInternalApi.java
index 5216eba..fedf00a 100644
--- a/util/src/main/java/com/ning/billing/util/svcapi/tag/DefaultTagInternalApi.java
+++ b/util/src/main/java/com/ning/billing/util/svcapi/tag/DefaultTagInternalApi.java
@@ -16,7 +16,6 @@
 package com.ning.billing.util.svcapi.tag;
 
 import java.util.List;
-import java.util.Map;
 import java.util.UUID;
 
 import javax.inject.Inject;
@@ -61,8 +60,8 @@ public class DefaultTagInternalApi implements TagInternalApi {
             throws TagApiException {
 
         final TagDefinition tagDefinition = tagDefinitionDao.getById(tagDefinitionId, context);
-        final Tag tag = tagDefinition.isControlTag() ? new DefaultControlTag(ControlTagType.getTypeFromId(tagDefinition.getId()), ObjectType.ACCOUNT, objectId, context.getCreatedDate()) :
-                        new DescriptiveTag(tagDefinition.getId(), ObjectType.ACCOUNT, objectId, context.getCreatedDate());
+        final Tag tag = tagDefinition.isControlTag() ? new DefaultControlTag(ControlTagType.getTypeFromId(tagDefinition.getId()), objectType, objectId, context.getCreatedDate()) :
+                        new DescriptiveTag(tagDefinition.getId(), objectType, objectId, context.getCreatedDate());
         tagDao.create(tag, context);
 
     }