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 mhackspace.users.models import Membership
|
||||
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.tests.mocks import gocardlessMocks
|
||||
|
||||
# this needs mocking
|
||||
class TestTasks(TestCase):
|
||||
class TestTasks(gocardlessMocks):
|
||||
def setUp(self):
|
||||
self.user1 = self.make_user('u1')
|
||||
super().setUp()
|
||||
self.user2 = self.make_user('u2')
|
||||
self.user3 = self.make_user('u3')
|
||||
self.group = Group(name='members')
|
||||
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()
|
||||
user_count = User.objects.all().count()
|
||||
membership_count = Membership.objects.all().count()
|
||||
self.assertEquals(0, membership_count)
|
||||
self.assertEquals(2, user_count)
|
||||
self.assertEquals(3, user_count)
|
||||
|
||||
update_subscriptions(provider_name='gocardless')
|
||||
|
||||
self.mock_success_responses()
|
||||
|
||||
membership_count = Membership.objects.all().count()
|
||||
self.assertEquals(2, membership_count)
|
||||
self.assertEquals(2, user_count)
|
||||
|
|
|
@ -13,6 +13,7 @@ from mhackspace.subscriptions.helper import create_or_update_membership
|
|||
def update_subscriptions(provider_name):
|
||||
provider = select_provider('gocardless')
|
||||
|
||||
print(provider)
|
||||
Membership.objects.all().delete()
|
||||
for sub in provider.fetch_subscriptions():
|
||||
try:
|
||||
|
|
|
@ -52,6 +52,9 @@ class gocardless_provider:
|
|||
|
||||
def fetch_subscriptions(self):
|
||||
# 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:
|
||||
mandate = self.client.mandates.get(paying_member.links.mandate)
|
||||
user = self.client.customers.get(mandate.links.customer)
|
||||
|
|
|
@ -11,12 +11,12 @@ class gocardlessMocks(TestCase):
|
|||
|
||||
def setUp(self):
|
||||
self.date_now = django.utils.timezone.now()
|
||||
self.user = self.make_user()
|
||||
self.user1 = self.make_user()
|
||||
self.auth_gocardless()
|
||||
|
||||
def create_membership_record(self):
|
||||
member = Membership()
|
||||
member.user = self.user
|
||||
member.user = self.user1
|
||||
member.payment = '20.00'
|
||||
member.date = self.date_now
|
||||
member.save()
|
||||
|
@ -34,8 +34,7 @@ class gocardlessMocks(TestCase):
|
|||
|
||||
return self.provider
|
||||
|
||||
def mock_success_responses(self, responses=None):
|
||||
if responses == None:
|
||||
def mock_success_responses_old(self, responses=None):
|
||||
subscription_properties = Mock(
|
||||
id='02',
|
||||
status='active',
|
||||
|
@ -63,31 +62,76 @@ class gocardlessMocks(TestCase):
|
|||
self.provider.client.subscriptions.cancel = PropertyMock(
|
||||
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):
|
||||
if responses == None:
|
||||
responses = [Mock(
|
||||
def mock_mandate_success_responses(self):
|
||||
ApiSubscriptionMandateLink = namedtuple('ApiSubscriptionMandateLink', 'customer')
|
||||
# ApiMandateGet = namedtuple('ApiMandateGet', '')
|
||||
self.provider.client.mandates.get = Mock()
|
||||
|
||||
def mock_success_responses(self, responses=None):
|
||||
if responses is None:
|
||||
responses = Mock(
|
||||
id='02',
|
||||
status='active',
|
||||
amount=20.00,
|
||||
created_at='date'
|
||||
)]
|
||||
)
|
||||
|
||||
mock_list = MagicMock()
|
||||
mock_list_records = MagicMock(side_effect=[subscription_properties])
|
||||
mock_list.records.return_value = mock_list_records
|
||||
ApiRecords = namedtuple('ApiRecords', 'records')
|
||||
ApiMandateLink = namedtuple('ApiMandateLink', 'mandate')
|
||||
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
|
||||
ApiResponse = namedtuple('ApiResponse', 'api_response, created_at')
|
||||
ApiResponseGet = namedtuple('ApiResponseGet', 'api_response, id, status, amount, created_at')
|
||||
ApiResponseCreate = namedtuple('ApiResponseCreate', 'api_response, id, status, created_at')
|
||||
ApiResponseCancelled = namedtuple('ApiResponseCancelled', 'api_response, status')
|
||||
ApiResponseStatus = namedtuple('ApiResponseStatus', 'status_code')
|
||||
|
||||
self.provider.client.subscriptions.create = Mock(
|
||||
return_value=ApiResponse(
|
||||
return_value=ApiResponseCreate(
|
||||
id='02',
|
||||
status='active',
|
||||
created_at=self.date_now,
|
||||
api_response=ApiResponseStatus(status_code='200'))
|
||||
)
|
||||
|
||||
self.provider.client.subscriptions.get.side_effects = responses
|
||||
self.provider.client.subscriptions.cancel = PropertyMock(
|
||||
return_value={'status_code': '200'})
|
||||
self.provider.client.subscriptions.get = Mock(
|
||||
return_value=ApiResponseGet(
|
||||
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()
|
||||
|
||||
def test_unsubscribe(self):
|
||||
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)
|
||||
self.mock_success_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('reference'), '02')
|
||||
|
@ -40,17 +27,6 @@ class TestPaymentGatewaysGocardless(gocardlessMocks):
|
|||
def test_confirm_subscription_callback(self):
|
||||
self.mock_success_responses()
|
||||
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(
|
||||
membership=membership,
|
||||
session=None,
|
||||
|
@ -63,9 +39,10 @@ class TestPaymentGatewaysGocardless(gocardlessMocks):
|
|||
|
||||
def test_fetch_subscription_gocardless(self):
|
||||
self.mock_success_responses()
|
||||
self.mock_mandate_success_responses()
|
||||
self.mock_customer_success_responses()
|
||||
for item in self.provider.fetch_subscriptions():
|
||||
self.assertEqual(item.get('status'), 'active')
|
||||
self.assertEqual(item.get('email'), 'test@test.com')
|
||||
self.assertEqual(item.get('reference'), '02')
|
||||
self.assertEqual(item.get('amount'), 20.00)
|
||||
|
||||
|
|
|
@ -24,13 +24,11 @@ class BaseUserTestCase(gocardlessMocks):
|
|||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
# self.user = self.make_user()
|
||||
# self.user.save()
|
||||
self.factory = RequestFactory()
|
||||
self.client = Client()
|
||||
self.client.login(
|
||||
username=self.user.username,
|
||||
password=self.user.password)
|
||||
username=self.user1.username,
|
||||
password=self.user1.password)
|
||||
|
||||
|
||||
class TestSubscriptionSuccessRedirectView(BaseUserTestCase):
|
||||
|
@ -96,14 +94,14 @@ class TestSubscriptionSuccessRedirectView(BaseUserTestCase):
|
|||
setattr(request, 'session', 'session')
|
||||
messages = FallbackStorage(request)
|
||||
setattr(request, '_messages', messages)
|
||||
request.user = self.user
|
||||
request.user = self.user1
|
||||
|
||||
view = MembershipJoinFailureView()
|
||||
view.request = request
|
||||
|
||||
self.assertEqual(
|
||||
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()
|
||||
|
|
Loading…
Reference in New Issue