django-admin2/example/blog/tests/test_apiviews.py

80 lines
2.7 KiB
Python
Raw Normal View History

from django.test import TestCase
2013-05-18 16:24:21 +00:00
from django.test.client import RequestFactory
2013-05-19 08:56:11 +00:00
from django.core.urlresolvers import reverse
2013-05-19 11:11:38 +00:00
from django.utils import simplejson as json
2013-05-18 16:24:21 +00:00
from djadmin2 import apiviews
from djadmin2 import default
from djadmin2.models import ModelAdmin2
2013-05-18 16:24:21 +00:00
from ..models import Post
class ViewTest(TestCase):
2013-05-18 16:24:21 +00:00
def setUp(self):
self.factory = RequestFactory()
def get_model_admin(self, model):
return ModelAdmin2(model, default)
2013-05-18 16:24:21 +00:00
2013-05-19 10:53:37 +00:00
class IndexAPIViewTest(ViewTest):
def test_response_ok(self):
request = self.factory.get(reverse('admin2:api-index'))
view = apiviews.IndexAPIView.as_view(**default.get_api_index_kwargs())
response = view(request)
self.assertEqual(response.status_code, 200)
2013-05-19 09:08:36 +00:00
class ListCreateAPIViewTest(ViewTest):
2013-05-18 16:24:21 +00:00
def test_response_ok(self):
request = self.factory.get(reverse('admin2:blog_post_api-list'))
modeladmin = self.get_model_admin(Post)
view = apiviews.ListCreateAPIView.as_view(
**modeladmin.get_api_list_kwargs())
response = view(request)
2013-05-18 16:24:21 +00:00
self.assertEqual(response.status_code, 200)
def test_list_includes_unicode_field(self):
Post.objects.create(title='Foo', body='Bar')
request = self.factory.get(reverse('admin2:blog_post_api-list'))
modeladmin = self.get_model_admin(Post)
view = apiviews.ListCreateAPIView.as_view(
**modeladmin.get_api_list_kwargs())
response = view(request)
response.render()
2013-05-19 09:08:36 +00:00
self.assertIn('"__str__": "Foo"', response.content)
2013-05-19 08:56:11 +00:00
2013-05-19 11:11:38 +00:00
def test_pagination(self):
request = self.factory.get(reverse('admin2:blog_post_api-list'))
modeladmin = self.get_model_admin(Post)
view = apiviews.ListCreateAPIView.as_view(
**modeladmin.get_api_list_kwargs())
response = view(request)
response.render()
data = json.loads(response.content)
self.assertEqual(data['count'], 0)
# next and previous fields exist, but are null because we have no
# content
self.assertTrue('next' in data)
self.assertEqual(data['next'], None)
self.assertTrue('previous' in data)
self.assertEqual(data['previous'], None)
2013-05-19 08:56:11 +00:00
2013-05-19 09:08:36 +00:00
class RetrieveUpdateDestroyAPIViewTest(ViewTest):
2013-05-19 08:56:11 +00:00
def test_response_ok(self):
post = Post.objects.create(title='Foo', body='Bar')
request = self.factory.get(
reverse('admin2:blog_post_api-detail',
kwargs={'pk': post.pk}))
modeladmin = self.get_model_admin(Post)
view = apiviews.RetrieveUpdateDestroyAPIView.as_view(
**modeladmin.get_api_detail_kwargs())
response = view(request, pk=post.pk)
2013-05-19 08:56:11 +00:00
self.assertEqual(response.status_code, 200)