summaryrefslogtreecommitdiff
path: root/payments
diff options
context:
space:
mode:
authorKrzysztof Wolski <krzysztof.k.wolski@gmail.com>2017-02-07 16:06:43 +0100
committerKrzysztof Wolski <krzysztof.k.wolski@gmail.com>2017-02-07 16:06:43 +0100
commita211a6b66be9c2c7612d43d9221aa46882736953 (patch)
tree35ca4f2646cc7aa7d12b62ebc7dd7a507ce69d21 /payments
parente68689540cd87163af7016ba2eb2e2cad07b8c80 (diff)
downloaddjango-payments-taler-a211a6b66be9c2c7612d43d9221aa46882736953.tar.gz
django-payments-taler-a211a6b66be9c2c7612d43d9221aa46882736953.tar.bz2
django-payments-taler-a211a6b66be9c2c7612d43d9221aa46882736953.zip
Changed get_base_url
Diffstat (limited to 'payments')
-rw-r--r--payments/core.py18
-rw-r--r--payments/test_core.py20
2 files changed, 23 insertions, 15 deletions
diff --git a/payments/core.py b/payments/core.py
index 1a6e1da..e81bfab 100644
--- a/payments/core.py
+++ b/payments/core.py
@@ -7,7 +7,6 @@ except ImportError:
from urlparse import urljoin
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
-from django.utils.module_loading import import_string
PAYMENT_VARIANTS = {
@@ -27,21 +26,18 @@ def get_base_url():
"""
Returns host url according to project settings. Protocol is chosen by
checking PAYMENT_USES_SSL variable.
- If PAYMENT_HOST is not specified, gets domain from Sites. Otherwise,
- checks if it's callable and returns it's result. If there is no function
- treats it as domain.
+ If PAYMENT_HOST is not specified, gets domain from Sites.
+ Otherwise checks if it's callable and returns it's result. If it's not a
+ callable treats it as domain.
"""
protocol = 'https' if PAYMENT_USES_SSL else 'http'
if not PAYMENT_HOST:
current_site = Site.objects.get_current()
- return '%s://%s' % (protocol, current_site.domain)
-
- try:
- function = import_string(PAYMENT_HOST)
- except ImportError:
- domain = PAYMENT_HOST
+ domain = current_site.domain
+ elif callable(PAYMENT_HOST):
+ domain = PAYMENT_HOST()
else:
- domain = function()
+ domain = PAYMENT_HOST
return '%s://%s' % (protocol, domain)
diff --git a/payments/test_core.py b/payments/test_core.py
index 88c91dd..ff43878 100644
--- a/payments/test_core.py
+++ b/payments/test_core.py
@@ -1,20 +1,32 @@
from __future__ import unicode_literals
from decimal import Decimal
from unittest import TestCase
-from mock import patch
+from mock import patch, NonCallableMock
-from .core import provider_factory
+from payments import core
from .forms import CreditCardPaymentFormWithName, PaymentForm
from .models import BasePayment
+class TestHelpers(TestCase):
+ @patch('payments.core.PAYMENT_HOST', new_callable=NonCallableMock)
+ def test_text_get_base_url(self, host):
+ host.__str__ = lambda x: "example.com/string"
+ self.assertEqual(core.get_base_url(), "https://example.com/string")
+
+ @patch('payments.core.PAYMENT_HOST')
+ def test_callable_get_base_url(self, host):
+ host.return_value = "example.com/callable"
+ self.assertEqual(core.get_base_url(), "https://example.com/callable")
+
+
class TestProviderFactory(TestCase):
def test_provider_factory(self):
- provider_factory('default')
+ core.provider_factory('default')
def test_provider_does_not_exist(self):
- self.assertRaises(ValueError, provider_factory, 'fake_provider')
+ self.assertRaises(ValueError, core.provider_factory, 'fake_provider')
class TestBasePayment(TestCase):