This repository has been archived on 2025-06-17. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
dusken-prototype/dusken/tests/membership.py
T

143 lines
4.6 KiB
Python

import logging
import django
from tastypie.models import ApiKey
from dusken.models import Address, Country, Member
from tastypie.test import ResourceTestCase
from utils.tests import test_fixtures_membership
class MembershipTest(ResourceTestCase):
membership_url = '/api/v1/membership/'
membership_url_single = '/api/v1/membership/{}/'
fixtures = test_fixtures_membership()
def setUp(self):
self.member = Member.objects.get(pk=2)
self.creds = self.create_apikey(
username=self.member.username,
api_key=ApiKey.objects.get(user=self.member).key)
super(MembershipTest, self).setUp()
####################################################################
### Helper Functions
def member_url(self, member_id):
return self.membership_url_single.format(member_id)
def do_get_request(self, url):
return self.api_client.get(
url,
format='json',
authentication=self.creds
)
# Help set format and add authentication credentials
def do_post_request(self, url, data):
return self.api_client.post(
url,
format='json',
data=data,
authentication=self.creds
)
####################################################################
### Tests
def test_get_memberships(self):
resp = self.do_get_request(self.membership_url)
self.assertValidJSONResponse(resp)
self.assertEqual(self.expected_memberships(), self.deserialize(resp)['objects'])
def test_get_membership(self):
resp = self.do_get_request(self.member_url(1))
self.assertValidJSONResponse(resp)
self.assertEqual(self.expected_membership(), self.deserialize(resp))
def test_get_membership_with_payment(self):
resp = self.do_get_request(self.member_url(3))
self.assertValidJSONResponse(resp)
def test_post_membership(self):
data = {
u'member': 2,
u'membership_type': 1,
u'start_date': u'2013-09-11',
}
resp = self.do_post_request(self.membership_url, data)
self.assertHttpCreated(resp)
def test_patch_membership(self):
data = {
#u'member': 2,
#u'membership_type': 1,
u'start_date': u'2013-09-11',
}
resp = self.api_client.patch(self.member_url(1),
format='json',
data=data,
authentication=self.creds)
self.assertHttpAccepted(resp) # Note: Patch requests should return HTTP 202 Accepted
####################################################################
### JSON Responses
def expected_memberships(self):
return [{
u'created': u'2013-09-11T20:45:13.341000',
u'expires': u'2013-09-11',
u'id': 1,
u'member': 2,
u'membership_type': 1,
u'payment': None,
u'resource_uri': u'/api/v1/membership/1/',
u'start_date': u'2013-09-11',
u'updated': u'2013-09-11T20:45:13.341000'
},
{
u'membership_type': 1,
u'updated': u'2013-09-11T20:45:30.084000',
u'created': u'2013-09-11T20:45:30.084000',
u'expires': u'2013-09-11',
u'id': 2, u'member': 2,
u'start_date': u'2013-09-15',
u'payment': None,
u'resource_uri': u'/api/v1/membership/2/'
},
{
u'membership_type': 2,
u'updated': u'2013-09-11T20:45:53.522000',
u'created': u'2013-09-11T20:45:53.522000',
u'expires': u'2013-09-11',
u'id': 3,
u'member': 2,
u'start_date': u'2013-09-11',
u'payment': None,
u'resource_uri': u'/api/v1/membership/3/'
}]
def expected_membership(self):
return {
u'created': u'2013-09-11T20:45:13.341000',
u'expires': u'2013-09-11',
u'id': 1,
u'member': 2,
u'membership_type': 1,
u'payment': None,
u'resource_uri': u'/api/v1/membership/1/',
u'start_date': u'2013-09-11',
u'updated': u'2013-09-11T20:45:13.341000'
}
def expected_membership_with_payment(self):
return {
# TODO add membership with payment
}