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:
Robert Kolner committed 2013-09-18 20:53:54 +02:00
commit 609ed03b75
4 files changed
+171 -46

No files matched your search

+36 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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)