Skip to content

Commit

Permalink
Changed get_base_url
Browse files Browse the repository at this point in the history
  • Loading branch information
krzysztofwolski committed Feb 7, 2017
1 parent e686895 commit a211a6b
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 15 deletions.
18 changes: 7 additions & 11 deletions payments/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
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 = {
Expand All @@ -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)


Expand Down
20 changes: 16 additions & 4 deletions payments/test_core.py
Original file line number Diff line number Diff line change
@@ -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):
Expand Down

0 comments on commit a211a6b

Please sign in to comment.