Fixing names for views beeing more consistent and tests for API views.

This commit is contained in:
Gregor Müllegger 2013-05-19 12:27:51 +02:00
parent 73a41f5632
commit 09dd2095e3
3 changed files with 26 additions and 10 deletions

View file

@ -25,7 +25,7 @@ class Admin2APIMixin(Admin2Mixin):
# about the name of the admin instance when declaring the
# Admin2APISerializer base class
_default_view_name = ':'.join((
self.modeladmin.admin.name +
self.modeladmin.admin.name,
'%(app_label)s_%(model_name)s_api-detail'))
class Meta:

View file

@ -109,7 +109,7 @@ class ModelAdmin2(BaseAdmin2):
delete_view = views.ModelDeleteView
# API Views
api_index_view = apiviews.ListCreateAPIView
api_list_view = apiviews.ListCreateAPIView
api_detail_view = apiviews.RetrieveUpdateDestroyAPIView
def __init__(self, model, admin, **kwargs):
@ -166,7 +166,7 @@ class ModelAdmin2(BaseAdmin2):
def get_index_url(self):
return reverse('admin2:{}'.format(self.get_prefixed_view_name('index')))
def get_api_index_kwargs(self):
def get_api_list_kwargs(self):
return self.get_default_view_kwargs()
def get_api_detail_kwargs(self):
@ -205,7 +205,7 @@ class ModelAdmin2(BaseAdmin2):
return patterns('',
url(
regex=r'^$',
view=self.api_index_view.as_view(**self.get_api_index_kwargs()),
view=self.api_list_view.as_view(**self.get_api_list_kwargs()),
name=self.get_prefixed_view_name('api-list'),
),
url(

View file

@ -4,6 +4,8 @@ from django.core.urlresolvers import reverse
from djadmin2 import apiviews
from djadmin2 import default
from djadmin2.models import ModelAdmin2
from ..models import Post
@ -11,18 +13,27 @@ class ViewTest(unittest.TestCase):
def setUp(self):
self.factory = RequestFactory()
def get_model_admin(self, model):
return ModelAdmin2(model, default)
class ListCreateAPIViewTest(ViewTest):
def test_response_ok(self):
request = self.factory.get(reverse('admin2:blog_post_api-index'))
response = apiviews.ListCreateAPIView.as_view(model=Post)(request)
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)
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-index'))
response = apiviews.ListCreateAPIView.as_view(model=Post)(request)
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()
self.assertIn('"__str__": "Foo"', response.content)
@ -32,6 +43,11 @@ class RetrieveUpdateDestroyAPIViewTest(ViewTest):
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}))
response = apiviews.RetrieveUpdateDestroyAPIView.as_view(model=Post)(request, pk=post.pk)
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)
self.assertEqual(response.status_code, 200)