Fixup tests into working state one left to fix
This commit is contained in:
parent
bf695f823d
commit
5008051d88
|
@ -1,3 +1,4 @@
|
||||||
|
import mock
|
||||||
from test_plus.test import TestCase
|
from test_plus.test import TestCase
|
||||||
from mhackspace.users.models import Membership
|
from mhackspace.users.models import Membership
|
||||||
from mhackspace.users.models import User
|
from mhackspace.users.models import User
|
||||||
|
@ -5,23 +6,34 @@ from django.contrib.auth.models import Group
|
||||||
|
|
||||||
from mhackspace.subscriptions.management.commands.update_membership_status import update_subscriptions
|
from mhackspace.subscriptions.management.commands.update_membership_status import update_subscriptions
|
||||||
|
|
||||||
|
from mhackspace.subscriptions.tests.mocks import gocardlessMocks
|
||||||
|
|
||||||
# this needs mocking
|
# this needs mocking
|
||||||
class TestTasks(TestCase):
|
class TestTasks(gocardlessMocks):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user1 = self.make_user('u1')
|
super().setUp()
|
||||||
self.user2 = self.make_user('u2')
|
self.user2 = self.make_user('u2')
|
||||||
|
self.user3 = self.make_user('u3')
|
||||||
self.group = Group(name='members')
|
self.group = Group(name='members')
|
||||||
self.group.save()
|
self.group.save()
|
||||||
|
|
||||||
def test_refresh_subscriptions(self):
|
@mock.patch('mhackspace.subscriptions.payments.select_provider')
|
||||||
|
def test_refresh_subscriptions(self, mock_select_provider):
|
||||||
|
self.mock_success_responses()
|
||||||
|
self.mock_mandate_success_responses()
|
||||||
|
self.mock_customer_success_responses()
|
||||||
|
mock_select_provider.return_value = self.provider
|
||||||
|
|
||||||
membership_count = Membership.objects.all().delete()
|
membership_count = Membership.objects.all().delete()
|
||||||
user_count = User.objects.all().count()
|
user_count = User.objects.all().count()
|
||||||
membership_count = Membership.objects.all().count()
|
membership_count = Membership.objects.all().count()
|
||||||
self.assertEquals(0, membership_count)
|
self.assertEquals(0, membership_count)
|
||||||
self.assertEquals(2, user_count)
|
self.assertEquals(3, user_count)
|
||||||
|
|
||||||
update_subscriptions(provider_name='gocardless')
|
update_subscriptions(provider_name='gocardless')
|
||||||
|
|
||||||
|
self.mock_success_responses()
|
||||||
|
|
||||||
membership_count = Membership.objects.all().count()
|
membership_count = Membership.objects.all().count()
|
||||||
self.assertEquals(2, membership_count)
|
self.assertEquals(2, membership_count)
|
||||||
self.assertEquals(2, user_count)
|
self.assertEquals(2, user_count)
|
||||||
|
|
|
@ -13,6 +13,7 @@ from mhackspace.subscriptions.helper import create_or_update_membership
|
||||||
def update_subscriptions(provider_name):
|
def update_subscriptions(provider_name):
|
||||||
provider = select_provider('gocardless')
|
provider = select_provider('gocardless')
|
||||||
|
|
||||||
|
print(provider)
|
||||||
Membership.objects.all().delete()
|
Membership.objects.all().delete()
|
||||||
for sub in provider.fetch_subscriptions():
|
for sub in provider.fetch_subscriptions():
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -52,6 +52,9 @@ class gocardless_provider:
|
||||||
|
|
||||||
def fetch_subscriptions(self):
|
def fetch_subscriptions(self):
|
||||||
# for paying_member in self.client.mandates.list().records:
|
# for paying_member in self.client.mandates.list().records:
|
||||||
|
print('#############')
|
||||||
|
print(self.client.subscriptions.list())
|
||||||
|
print(self.client.subscriptions.list().records)
|
||||||
for paying_member in self.client.subscriptions.list().records:
|
for paying_member in self.client.subscriptions.list().records:
|
||||||
mandate = self.client.mandates.get(paying_member.links.mandate)
|
mandate = self.client.mandates.get(paying_member.links.mandate)
|
||||||
user = self.client.customers.get(mandate.links.customer)
|
user = self.client.customers.get(mandate.links.customer)
|
||||||
|
|
|
@ -11,12 +11,12 @@ class gocardlessMocks(TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.date_now = django.utils.timezone.now()
|
self.date_now = django.utils.timezone.now()
|
||||||
self.user = self.make_user()
|
self.user1 = self.make_user()
|
||||||
self.auth_gocardless()
|
self.auth_gocardless()
|
||||||
|
|
||||||
def create_membership_record(self):
|
def create_membership_record(self):
|
||||||
member = Membership()
|
member = Membership()
|
||||||
member.user = self.user
|
member.user = self.user1
|
||||||
member.payment = '20.00'
|
member.payment = '20.00'
|
||||||
member.date = self.date_now
|
member.date = self.date_now
|
||||||
member.save()
|
member.save()
|
||||||
|
@ -34,8 +34,7 @@ class gocardlessMocks(TestCase):
|
||||||
|
|
||||||
return self.provider
|
return self.provider
|
||||||
|
|
||||||
def mock_success_responses(self, responses=None):
|
def mock_success_responses_old(self, responses=None):
|
||||||
if responses == None:
|
|
||||||
subscription_properties = Mock(
|
subscription_properties = Mock(
|
||||||
id='02',
|
id='02',
|
||||||
status='active',
|
status='active',
|
||||||
|
@ -63,31 +62,76 @@ class gocardlessMocks(TestCase):
|
||||||
self.provider.client.subscriptions.cancel = PropertyMock(
|
self.provider.client.subscriptions.cancel = PropertyMock(
|
||||||
return_value={'status_code': '200'})
|
return_value={'status_code': '200'})
|
||||||
|
|
||||||
|
def mock_customer_success_responses(self):
|
||||||
|
ApiCustomersGet = namedtuple('ApiCustomersGet', 'email')
|
||||||
|
self.provider.client.customers.get = Mock(
|
||||||
|
return_value=ApiCustomersGet(
|
||||||
|
email='test@test.com')
|
||||||
|
)
|
||||||
|
|
||||||
def mock_success_responses2(self, responses=None):
|
def mock_mandate_success_responses(self):
|
||||||
if responses == None:
|
ApiSubscriptionMandateLink = namedtuple('ApiSubscriptionMandateLink', 'customer')
|
||||||
responses = [Mock(
|
# ApiMandateGet = namedtuple('ApiMandateGet', '')
|
||||||
|
self.provider.client.mandates.get = Mock()
|
||||||
|
|
||||||
|
def mock_success_responses(self, responses=None):
|
||||||
|
if responses is None:
|
||||||
|
responses = Mock(
|
||||||
id='02',
|
id='02',
|
||||||
status='active',
|
status='active',
|
||||||
amount=20.00,
|
amount=20.00,
|
||||||
created_at='date'
|
created_at='date'
|
||||||
)]
|
)
|
||||||
|
|
||||||
mock_list = MagicMock()
|
ApiRecords = namedtuple('ApiRecords', 'records')
|
||||||
mock_list_records = MagicMock(side_effect=[subscription_properties])
|
ApiMandateLink = namedtuple('ApiMandateLink', 'mandate')
|
||||||
mock_list.records.return_value = mock_list_records
|
ApiResponseSubscriptionList = namedtuple('ApiResponseSubscriptionList', 'id, created_at, status, amount, links')
|
||||||
|
self.provider.client.subscriptions.list = Mock(
|
||||||
|
return_value=ApiRecords(
|
||||||
|
records=[
|
||||||
|
ApiResponseSubscriptionList(
|
||||||
|
id='02',
|
||||||
|
status='active',
|
||||||
|
created_at=self.date_now,
|
||||||
|
amount=2000,
|
||||||
|
links=ApiMandateLink(
|
||||||
|
mandate='mid01'
|
||||||
|
)
|
||||||
|
)]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.provider.client.subscriptions.list = mock_list
|
ApiResponseGet = namedtuple('ApiResponseGet', 'api_response, id, status, amount, created_at')
|
||||||
ApiResponse = namedtuple('ApiResponse', 'api_response, created_at')
|
ApiResponseCreate = namedtuple('ApiResponseCreate', 'api_response, id, status, created_at')
|
||||||
|
ApiResponseCancelled = namedtuple('ApiResponseCancelled', 'api_response, status')
|
||||||
ApiResponseStatus = namedtuple('ApiResponseStatus', 'status_code')
|
ApiResponseStatus = namedtuple('ApiResponseStatus', 'status_code')
|
||||||
|
|
||||||
self.provider.client.subscriptions.create = Mock(
|
self.provider.client.subscriptions.create = Mock(
|
||||||
return_value=ApiResponse(
|
return_value=ApiResponseCreate(
|
||||||
|
id='02',
|
||||||
|
status='active',
|
||||||
created_at=self.date_now,
|
created_at=self.date_now,
|
||||||
api_response=ApiResponseStatus(status_code='200'))
|
api_response=ApiResponseStatus(status_code='200'))
|
||||||
)
|
)
|
||||||
|
|
||||||
self.provider.client.subscriptions.get.side_effects = responses
|
self.provider.client.subscriptions.get = Mock(
|
||||||
self.provider.client.subscriptions.cancel = PropertyMock(
|
return_value=ApiResponseGet(
|
||||||
return_value={'status_code': '200'})
|
id='02',
|
||||||
|
created_at=self.date_now,
|
||||||
|
amount=20.00,
|
||||||
|
status='active',
|
||||||
|
api_response=ApiResponseStatus(status_code='200'))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
self.provider.client.subscriptions.cancel = Mock(
|
||||||
|
|
||||||
|
return_value=ApiResponseCancelled(
|
||||||
|
api_response=ApiResponseStatus(status_code='200'),
|
||||||
|
status='cancelled'))
|
||||||
|
|
||||||
|
|
||||||
|
# self.provider.client.subscriptions.cancel = PropertyMock(
|
||||||
|
# return_value={'status_code': '200'})
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -16,22 +16,9 @@ class TestPaymentGatewaysGocardless(gocardlessMocks):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
def test_unsubscribe(self):
|
def test_unsubscribe(self):
|
||||||
responses = [
|
self.mock_success_responses()
|
||||||
Mock(
|
|
||||||
id='02',
|
|
||||||
status='active',
|
|
||||||
amount=20.00,
|
|
||||||
created_at='date'
|
|
||||||
), Mock(
|
|
||||||
id='03',
|
|
||||||
status='active2',
|
|
||||||
amount=40.00,
|
|
||||||
created_at='date'
|
|
||||||
),
|
|
||||||
]
|
|
||||||
self.mock_success_responses2(responses)
|
|
||||||
|
|
||||||
result = self.provider.cancel_subscription(user=self.user, reference='M01')
|
result = self.provider.cancel_subscription(user=self.user1, reference='M01')
|
||||||
|
|
||||||
self.assertEqual(result.get('amount'), 20.00)
|
self.assertEqual(result.get('amount'), 20.00)
|
||||||
self.assertEqual(result.get('reference'), '02')
|
self.assertEqual(result.get('reference'), '02')
|
||||||
|
@ -40,17 +27,6 @@ class TestPaymentGatewaysGocardless(gocardlessMocks):
|
||||||
def test_confirm_subscription_callback(self):
|
def test_confirm_subscription_callback(self):
|
||||||
self.mock_success_responses()
|
self.mock_success_responses()
|
||||||
membership = self.create_membership_record()
|
membership = self.create_membership_record()
|
||||||
|
|
||||||
request_params = {
|
|
||||||
'resource_uri': 'http://gocardless/resource/url/01',
|
|
||||||
'resource_id': '01',
|
|
||||||
'resource_type': 'subscription',
|
|
||||||
'signature': 'sig',
|
|
||||||
'state': 'inactive'
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# membership = Membership.objects.get(user=self.user)
|
|
||||||
result = self.provider.confirm_subscription(
|
result = self.provider.confirm_subscription(
|
||||||
membership=membership,
|
membership=membership,
|
||||||
session=None,
|
session=None,
|
||||||
|
@ -63,9 +39,10 @@ class TestPaymentGatewaysGocardless(gocardlessMocks):
|
||||||
|
|
||||||
def test_fetch_subscription_gocardless(self):
|
def test_fetch_subscription_gocardless(self):
|
||||||
self.mock_success_responses()
|
self.mock_success_responses()
|
||||||
|
self.mock_mandate_success_responses()
|
||||||
|
self.mock_customer_success_responses()
|
||||||
for item in self.provider.fetch_subscriptions():
|
for item in self.provider.fetch_subscriptions():
|
||||||
self.assertEqual(item.get('status'), 'active')
|
self.assertEqual(item.get('status'), 'active')
|
||||||
self.assertEqual(item.get('email'), 'test@test.com')
|
self.assertEqual(item.get('email'), 'test@test.com')
|
||||||
self.assertEqual(item.get('reference'), '02')
|
self.assertEqual(item.get('reference'), '02')
|
||||||
self.assertEqual(item.get('amount'), 20.00)
|
self.assertEqual(item.get('amount'), 20.00)
|
||||||
|
|
||||||
|
|
|
@ -24,13 +24,11 @@ class BaseUserTestCase(gocardlessMocks):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
# self.user = self.make_user()
|
|
||||||
# self.user.save()
|
|
||||||
self.factory = RequestFactory()
|
self.factory = RequestFactory()
|
||||||
self.client = Client()
|
self.client = Client()
|
||||||
self.client.login(
|
self.client.login(
|
||||||
username=self.user.username,
|
username=self.user1.username,
|
||||||
password=self.user.password)
|
password=self.user1.password)
|
||||||
|
|
||||||
|
|
||||||
class TestSubscriptionSuccessRedirectView(BaseUserTestCase):
|
class TestSubscriptionSuccessRedirectView(BaseUserTestCase):
|
||||||
|
@ -96,14 +94,14 @@ class TestSubscriptionSuccessRedirectView(BaseUserTestCase):
|
||||||
setattr(request, 'session', 'session')
|
setattr(request, 'session', 'session')
|
||||||
messages = FallbackStorage(request)
|
messages = FallbackStorage(request)
|
||||||
setattr(request, '_messages', messages)
|
setattr(request, '_messages', messages)
|
||||||
request.user = self.user
|
request.user = self.user1
|
||||||
|
|
||||||
view = MembershipJoinFailureView()
|
view = MembershipJoinFailureView()
|
||||||
view.request = request
|
view.request = request
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
view.get_redirect_url(provider='gocardless'),
|
view.get_redirect_url(provider='gocardless'),
|
||||||
reverse('users:detail', kwargs={'username': self.user.username})
|
reverse('users:detail', kwargs={'username': self.user1.username})
|
||||||
)
|
)
|
||||||
|
|
||||||
members = Membership.objects.all()
|
members = Membership.objects.all()
|
||||||
|
|
Loading…
Reference in New Issue