From 5bb6301b7f53e3815ab1a81a5fa38721dc95b113 Mon Sep 17 00:00:00 2001 From: Sébastien Piquemal Date: Thu, 2 Feb 2012 18:19:44 +0200 Subject: Response as a subclass of HttpResponse - first draft, not quite there yet. --- djangorestframework/tests/mixins.py | 47 +++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 26 deletions(-) (limited to 'djangorestframework/tests/mixins.py') diff --git a/djangorestframework/tests/mixins.py b/djangorestframework/tests/mixins.py index a7512efc..7a1d2769 100644 --- a/djangorestframework/tests/mixins.py +++ b/djangorestframework/tests/mixins.py @@ -65,7 +65,7 @@ class TestModelCreation(TestModelsTestCase): response = mixin.post(request) self.assertEquals(1, Group.objects.count()) - self.assertEquals('foo', response.cleaned_content.name) + self.assertEquals('foo', response.raw_content.name) def test_creation_with_m2m_relation(self): class UserResource(ModelResource): @@ -91,8 +91,8 @@ class TestModelCreation(TestModelsTestCase): response = mixin.post(request) self.assertEquals(1, User.objects.count()) - self.assertEquals(1, response.cleaned_content.groups.count()) - self.assertEquals('foo', response.cleaned_content.groups.all()[0].name) + self.assertEquals(1, response.raw_content.groups.count()) + self.assertEquals('foo', response.raw_content.groups.all()[0].name) def test_creation_with_m2m_relation_through(self): """ @@ -114,7 +114,7 @@ class TestModelCreation(TestModelsTestCase): response = mixin.post(request) self.assertEquals(1, CustomUser.objects.count()) - self.assertEquals(0, response.cleaned_content.groups.count()) + self.assertEquals(0, response.raw_content.groups.count()) group = Group(name='foo1') group.save() @@ -129,8 +129,8 @@ class TestModelCreation(TestModelsTestCase): response = mixin.post(request) self.assertEquals(2, CustomUser.objects.count()) - self.assertEquals(1, response.cleaned_content.groups.count()) - self.assertEquals('foo1', response.cleaned_content.groups.all()[0].name) + self.assertEquals(1, response.raw_content.groups.count()) + self.assertEquals('foo1', response.raw_content.groups.all()[0].name) group2 = Group(name='foo2') group2.save() @@ -145,19 +145,19 @@ class TestModelCreation(TestModelsTestCase): response = mixin.post(request) self.assertEquals(3, CustomUser.objects.count()) - self.assertEquals(2, response.cleaned_content.groups.count()) - self.assertEquals('foo1', response.cleaned_content.groups.all()[0].name) - self.assertEquals('foo2', response.cleaned_content.groups.all()[1].name) + self.assertEquals(2, response.raw_content.groups.count()) + self.assertEquals('foo1', response.raw_content.groups.all()[0].name) + self.assertEquals('foo2', response.raw_content.groups.all()[1].name) class MockPaginatorView(PaginatorMixin, View): total = 60 def get(self, request): - return range(0, self.total) + return Response(range(0, self.total)) def post(self, request): - return Response(status.HTTP_201_CREATED, {'status': 'OK'}) + return Response({'status': 'OK'}, status=status.HTTP_201_CREATED) class TestPagination(TestCase): @@ -168,8 +168,7 @@ class TestPagination(TestCase): """ Tests if pagination works without overwriting the limit """ request = self.req.get('/paginator') response = MockPaginatorView.as_view()(request) - - content = json.loads(response.content) + content = response.raw_content self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(MockPaginatorView.total, content['total']) @@ -183,8 +182,7 @@ class TestPagination(TestCase): request = self.req.get('/paginator') response = MockPaginatorView.as_view(limit=limit)(request) - - content = json.loads(response.content) + content = response.raw_content self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(content['per_page'], limit) @@ -200,8 +198,7 @@ class TestPagination(TestCase): request = self.req.get('/paginator/?limit=%d' % limit) response = MockPaginatorView.as_view()(request) - - content = json.loads(response.content) + content = response.raw_content self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(MockPaginatorView.total, content['total']) @@ -217,8 +214,7 @@ class TestPagination(TestCase): request = self.req.get('/paginator/?limit=%d' % limit) response = MockPaginatorView.as_view()(request) - - content = json.loads(response.content) + content = response.raw_content self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(MockPaginatorView.total, content['total']) @@ -230,8 +226,7 @@ class TestPagination(TestCase): """ Pagination should only work for GET requests """ request = self.req.post('/paginator', data={'content': 'spam'}) response = MockPaginatorView.as_view()(request) - - content = json.loads(response.content) + content = response.raw_content self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(None, content.get('per_page')) @@ -248,12 +243,12 @@ class TestPagination(TestCase): """ Tests that the page range is handle correctly """ request = self.req.get('/paginator/?page=0') response = MockPaginatorView.as_view()(request) - content = json.loads(response.content) + content = response.raw_content self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) request = self.req.get('/paginator/') response = MockPaginatorView.as_view()(request) - content = json.loads(response.content) + content = response.raw_content self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(range(0, MockPaginatorView.limit), content['results']) @@ -261,13 +256,13 @@ class TestPagination(TestCase): request = self.req.get('/paginator/?page=%d' % num_pages) response = MockPaginatorView.as_view()(request) - content = json.loads(response.content) + content = response.raw_content self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(range(MockPaginatorView.limit*(num_pages-1), MockPaginatorView.total), content['results']) request = self.req.get('/paginator/?page=%d' % (num_pages + 1,)) response = MockPaginatorView.as_view()(request) - content = json.loads(response.content) + content = response.raw_content self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) def test_existing_query_parameters_are_preserved(self): @@ -275,7 +270,7 @@ class TestPagination(TestCase): generating next/previous page links """ request = self.req.get('/paginator/?foo=bar&another=something') response = MockPaginatorView.as_view()(request) - content = json.loads(response.content) + content = response.raw_content self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue('foo=bar' in content['next']) self.assertTrue('another=something' in content['next']) -- cgit v1.2.3 From ca96b4523b4c09489e4bfe726a894a5c6ada78aa Mon Sep 17 00:00:00 2001 From: Sébastien Piquemal Date: Tue, 7 Feb 2012 13:15:30 +0200 Subject: cleaned a bit Response/ResponseMixin code, added some documentation + renamed ErrorResponse to ImmediateResponse --- djangorestframework/tests/mixins.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'djangorestframework/tests/mixins.py') diff --git a/djangorestframework/tests/mixins.py b/djangorestframework/tests/mixins.py index 7a1d2769..187ce719 100644 --- a/djangorestframework/tests/mixins.py +++ b/djangorestframework/tests/mixins.py @@ -6,7 +6,7 @@ from djangorestframework.compat import RequestFactory from django.contrib.auth.models import Group, User from djangorestframework.mixins import CreateModelMixin, PaginatorMixin, ReadModelMixin from djangorestframework.resources import ModelResource -from djangorestframework.response import Response, ErrorResponse +from djangorestframework.response import Response, ImmediateResponse from djangorestframework.tests.models import CustomUser from djangorestframework.tests.testcases import TestModelsTestCase from djangorestframework.views import View @@ -41,7 +41,7 @@ class TestModelRead(TestModelsTestCase): mixin = ReadModelMixin() mixin.resource = GroupResource - self.assertRaises(ErrorResponse, mixin.get, request, id=12345) + self.assertRaises(ImmediateResponse, mixin.get, request, id=12345) class TestModelCreation(TestModelsTestCase): -- cgit v1.2.3 From b33579a7a18c2cbc6e3789d4a7dc78c82fb0fe80 Mon Sep 17 00:00:00 2001 From: Sébastien Piquemal Date: Fri, 10 Feb 2012 11:05:20 +0200 Subject: attempt at fixing the examples --- djangorestframework/tests/mixins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'djangorestframework/tests/mixins.py') diff --git a/djangorestframework/tests/mixins.py b/djangorestframework/tests/mixins.py index 187ce719..3f5835aa 100644 --- a/djangorestframework/tests/mixins.py +++ b/djangorestframework/tests/mixins.py @@ -31,7 +31,7 @@ class TestModelRead(TestModelsTestCase): mixin.resource = GroupResource response = mixin.get(request, id=group.id) - self.assertEquals(group.name, response.name) + self.assertEquals(group.name, response.raw_content.name) def test_read_404(self): class GroupResource(ModelResource): -- cgit v1.2.3 From 242327d339fe1193a45c64cb20a2ba4c56044c3b Mon Sep 17 00:00:00 2001 From: Sébastien Piquemal Date: Thu, 23 Feb 2012 08:54:25 +0200 Subject: hack to fix ImmediateResponse rendering --- djangorestframework/tests/mixins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'djangorestframework/tests/mixins.py') diff --git a/djangorestframework/tests/mixins.py b/djangorestframework/tests/mixins.py index 85c95d61..25c57bd6 100644 --- a/djangorestframework/tests/mixins.py +++ b/djangorestframework/tests/mixins.py @@ -281,6 +281,6 @@ class TestPagination(TestCase): paginated URLs. So page 1 should contain ?page=2, not ?page=1&page=2 """ request = self.req.get('/paginator/?page=1') response = MockPaginatorView.as_view()(request) - content = json.loads(response.content) + content = response.raw_content self.assertTrue('page=2' in content['next']) self.assertFalse('page=1' in content['next']) -- cgit v1.2.3 From aed26b218ea39110489e85abc6f412399a1774a1 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Fri, 24 Aug 2012 22:11:00 +0100 Subject: Drop out resources & mixins --- djangorestframework/tests/mixins.py | 565 ++++++++++++++++++------------------ 1 file changed, 282 insertions(+), 283 deletions(-) (limited to 'djangorestframework/tests/mixins.py') diff --git a/djangorestframework/tests/mixins.py b/djangorestframework/tests/mixins.py index 25c57bd6..05ce655d 100644 --- a/djangorestframework/tests/mixins.py +++ b/djangorestframework/tests/mixins.py @@ -1,286 +1,285 @@ -"""Tests for the mixin module""" -from django.test import TestCase -from django.utils import simplejson as json -from djangorestframework import status -from djangorestframework.compat import RequestFactory -from django.contrib.auth.models import Group, User -from djangorestframework.mixins import CreateModelMixin, PaginatorMixin, ReadModelMixin -from djangorestframework.resources import ModelResource -from djangorestframework.response import Response, ImmediateResponse -from djangorestframework.tests.models import CustomUser -from djangorestframework.tests.testcases import TestModelsTestCase -from djangorestframework.views import View - - -class TestModelRead(TestModelsTestCase): - """Tests on ReadModelMixin""" - - def setUp(self): - super(TestModelRead, self).setUp() - self.req = RequestFactory() - - def test_read(self): - Group.objects.create(name='other group') - group = Group.objects.create(name='my group') - - class GroupResource(ModelResource): - model = Group - - request = self.req.get('/groups') - mixin = ReadModelMixin() - mixin.resource = GroupResource - - response = mixin.get(request, id=group.id) - self.assertEquals(group.name, response.raw_content.name) - - def test_read_404(self): - class GroupResource(ModelResource): - model = Group - - request = self.req.get('/groups') - mixin = ReadModelMixin() - mixin.resource = GroupResource - - self.assertRaises(ImmediateResponse, mixin.get, request, id=12345) - - -class TestModelCreation(TestModelsTestCase): - """Tests on CreateModelMixin""" - - def setUp(self): - super(TestModelsTestCase, self).setUp() - self.req = RequestFactory() - - def test_creation(self): - self.assertEquals(0, Group.objects.count()) - - class GroupResource(ModelResource): - model = Group - - form_data = {'name': 'foo'} - request = self.req.post('/groups', data=form_data) - mixin = CreateModelMixin() - mixin.resource = GroupResource - mixin.CONTENT = form_data - - response = mixin.post(request) - self.assertEquals(1, Group.objects.count()) - self.assertEquals('foo', response.raw_content.name) - - def test_creation_with_m2m_relation(self): - class UserResource(ModelResource): - model = User - - def url(self, instance): - return "/users/%i" % instance.id - - group = Group(name='foo') - group.save() - - form_data = { - 'username': 'bar', - 'password': 'baz', - 'groups': [group.id] - } - request = self.req.post('/groups', data=form_data) - cleaned_data = dict(form_data) - cleaned_data['groups'] = [group] - mixin = CreateModelMixin() - mixin.resource = UserResource - mixin.CONTENT = cleaned_data - - response = mixin.post(request) - self.assertEquals(1, User.objects.count()) - self.assertEquals(1, response.raw_content.groups.count()) - self.assertEquals('foo', response.raw_content.groups.all()[0].name) - - def test_creation_with_m2m_relation_through(self): - """ - Tests creation where the m2m relation uses a through table - """ - class UserResource(ModelResource): - model = CustomUser - - def url(self, instance): - return "/customusers/%i" % instance.id - - form_data = {'username': 'bar0', 'groups': []} - request = self.req.post('/groups', data=form_data) - cleaned_data = dict(form_data) - cleaned_data['groups'] = [] - mixin = CreateModelMixin() - mixin.resource = UserResource - mixin.CONTENT = cleaned_data +# """Tests for the mixin module""" +# from django.test import TestCase +# from djangorestframework import status +# from djangorestframework.compat import RequestFactory +# from django.contrib.auth.models import Group, User +# from djangorestframework.mixins import CreateModelMixin, PaginatorMixin, ReadModelMixin +# from djangorestframework.resources import ModelResource +# from djangorestframework.response import Response, ImmediateResponse +# from djangorestframework.tests.models import CustomUser +# from djangorestframework.tests.testcases import TestModelsTestCase +# from djangorestframework.views import View + + +# class TestModelRead(TestModelsTestCase): +# """Tests on ReadModelMixin""" + +# def setUp(self): +# super(TestModelRead, self).setUp() +# self.req = RequestFactory() + +# def test_read(self): +# Group.objects.create(name='other group') +# group = Group.objects.create(name='my group') + +# class GroupResource(ModelResource): +# model = Group + +# request = self.req.get('/groups') +# mixin = ReadModelMixin() +# mixin.resource = GroupResource + +# response = mixin.get(request, id=group.id) +# self.assertEquals(group.name, response.raw_content.name) + +# def test_read_404(self): +# class GroupResource(ModelResource): +# model = Group + +# request = self.req.get('/groups') +# mixin = ReadModelMixin() +# mixin.resource = GroupResource + +# self.assertRaises(ImmediateResponse, mixin.get, request, id=12345) + + +# class TestModelCreation(TestModelsTestCase): +# """Tests on CreateModelMixin""" + +# def setUp(self): +# super(TestModelsTestCase, self).setUp() +# self.req = RequestFactory() + +# def test_creation(self): +# self.assertEquals(0, Group.objects.count()) + +# class GroupResource(ModelResource): +# model = Group + +# form_data = {'name': 'foo'} +# request = self.req.post('/groups', data=form_data) +# mixin = CreateModelMixin() +# mixin.resource = GroupResource +# mixin.CONTENT = form_data + +# response = mixin.post(request) +# self.assertEquals(1, Group.objects.count()) +# self.assertEquals('foo', response.raw_content.name) + +# def test_creation_with_m2m_relation(self): +# class UserResource(ModelResource): +# model = User + +# def url(self, instance): +# return "/users/%i" % instance.id + +# group = Group(name='foo') +# group.save() + +# form_data = { +# 'username': 'bar', +# 'password': 'baz', +# 'groups': [group.id] +# } +# request = self.req.post('/groups', data=form_data) +# cleaned_data = dict(form_data) +# cleaned_data['groups'] = [group] +# mixin = CreateModelMixin() +# mixin.resource = UserResource +# mixin.CONTENT = cleaned_data + +# response = mixin.post(request) +# self.assertEquals(1, User.objects.count()) +# self.assertEquals(1, response.raw_content.groups.count()) +# self.assertEquals('foo', response.raw_content.groups.all()[0].name) + +# def test_creation_with_m2m_relation_through(self): +# """ +# Tests creation where the m2m relation uses a through table +# """ +# class UserResource(ModelResource): +# model = CustomUser + +# def url(self, instance): +# return "/customusers/%i" % instance.id + +# form_data = {'username': 'bar0', 'groups': []} +# request = self.req.post('/groups', data=form_data) +# cleaned_data = dict(form_data) +# cleaned_data['groups'] = [] +# mixin = CreateModelMixin() +# mixin.resource = UserResource +# mixin.CONTENT = cleaned_data - response = mixin.post(request) - self.assertEquals(1, CustomUser.objects.count()) - self.assertEquals(0, response.raw_content.groups.count()) +# response = mixin.post(request) +# self.assertEquals(1, CustomUser.objects.count()) +# self.assertEquals(0, response.raw_content.groups.count()) - group = Group(name='foo1') - group.save() +# group = Group(name='foo1') +# group.save() - form_data = {'username': 'bar1', 'groups': [group.id]} - request = self.req.post('/groups', data=form_data) - cleaned_data = dict(form_data) - cleaned_data['groups'] = [group] - mixin = CreateModelMixin() - mixin.resource = UserResource - mixin.CONTENT = cleaned_data - - response = mixin.post(request) - self.assertEquals(2, CustomUser.objects.count()) - self.assertEquals(1, response.raw_content.groups.count()) - self.assertEquals('foo1', response.raw_content.groups.all()[0].name) - - group2 = Group(name='foo2') - group2.save() - - form_data = {'username': 'bar2', 'groups': [group.id, group2.id]} - request = self.req.post('/groups', data=form_data) - cleaned_data = dict(form_data) - cleaned_data['groups'] = [group, group2] - mixin = CreateModelMixin() - mixin.resource = UserResource - mixin.CONTENT = cleaned_data - - response = mixin.post(request) - self.assertEquals(3, CustomUser.objects.count()) - self.assertEquals(2, response.raw_content.groups.count()) - self.assertEquals('foo1', response.raw_content.groups.all()[0].name) - self.assertEquals('foo2', response.raw_content.groups.all()[1].name) - - -class MockPaginatorView(PaginatorMixin, View): - total = 60 - - def get(self, request): - return Response(range(0, self.total)) - - def post(self, request): - return Response({'status': 'OK'}, status=status.HTTP_201_CREATED) - - -class TestPagination(TestCase): - def setUp(self): - self.req = RequestFactory() - - def test_default_limit(self): - """ Tests if pagination works without overwriting the limit """ - request = self.req.get('/paginator') - response = MockPaginatorView.as_view()(request) - content = response.raw_content - - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(MockPaginatorView.total, content['total']) - self.assertEqual(MockPaginatorView.limit, content['per_page']) - - self.assertEqual(range(0, MockPaginatorView.limit), content['results']) - - def test_overwriting_limit(self): - """ Tests if the limit can be overwritten """ - limit = 10 - - request = self.req.get('/paginator') - response = MockPaginatorView.as_view(limit=limit)(request) - content = response.raw_content - - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(content['per_page'], limit) - - self.assertEqual(range(0, limit), content['results']) - - def test_limit_param(self): - """ Tests if the client can set the limit """ - from math import ceil - - limit = 5 - num_pages = int(ceil(MockPaginatorView.total / float(limit))) - - request = self.req.get('/paginator/?limit=%d' % limit) - response = MockPaginatorView.as_view()(request) - content = response.raw_content - - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(MockPaginatorView.total, content['total']) - self.assertEqual(limit, content['per_page']) - self.assertEqual(num_pages, content['pages']) - - def test_exceeding_limit(self): - """ Makes sure the client cannot exceed the default limit """ - from math import ceil - - limit = MockPaginatorView.limit + 10 - num_pages = int(ceil(MockPaginatorView.total / float(limit))) - - request = self.req.get('/paginator/?limit=%d' % limit) - response = MockPaginatorView.as_view()(request) - content = response.raw_content - - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(MockPaginatorView.total, content['total']) - self.assertNotEqual(limit, content['per_page']) - self.assertNotEqual(num_pages, content['pages']) - self.assertEqual(MockPaginatorView.limit, content['per_page']) - - def test_only_works_for_get(self): - """ Pagination should only work for GET requests """ - request = self.req.post('/paginator', data={'content': 'spam'}) - response = MockPaginatorView.as_view()(request) - content = response.raw_content - - self.assertEqual(response.status_code, status.HTTP_201_CREATED) - self.assertEqual(None, content.get('per_page')) - self.assertEqual('OK', content['status']) - - def test_non_int_page(self): - """ Tests that it can handle invalid values """ - request = self.req.get('/paginator/?page=spam') - response = MockPaginatorView.as_view()(request) - - self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - - def test_page_range(self): - """ Tests that the page range is handle correctly """ - request = self.req.get('/paginator/?page=0') - response = MockPaginatorView.as_view()(request) - content = response.raw_content - self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - - request = self.req.get('/paginator/') - response = MockPaginatorView.as_view()(request) - content = response.raw_content - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(range(0, MockPaginatorView.limit), content['results']) - - num_pages = content['pages'] - - request = self.req.get('/paginator/?page=%d' % num_pages) - response = MockPaginatorView.as_view()(request) - content = response.raw_content - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(range(MockPaginatorView.limit*(num_pages-1), MockPaginatorView.total), content['results']) - - request = self.req.get('/paginator/?page=%d' % (num_pages + 1,)) - response = MockPaginatorView.as_view()(request) - content = response.raw_content - self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - - def test_existing_query_parameters_are_preserved(self): - """ Tests that existing query parameters are preserved when - generating next/previous page links """ - request = self.req.get('/paginator/?foo=bar&another=something') - response = MockPaginatorView.as_view()(request) - content = response.raw_content - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertTrue('foo=bar' in content['next']) - self.assertTrue('another=something' in content['next']) - self.assertTrue('page=2' in content['next']) - - def test_duplicate_parameters_are_not_created(self): - """ Regression: ensure duplicate "page" parameters are not added to - paginated URLs. So page 1 should contain ?page=2, not ?page=1&page=2 """ - request = self.req.get('/paginator/?page=1') - response = MockPaginatorView.as_view()(request) - content = response.raw_content - self.assertTrue('page=2' in content['next']) - self.assertFalse('page=1' in content['next']) +# form_data = {'username': 'bar1', 'groups': [group.id]} +# request = self.req.post('/groups', data=form_data) +# cleaned_data = dict(form_data) +# cleaned_data['groups'] = [group] +# mixin = CreateModelMixin() +# mixin.resource = UserResource +# mixin.CONTENT = cleaned_data + +# response = mixin.post(request) +# self.assertEquals(2, CustomUser.objects.count()) +# self.assertEquals(1, response.raw_content.groups.count()) +# self.assertEquals('foo1', response.raw_content.groups.all()[0].name) + +# group2 = Group(name='foo2') +# group2.save() + +# form_data = {'username': 'bar2', 'groups': [group.id, group2.id]} +# request = self.req.post('/groups', data=form_data) +# cleaned_data = dict(form_data) +# cleaned_data['groups'] = [group, group2] +# mixin = CreateModelMixin() +# mixin.resource = UserResource +# mixin.CONTENT = cleaned_data + +# response = mixin.post(request) +# self.assertEquals(3, CustomUser.objects.count()) +# self.assertEquals(2, response.raw_content.groups.count()) +# self.assertEquals('foo1', response.raw_content.groups.all()[0].name) +# self.assertEquals('foo2', response.raw_content.groups.all()[1].name) + + +# class MockPaginatorView(PaginatorMixin, View): +# total = 60 + +# def get(self, request): +# return Response(range(0, self.total)) + +# def post(self, request): +# return Response({'status': 'OK'}, status=status.HTTP_201_CREATED) + + +# class TestPagination(TestCase): +# def setUp(self): +# self.req = RequestFactory() + +# def test_default_limit(self): +# """ Tests if pagination works without overwriting the limit """ +# request = self.req.get('/paginator') +# response = MockPaginatorView.as_view()(request) +# content = response.raw_content + +# self.assertEqual(response.status_code, status.HTTP_200_OK) +# self.assertEqual(MockPaginatorView.total, content['total']) +# self.assertEqual(MockPaginatorView.limit, content['per_page']) + +# self.assertEqual(range(0, MockPaginatorView.limit), content['results']) + +# def test_overwriting_limit(self): +# """ Tests if the limit can be overwritten """ +# limit = 10 + +# request = self.req.get('/paginator') +# response = MockPaginatorView.as_view(limit=limit)(request) +# content = response.raw_content + +# self.assertEqual(response.status_code, status.HTTP_200_OK) +# self.assertEqual(content['per_page'], limit) + +# self.assertEqual(range(0, limit), content['results']) + +# def test_limit_param(self): +# """ Tests if the client can set the limit """ +# from math import ceil + +# limit = 5 +# num_pages = int(ceil(MockPaginatorView.total / float(limit))) + +# request = self.req.get('/paginator/?limit=%d' % limit) +# response = MockPaginatorView.as_view()(request) +# content = response.raw_content + +# self.assertEqual(response.status_code, status.HTTP_200_OK) +# self.assertEqual(MockPaginatorView.total, content['total']) +# self.assertEqual(limit, content['per_page']) +# self.assertEqual(num_pages, content['pages']) + +# def test_exceeding_limit(self): +# """ Makes sure the client cannot exceed the default limit """ +# from math import ceil + +# limit = MockPaginatorView.limit + 10 +# num_pages = int(ceil(MockPaginatorView.total / float(limit))) + +# request = self.req.get('/paginator/?limit=%d' % limit) +# response = MockPaginatorView.as_view()(request) +# content = response.raw_content + +# self.assertEqual(response.status_code, status.HTTP_200_OK) +# self.assertEqual(MockPaginatorView.total, content['total']) +# self.assertNotEqual(limit, content['per_page']) +# self.assertNotEqual(num_pages, content['pages']) +# self.assertEqual(MockPaginatorView.limit, content['per_page']) + +# def test_only_works_for_get(self): +# """ Pagination should only work for GET requests """ +# request = self.req.post('/paginator', data={'content': 'spam'}) +# response = MockPaginatorView.as_view()(request) +# content = response.raw_content + +# self.assertEqual(response.status_code, status.HTTP_201_CREATED) +# self.assertEqual(None, content.get('per_page')) +# self.assertEqual('OK', content['status']) + +# def test_non_int_page(self): +# """ Tests that it can handle invalid values """ +# request = self.req.get('/paginator/?page=spam') +# response = MockPaginatorView.as_view()(request) + +# self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) + +# def test_page_range(self): +# """ Tests that the page range is handle correctly """ +# request = self.req.get('/paginator/?page=0') +# response = MockPaginatorView.as_view()(request) +# content = response.raw_content +# self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) + +# request = self.req.get('/paginator/') +# response = MockPaginatorView.as_view()(request) +# content = response.raw_content +# self.assertEqual(response.status_code, status.HTTP_200_OK) +# self.assertEqual(range(0, MockPaginatorView.limit), content['results']) + +# num_pages = content['pages'] + +# request = self.req.get('/paginator/?page=%d' % num_pages) +# response = MockPaginatorView.as_view()(request) +# content = response.raw_content +# self.assertEqual(response.status_code, status.HTTP_200_OK) +# self.assertEqual(range(MockPaginatorView.limit*(num_pages-1), MockPaginatorView.total), content['results']) + +# request = self.req.get('/paginator/?page=%d' % (num_pages + 1,)) +# response = MockPaginatorView.as_view()(request) +# content = response.raw_content +# self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) + +# def test_existing_query_parameters_are_preserved(self): +# """ Tests that existing query parameters are preserved when +# generating next/previous page links """ +# request = self.req.get('/paginator/?foo=bar&another=something') +# response = MockPaginatorView.as_view()(request) +# content = response.raw_content +# self.assertEqual(response.status_code, status.HTTP_200_OK) +# self.assertTrue('foo=bar' in content['next']) +# self.assertTrue('another=something' in content['next']) +# self.assertTrue('page=2' in content['next']) + +# def test_duplicate_parameters_are_not_created(self): +# """ Regression: ensure duplicate "page" parameters are not added to +# paginated URLs. So page 1 should contain ?page=2, not ?page=1&page=2 """ +# request = self.req.get('/paginator/?page=1') +# response = MockPaginatorView.as_view()(request) +# content = response.raw_content +# self.assertTrue('page=2' in content['next']) +# self.assertFalse('page=1' in content['next']) -- cgit v1.2.3 From 87dae4d8549c02fa9a57adb3bb876d249dae1f79 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 20 Sep 2012 13:19:43 +0100 Subject: Remove old 'djangorestframework directories --- djangorestframework/tests/mixins.py | 285 ------------------------------------ 1 file changed, 285 deletions(-) delete mode 100644 djangorestframework/tests/mixins.py (limited to 'djangorestframework/tests/mixins.py') diff --git a/djangorestframework/tests/mixins.py b/djangorestframework/tests/mixins.py deleted file mode 100644 index 05ce655d..00000000 --- a/djangorestframework/tests/mixins.py +++ /dev/null @@ -1,285 +0,0 @@ -# """Tests for the mixin module""" -# from django.test import TestCase -# from djangorestframework import status -# from djangorestframework.compat import RequestFactory -# from django.contrib.auth.models import Group, User -# from djangorestframework.mixins import CreateModelMixin, PaginatorMixin, ReadModelMixin -# from djangorestframework.resources import ModelResource -# from djangorestframework.response import Response, ImmediateResponse -# from djangorestframework.tests.models import CustomUser -# from djangorestframework.tests.testcases import TestModelsTestCase -# from djangorestframework.views import View - - -# class TestModelRead(TestModelsTestCase): -# """Tests on ReadModelMixin""" - -# def setUp(self): -# super(TestModelRead, self).setUp() -# self.req = RequestFactory() - -# def test_read(self): -# Group.objects.create(name='other group') -# group = Group.objects.create(name='my group') - -# class GroupResource(ModelResource): -# model = Group - -# request = self.req.get('/groups') -# mixin = ReadModelMixin() -# mixin.resource = GroupResource - -# response = mixin.get(request, id=group.id) -# self.assertEquals(group.name, response.raw_content.name) - -# def test_read_404(self): -# class GroupResource(ModelResource): -# model = Group - -# request = self.req.get('/groups') -# mixin = ReadModelMixin() -# mixin.resource = GroupResource - -# self.assertRaises(ImmediateResponse, mixin.get, request, id=12345) - - -# class TestModelCreation(TestModelsTestCase): -# """Tests on CreateModelMixin""" - -# def setUp(self): -# super(TestModelsTestCase, self).setUp() -# self.req = RequestFactory() - -# def test_creation(self): -# self.assertEquals(0, Group.objects.count()) - -# class GroupResource(ModelResource): -# model = Group - -# form_data = {'name': 'foo'} -# request = self.req.post('/groups', data=form_data) -# mixin = CreateModelMixin() -# mixin.resource = GroupResource -# mixin.CONTENT = form_data - -# response = mixin.post(request) -# self.assertEquals(1, Group.objects.count()) -# self.assertEquals('foo', response.raw_content.name) - -# def test_creation_with_m2m_relation(self): -# class UserResource(ModelResource): -# model = User - -# def url(self, instance): -# return "/users/%i" % instance.id - -# group = Group(name='foo') -# group.save() - -# form_data = { -# 'username': 'bar', -# 'password': 'baz', -# 'groups': [group.id] -# } -# request = self.req.post('/groups', data=form_data) -# cleaned_data = dict(form_data) -# cleaned_data['groups'] = [group] -# mixin = CreateModelMixin() -# mixin.resource = UserResource -# mixin.CONTENT = cleaned_data - -# response = mixin.post(request) -# self.assertEquals(1, User.objects.count()) -# self.assertEquals(1, response.raw_content.groups.count()) -# self.assertEquals('foo', response.raw_content.groups.all()[0].name) - -# def test_creation_with_m2m_relation_through(self): -# """ -# Tests creation where the m2m relation uses a through table -# """ -# class UserResource(ModelResource): -# model = CustomUser - -# def url(self, instance): -# return "/customusers/%i" % instance.id - -# form_data = {'username': 'bar0', 'groups': []} -# request = self.req.post('/groups', data=form_data) -# cleaned_data = dict(form_data) -# cleaned_data['groups'] = [] -# mixin = CreateModelMixin() -# mixin.resource = UserResource -# mixin.CONTENT = cleaned_data - -# response = mixin.post(request) -# self.assertEquals(1, CustomUser.objects.count()) -# self.assertEquals(0, response.raw_content.groups.count()) - -# group = Group(name='foo1') -# group.save() - -# form_data = {'username': 'bar1', 'groups': [group.id]} -# request = self.req.post('/groups', data=form_data) -# cleaned_data = dict(form_data) -# cleaned_data['groups'] = [group] -# mixin = CreateModelMixin() -# mixin.resource = UserResource -# mixin.CONTENT = cleaned_data - -# response = mixin.post(request) -# self.assertEquals(2, CustomUser.objects.count()) -# self.assertEquals(1, response.raw_content.groups.count()) -# self.assertEquals('foo1', response.raw_content.groups.all()[0].name) - -# group2 = Group(name='foo2') -# group2.save() - -# form_data = {'username': 'bar2', 'groups': [group.id, group2.id]} -# request = self.req.post('/groups', data=form_data) -# cleaned_data = dict(form_data) -# cleaned_data['groups'] = [group, group2] -# mixin = CreateModelMixin() -# mixin.resource = UserResource -# mixin.CONTENT = cleaned_data - -# response = mixin.post(request) -# self.assertEquals(3, CustomUser.objects.count()) -# self.assertEquals(2, response.raw_content.groups.count()) -# self.assertEquals('foo1', response.raw_content.groups.all()[0].name) -# self.assertEquals('foo2', response.raw_content.groups.all()[1].name) - - -# class MockPaginatorView(PaginatorMixin, View): -# total = 60 - -# def get(self, request): -# return Response(range(0, self.total)) - -# def post(self, request): -# return Response({'status': 'OK'}, status=status.HTTP_201_CREATED) - - -# class TestPagination(TestCase): -# def setUp(self): -# self.req = RequestFactory() - -# def test_default_limit(self): -# """ Tests if pagination works without overwriting the limit """ -# request = self.req.get('/paginator') -# response = MockPaginatorView.as_view()(request) -# content = response.raw_content - -# self.assertEqual(response.status_code, status.HTTP_200_OK) -# self.assertEqual(MockPaginatorView.total, content['total']) -# self.assertEqual(MockPaginatorView.limit, content['per_page']) - -# self.assertEqual(range(0, MockPaginatorView.limit), content['results']) - -# def test_overwriting_limit(self): -# """ Tests if the limit can be overwritten """ -# limit = 10 - -# request = self.req.get('/paginator') -# response = MockPaginatorView.as_view(limit=limit)(request) -# content = response.raw_content - -# self.assertEqual(response.status_code, status.HTTP_200_OK) -# self.assertEqual(content['per_page'], limit) - -# self.assertEqual(range(0, limit), content['results']) - -# def test_limit_param(self): -# """ Tests if the client can set the limit """ -# from math import ceil - -# limit = 5 -# num_pages = int(ceil(MockPaginatorView.total / float(limit))) - -# request = self.req.get('/paginator/?limit=%d' % limit) -# response = MockPaginatorView.as_view()(request) -# content = response.raw_content - -# self.assertEqual(response.status_code, status.HTTP_200_OK) -# self.assertEqual(MockPaginatorView.total, content['total']) -# self.assertEqual(limit, content['per_page']) -# self.assertEqual(num_pages, content['pages']) - -# def test_exceeding_limit(self): -# """ Makes sure the client cannot exceed the default limit """ -# from math import ceil - -# limit = MockPaginatorView.limit + 10 -# num_pages = int(ceil(MockPaginatorView.total / float(limit))) - -# request = self.req.get('/paginator/?limit=%d' % limit) -# response = MockPaginatorView.as_view()(request) -# content = response.raw_content - -# self.assertEqual(response.status_code, status.HTTP_200_OK) -# self.assertEqual(MockPaginatorView.total, content['total']) -# self.assertNotEqual(limit, content['per_page']) -# self.assertNotEqual(num_pages, content['pages']) -# self.assertEqual(MockPaginatorView.limit, content['per_page']) - -# def test_only_works_for_get(self): -# """ Pagination should only work for GET requests """ -# request = self.req.post('/paginator', data={'content': 'spam'}) -# response = MockPaginatorView.as_view()(request) -# content = response.raw_content - -# self.assertEqual(response.status_code, status.HTTP_201_CREATED) -# self.assertEqual(None, content.get('per_page')) -# self.assertEqual('OK', content['status']) - -# def test_non_int_page(self): -# """ Tests that it can handle invalid values """ -# request = self.req.get('/paginator/?page=spam') -# response = MockPaginatorView.as_view()(request) - -# self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - -# def test_page_range(self): -# """ Tests that the page range is handle correctly """ -# request = self.req.get('/paginator/?page=0') -# response = MockPaginatorView.as_view()(request) -# content = response.raw_content -# self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - -# request = self.req.get('/paginator/') -# response = MockPaginatorView.as_view()(request) -# content = response.raw_content -# self.assertEqual(response.status_code, status.HTTP_200_OK) -# self.assertEqual(range(0, MockPaginatorView.limit), content['results']) - -# num_pages = content['pages'] - -# request = self.req.get('/paginator/?page=%d' % num_pages) -# response = MockPaginatorView.as_view()(request) -# content = response.raw_content -# self.assertEqual(response.status_code, status.HTTP_200_OK) -# self.assertEqual(range(MockPaginatorView.limit*(num_pages-1), MockPaginatorView.total), content['results']) - -# request = self.req.get('/paginator/?page=%d' % (num_pages + 1,)) -# response = MockPaginatorView.as_view()(request) -# content = response.raw_content -# self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - -# def test_existing_query_parameters_are_preserved(self): -# """ Tests that existing query parameters are preserved when -# generating next/previous page links """ -# request = self.req.get('/paginator/?foo=bar&another=something') -# response = MockPaginatorView.as_view()(request) -# content = response.raw_content -# self.assertEqual(response.status_code, status.HTTP_200_OK) -# self.assertTrue('foo=bar' in content['next']) -# self.assertTrue('another=something' in content['next']) -# self.assertTrue('page=2' in content['next']) - -# def test_duplicate_parameters_are_not_created(self): -# """ Regression: ensure duplicate "page" parameters are not added to -# paginated URLs. So page 1 should contain ?page=2, not ?page=1&page=2 """ -# request = self.req.get('/paginator/?page=1') -# response = MockPaginatorView.as_view()(request) -# content = response.raw_content -# self.assertTrue('page=2' in content['next']) -# self.assertFalse('page=1' in content['next']) -- cgit v1.2.3