killbill-aplcache

Fixing broken tests... more coming

6/8/2012 11:19:18 PM

Details

diff --git a/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java b/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java
index 5498ed3..2f73558 100644
--- a/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java
@@ -48,8 +48,7 @@ import com.ning.billing.util.globallocker.GlobalLocker;
 
 public class PaymentMethodProcessor extends ProcessorBase {
 
-    private final PaymentDao paymentDao;
-    
+
     @Inject
     public PaymentMethodProcessor(final PaymentProviderPluginRegistry pluginRegistry,
             final AccountUserApi accountUserApi,
@@ -57,8 +56,7 @@ public class PaymentMethodProcessor extends ProcessorBase {
             final PaymentDao paymentDao,
             final GlobalLocker locker,
             @Named(PLUGIN_EXECUTOR_NAMED)  final ExecutorService executor) {
-        super(pluginRegistry, accountUserApi, eventBus, locker, executor);
-        this.paymentDao = paymentDao;
+        super(pluginRegistry, accountUserApi, eventBus, paymentDao, locker, executor);
     }
     
     public Set<String> getAvailablePlugins() {
diff --git a/payment/src/main/java/com/ning/billing/payment/core/PaymentProcessor.java b/payment/src/main/java/com/ning/billing/payment/core/PaymentProcessor.java
index ca66795..2431467 100644
--- a/payment/src/main/java/com/ning/billing/payment/core/PaymentProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/core/PaymentProcessor.java
@@ -70,7 +70,6 @@ public class PaymentProcessor extends ProcessorBase {
     private final InvoicePaymentApi invoicePaymentApi;
     private final FailedPaymentRetryServiceScheduler failedPaymentRetryService;
     private final PluginFailureRetryServiceScheduler pluginFailureRetryService;
-    private final PaymentDao paymentDao;
     private final CallContextFactory factory;
     private final Clock clock;
     
@@ -91,11 +90,10 @@ public class PaymentProcessor extends ProcessorBase {
             final GlobalLocker locker,
             @Named(PLUGIN_EXECUTOR_NAMED) final ExecutorService executor,            
             final CallContextFactory factory) {
-        super(pluginRegistry, accountUserApi, eventBus, locker, executor);
+        super(pluginRegistry, accountUserApi, eventBus, paymentDao, locker, executor);
         this.invoicePaymentApi = invoicePaymentApi;
         this.failedPaymentRetryService = failedPaymentRetryService;
         this.pluginFailureRetryService = pluginFailureRetryService;
-        this.paymentDao = paymentDao;
         this.clock = clock;
         this.factory = factory;
         this.paymentPluginDispatcher = new PluginDispatcher<Payment>(executor);
diff --git a/payment/src/main/java/com/ning/billing/payment/core/ProcessorBase.java b/payment/src/main/java/com/ning/billing/payment/core/ProcessorBase.java
index 781d4ee..410fd08 100644
--- a/payment/src/main/java/com/ning/billing/payment/core/ProcessorBase.java
+++ b/payment/src/main/java/com/ning/billing/payment/core/ProcessorBase.java
@@ -28,6 +28,8 @@ import com.ning.billing.account.api.Account;
 import com.ning.billing.account.api.AccountApiException;
 import com.ning.billing.account.api.AccountUserApi;
 import com.ning.billing.payment.api.PaymentApiException;
+import com.ning.billing.payment.dao.PaymentDao;
+import com.ning.billing.payment.dao.PaymentMethodModelDao;
 import com.ning.billing.payment.plugin.api.PaymentPluginApi;
 import com.ning.billing.payment.provider.PaymentProviderPluginRegistry;
 import com.ning.billing.util.bus.Bus;
@@ -47,17 +49,20 @@ public abstract class ProcessorBase {
     protected final Bus eventBus;
     protected final GlobalLocker locker;
     protected final ExecutorService executor;
+    protected final PaymentDao paymentDao;
 
     private static final Logger log = LoggerFactory.getLogger(ProcessorBase.class);
     
     public ProcessorBase(final PaymentProviderPluginRegistry pluginRegistry,
             final AccountUserApi accountUserApi,
             final Bus eventBus,
+            final PaymentDao paymentDao,
             final GlobalLocker locker,
             final ExecutorService executor) {
         this.pluginRegistry = pluginRegistry;
         this.accountUserApi = accountUserApi;
         this.eventBus= eventBus;
+        this.paymentDao = paymentDao;
         this.locker = locker;
         this.executor = executor;
     }
@@ -81,6 +86,12 @@ public abstract class ProcessorBase {
             if (paymentMethodId == null) {
                 throw new PaymentApiException(ErrorCode.PAYMENT_NO_DEFAULT_PAYMENT_METHOD, account.getId());
             }
+            PaymentMethodModelDao methodDao = paymentDao.getPaymentMethod(paymentMethodId);
+            if (methodDao == null) {
+                log.error("Account {} has a non existent default payment method {}!!!", account.getId(), paymentMethodId);
+                throw new PaymentApiException(ErrorCode.PAYMENT_NO_DEFAULT_PAYMENT_METHOD, account.getId());                
+            }
+            paymentProviderName = methodDao.getPluginName();
         }
         return pluginRegistry.getPlugin(paymentProviderName);
     }
diff --git a/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java b/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java
index a651839..f478e07 100644
--- a/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java
@@ -27,6 +27,7 @@ import com.ning.billing.account.api.Account;
 import com.ning.billing.account.api.AccountUserApi;
 import com.ning.billing.payment.api.PaymentApiException;
 import com.ning.billing.payment.api.Refund;
+import com.ning.billing.payment.dao.PaymentDao;
 import com.ning.billing.payment.provider.PaymentProviderPluginRegistry;
 import com.ning.billing.util.bus.Bus;
 import com.ning.billing.util.callcontext.CallContext;
@@ -38,9 +39,10 @@ public class RefundProcessor extends ProcessorBase {
     public RefundProcessor(final PaymentProviderPluginRegistry pluginRegistry,
             final AccountUserApi accountUserApi,
             final Bus eventBus,
+            final PaymentDao paymentDao,
             final GlobalLocker locker,
-            @Named(PLUGIN_EXECUTOR_NAMED)  final ExecutorService executor) {
-        super(pluginRegistry, accountUserApi, eventBus, locker, executor);        
+            @Named(PLUGIN_EXECUTOR_NAMED) final ExecutorService executor) {
+        super(pluginRegistry, accountUserApi, eventBus, paymentDao, locker, executor);        
     }
     
     public Refund createRefund(Account account, UUID paymentId, CallContext context)
diff --git a/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java b/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java
index 1760339..dfcf639 100644
--- a/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java
+++ b/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java
@@ -17,6 +17,8 @@ package com.ning.billing.payment.dao;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
@@ -125,24 +127,44 @@ public class MockPaymentDao implements PaymentDao {
         return result;
     }
 
+    private final List<PaymentMethodModelDao> paymentMethods = new LinkedList<PaymentMethodModelDao>();
+    
     @Override
-    public PaymentMethodModelDao insertPaymentMethod(
-            PaymentMethodModelDao paymentMethod, CallContext context) {
-        return null;
+    public PaymentMethodModelDao insertPaymentMethod(PaymentMethodModelDao paymentMethod, CallContext context) {
+        paymentMethods.add(paymentMethod);
+        return paymentMethod;
     }
 
     @Override
     public PaymentMethodModelDao getPaymentMethod(UUID paymentMethodId) {
+        for (PaymentMethodModelDao cur : paymentMethods) {
+            if (cur.getId().equals(paymentMethodId)) {
+                return cur;
+            }
+        }
         return null;
     }
 
     @Override
     public List<PaymentMethodModelDao> getPaymentMethods(UUID accountId) {
-        return null;
+        List<PaymentMethodModelDao> result = new ArrayList<PaymentMethodModelDao>();
+        for (PaymentMethodModelDao cur : paymentMethods) {
+            if (cur.getAccountId().equals(accountId)) {
+                result.add(cur);
+            }
+        }
+        return result;
     }
 
     @Override
     public void deletedPaymentMethod(UUID paymentMethodId) {
-
+        Iterator<PaymentMethodModelDao> it = paymentMethods.iterator();
+        while (it.hasNext()) {
+            PaymentMethodModelDao cur = it.next();
+            if (cur.getId().equals(paymentMethodId)) {
+                it.remove();
+                break;
+            }
+        }
     }
 }
diff --git a/payment/src/test/java/com/ning/billing/payment/TestHelper.java b/payment/src/test/java/com/ning/billing/payment/TestHelper.java
index fb08dcb..5f8ef23 100644
--- a/payment/src/test/java/com/ning/billing/payment/TestHelper.java
+++ b/payment/src/test/java/com/ning/billing/payment/TestHelper.java
@@ -35,6 +35,7 @@ import com.ning.billing.payment.api.DefaultPaymentMethodPlugin;
 import com.ning.billing.payment.api.PaymentApi;
 import com.ning.billing.payment.api.PaymentMethod;
 import com.ning.billing.payment.api.PaymentMethodPlugin;
+import com.ning.billing.payment.dao.PaymentDao;
 import com.ning.billing.payment.glue.PaymentTestModuleWithMocks;
 import com.ning.billing.util.bus.Bus;
 import com.ning.billing.util.bus.Bus.EventBusException;
@@ -110,9 +111,24 @@ public class TestHelper {
         zombie.addResult("getEmail", email);
         zombie.addResult("getCurrency", Currency.USD);
         zombie.addResult("getBillCycleDay", 1);
+        zombie.addResult("isMigrated", false);
+        zombie.addResult("isNotifiedForInvoices", false);        
+        zombie.addResult("getTimeZone", BrainDeadProxyFactory.ZOMBIE_VOID);
+        zombie.addResult("getLocale", BrainDeadProxyFactory.ZOMBIE_VOID);        
+        zombie.addResult("getAddress1", BrainDeadProxyFactory.ZOMBIE_VOID);
+        zombie.addResult("getAddress2", BrainDeadProxyFactory.ZOMBIE_VOID);        
+        zombie.addResult("getCompanyName", BrainDeadProxyFactory.ZOMBIE_VOID);
+        zombie.addResult("getCity", BrainDeadProxyFactory.ZOMBIE_VOID);        
+        zombie.addResult("getStateOrProvince", BrainDeadProxyFactory.ZOMBIE_VOID);
+        zombie.addResult("getCountry", BrainDeadProxyFactory.ZOMBIE_VOID);        
+        zombie.addResult("getPostalCode", BrainDeadProxyFactory.ZOMBIE_VOID);
+        zombie.addResult("getPhone", BrainDeadProxyFactory.ZOMBIE_VOID);        
+        zombie.addResult("getPaymentMethodId", BrainDeadProxyFactory.ZOMBIE_VOID);
         
         ((ZombieControl)accountUserApi).addResult("getAccountById", account);
         ((ZombieControl)accountUserApi).addResult("getAccountByKey", account);
+        ((ZombieControl)accountUserApi).addResult("updateAccount", BrainDeadProxyFactory.ZOMBIE_VOID);        
+        //updateAccount
 
         PaymentMethodPlugin pm = new DefaultPaymentMethodPlugin(UUID.randomUUID().toString(), true, null);
         addTestPaymentMethod(account, pm);
@@ -122,7 +138,7 @@ public class TestHelper {
     private void addTestPaymentMethod(Account account, PaymentMethodPlugin paymentMethodInfo) throws Exception {
         UUID paymentMethodId = paymentApi.addPaymentMethod(PaymentTestModuleWithMocks.PLUGIN_TEST_NAME, account, true, paymentMethodInfo, context);
         ZombieControl zombie = (ZombieControl) account;
-        zombie.addResult("getPaymentMethodId", paymentMethodId);        
+        zombie.addResult("getPaymentMethodId", paymentMethodId); 
     }
 
 }