Archived
t pushMerge branch 'master' of git.neuf.no:dusken
* 'master' of git.neuf.no:dusken: Refactors group tests Adds test and changes and adds post helper Implements first membership tests
This commit is contained in:
commit
609ed03b75
4 files changed
+171
-46
No files matched your search
@@ -1 +1,36 @@
|
||||
[{"pk": 1, "model": "dusken.membership", "fields": {"member": 2, "updated": "2013-09-11T18:45:13.341Z", "created": "2013-09-11T18:45:13.341Z", "payment": null, "mtype": 1, "start_date": "2013-09-11"}}, {"pk": 2, "model": "dusken.membership", "fields": {"member": 2, "updated": "2013-09-11T18:45:30.084Z", "created": "2013-09-11T18:45:30.084Z", "payment": null, "mtype": 1, "start_date": "2013-09-15"}}, {"pk": 3, "model": "dusken.membership", "fields": {"member": 2, "updated": "2013-09-11T18:45:53.522Z", "created": "2013-09-11T18:45:53.522Z", "payment": null, "mtype": 2, "start_date": "2013-09-11"}}]
|
||||
[
|
||||
{
|
||||
"pk": 1,
|
||||
"model": "dusken.membership",
|
||||
"fields": {
|
||||
"member": 2,
|
||||
"updated": "2013-09-11T18:45:13.341Z",
|
||||
"created": "2013-09-11T18:45:13.341Z",
|
||||
"payment": null,
|
||||
"mtype": 1,
|
||||
"start_date": "2013-09-11"
|
||||
}
|
||||
}, {
|
||||
"pk": 2,
|
||||
"model": "dusken.membership",
|
||||
"fields": {
|
||||
"member": 2,
|
||||
"updated": "2013-09-11T18:45:30.084Z",
|
||||
"created": "2013-09-11T18:45:30.084Z",
|
||||
"payment": null,
|
||||
"mtype": 1,
|
||||
"start_date": "2013-09-15"
|
||||
}
|
||||
}, {
|
||||
"pk": 3,
|
||||
"model": "dusken.membership",
|
||||
"fields": {
|
||||
"member": 2,
|
||||
"updated": "2013-09-11T18:45:53.522Z",
|
||||
"created": "2013-09-11T18:45:53.522Z",
|
||||
"payment": null,
|
||||
"mtype": 2,
|
||||
"start_date": "2013-09-11"
|
||||
}
|
||||
}
|
||||
]
|
||||
+5
-29
@@ -1,46 +1,22 @@
|
||||
import logging
|
||||
import utils.tests
|
||||
|
||||
from support.test import ResourceTestCase
|
||||
from dusken.models import Group
|
||||
from support.test import ResourceTestCase
|
||||
|
||||
class GroupTest(ResourceTestCase):
|
||||
|
||||
def assertValidMemberData(self, member):
|
||||
self.assertEquals(type(member), dict)
|
||||
self.assertKeys(member, [
|
||||
u'id',
|
||||
u'name',
|
||||
u'posix_name',
|
||||
u'created',
|
||||
u'updated',
|
||||
u'resource_uri'
|
||||
])
|
||||
self.assertNotEquals(None,member['id'])
|
||||
self.assertNotEquals(None,member['name'])
|
||||
self.assertNotEquals(None,member['posix_name'])
|
||||
self.assertNotEquals(None,member['created'])
|
||||
self.assertNotEquals(None,member['updated'])
|
||||
self.assertNotEquals(None,member['resource_uri'])
|
||||
|
||||
def setUp(self):
|
||||
super(GroupTest, self).setUp()
|
||||
|
||||
# URI to get all groups
|
||||
self.groups_url = '/api/v1/group/'
|
||||
|
||||
def test_request_types(self):
|
||||
"""
|
||||
Tests that the endpoint responds to correct types of requests.
|
||||
"""
|
||||
resp = self.api_client.get(self.groups_url, format='json')
|
||||
self.assertNotEquals(resp.status_code, 405)
|
||||
|
||||
resp = self.api_client.post(self.groups_url)
|
||||
self.assertNotEquals(resp.status_code, 405)
|
||||
|
||||
def test_put_not_allowed(self):
|
||||
resp = self.api_client.put(self.groups_url)
|
||||
self.assertHttpMethodNotAllowed(resp)
|
||||
|
||||
def test_delete_not_allowed(self):
|
||||
resp = self.api_client.delete(self.groups_url)
|
||||
self.assertHttpMethodNotAllowed(resp)
|
||||
|
||||
|
||||
+109
-12
@@ -5,11 +5,10 @@ from support.test import ResourceTestCase
|
||||
from tastypie.models import ApiKey
|
||||
from utils.tests import load_test_fixtures_for_membership
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
class MembershipTest(ResourceTestCase):
|
||||
|
||||
membership_url = '/api/v1/membership/'
|
||||
membership_url_single = '/api/v1/membership/{}/'.format(1)
|
||||
membership_url_single = '/api/v1/membership/{}/'
|
||||
|
||||
def setUp(self):
|
||||
load_test_fixtures_for_membership()
|
||||
@@ -20,20 +19,118 @@ class MembershipTest(ResourceTestCase):
|
||||
|
||||
super(MembershipTest, self).setUp()
|
||||
|
||||
def test_get_memberships(self):
|
||||
resp = self.api_client.get(
|
||||
self.membership_url,
|
||||
####################################################################
|
||||
### 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
|
||||
)
|
||||
|
||||
self.assertValidJSONResponse(resp)
|
||||
|
||||
def test_get_single_membership(self):
|
||||
resp = self.api_client.get(
|
||||
self.membership_url_single,
|
||||
format='json',
|
||||
authentication=self.creds
|
||||
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(4))
|
||||
|
||||
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.assertValidJSONResponse(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.assertValidJSONResponse(resp)
|
||||
|
||||
####################################################################
|
||||
### JSON Responses
|
||||
def expected_memberships(self):
|
||||
return [{
|
||||
u'created': u'2013-09-11T20:45:13.341000',
|
||||
u'expires': u'2014-07-31T00:00:00',
|
||||
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'2014-07-31T00:00:00',
|
||||
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'2014-03-18T00:00:00',
|
||||
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'2014-07-31T00:00:00',
|
||||
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
|
||||
}
|
||||
+21
-4
@@ -4,7 +4,25 @@ import django
|
||||
from dusken.models import Member
|
||||
from tastypie.models import create_api_key
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
####################################################################
|
||||
### Request helper functions
|
||||
def do_get_request(self, url, creds):
|
||||
return self.api_client.get(
|
||||
url,
|
||||
format='json',
|
||||
authentication=creds
|
||||
)
|
||||
|
||||
def do_post_request(self, url, data, creds):
|
||||
return self.api_client.post(
|
||||
url,
|
||||
format='json',
|
||||
data=data,
|
||||
authentication=creds
|
||||
)
|
||||
|
||||
####################################################################
|
||||
### Fixture helper functions
|
||||
def test_fixtures():
|
||||
''' Returns a list with the locations of all defined fixtures. '''
|
||||
return [os.path.join('dusken', 'fixtures', 'country.json'),
|
||||
@@ -12,7 +30,6 @@ def test_fixtures():
|
||||
os.path.join('dusken', 'fixtures', 'institution.json'),
|
||||
]
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
def load_test_fixtures():
|
||||
''' Explicitly load all defined fixtures. This can be useful when
|
||||
you only want to load the fixtures for some testcases, but not
|
||||
@@ -20,7 +37,6 @@ def load_test_fixtures():
|
||||
for f in test_fixtures():
|
||||
call_command('loaddata', f, verbosity=0)
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
def test_fixtures_member():
|
||||
''' Returns a list with the locations of all defined fixtures. '''
|
||||
return [os.path.join('dusken', 'fixtures', 'address.json'),
|
||||
@@ -36,7 +52,8 @@ def test_fixtures_membership():
|
||||
os.path.join('dusken', 'fixtures', 'membershiptype.json'),
|
||||
os.path.join('dusken', 'fixtures', 'membership.json'),
|
||||
]
|
||||
|
||||
def load_test_fixtures_for_membership():
|
||||
django.db.models.signals.post_save.disconnect(create_api_key, sender=Member)
|
||||
for f in test_fixtures_membership():
|
||||
call_command('loaddata', f, verbosity=0)
|
||||
call_command('loaddata', f, verbosity=0)
|
||||
Reference in new issue
Block a user