Admin Section API (#11)

Models for managing admin pages
This commit is contained in:
Matthew Ryan Dillon 2016-09-05 17:03:01 -07:00 committed by GitHub
parent 8e08cab3c4
commit 910d3b4beb
15 changed files with 310 additions and 36 deletions

View file

View file

@ -0,0 +1,21 @@
from factory import DjangoModelFactory, Sequence, SubFactory
from ..models import AdminSection, AdminEntry
class AdminSectionFactory(DjangoModelFactory):
class Meta:
model = AdminSection
name = Sequence(lambda n: 'section{}'.format(n))
sort = Sequence(lambda n: n)
class AdminEntryFactory(DjangoModelFactory):
class Meta:
model = AdminEntry
package = Sequence(lambda n: 'package{}'.format(n))
model = Sequence(lambda n: 'section{}'.format(n))
section = SubFactory(AdminSectionFactory)
sort = Sequence(lambda n: n)

View file

@ -0,0 +1,26 @@
from django.test import TestCase
from django.test.client import RequestFactory
from ..models import AdminSection, AdminEntry
from .factories import AdminSectionFactory, AdminEntryFactory
class AdminSectionTestCase(TestCase):
def test_creation(self):
a = AdminSectionFactory()
self.assertTrue(isinstance(a, AdminSection))
self.assertEqual(a.__str__(), a.name)
class AdminEntryTestCase(TestCase):
def test_creation(self):
a = AdminEntryFactory()
self.assertTrue(isinstance(a, AdminEntry))
self.assertEqual(a.__str__(), "%s %s" % (a.package, a.model))
def test_admin_url(self):
a = AdminEntryFactory(package='utils', model='adminentry')
request_factory = RequestFactory()
request = request_factory.get('/')
self.assertEqual('http://testserver/admin/utils/adminentry/',
a.admin_url(request))

View file

@ -0,0 +1,25 @@
from django.test import TestCase
from django.test.client import RequestFactory
from .factories import AdminSectionFactory, AdminEntryFactory
from ..serializers import AdminSectionSerializer, AdminEntrySerializer
class AdminSectionTestCase(TestCase):
def test_creation(self):
a = AdminSectionFactory()
serializer = AdminSectionSerializer(a)
data = {'name': a.name, 'id': a.id, 'sort': a.sort}
self.assertEqual(data, serializer.data)
class AdminEntryTestCase(TestCase):
def test_creation(self):
a = AdminEntryFactory(package='utils', model='adminentry')
request_factory = RequestFactory()
request = request_factory.get('/')
serializer = AdminEntrySerializer(a, context={'request': request})
data = {'package': a.package, 'id': a.id, 'sort': a.sort,
'model': a.model, 'section': a.section.id,
'admin_url': a.admin_url(request)}
self.assertEqual(data, serializer.data)

View file

@ -0,0 +1,37 @@
from django.core.urlresolvers import reverse
from rest_framework import status
from rest_framework.test import APITestCase
from rest_framework.authtoken.models import Token
from .factories import AdminSectionFactory, AdminEntryFactory
from ccdb.users.models import User
class AdminTestCase(APITestCase):
def setUp(self):
self.username = 'abc'
self.password = '123'
self.user = User.objects.create(username=self.username,
password=self.password)
self.token = Token.objects.create(user=self.user)
self.client.login(username=self.username, password=self.password)
self.client.credentials(HTTP_AUTHORIZATION='Token %s' % self.token.key)
class AdminSectionTestCase(AdminTestCase):
def test_list(self):
AdminSectionFactory.create_batch(5)
url = reverse('api:v1:adminsection-list')
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.data['results']), 5)
class AdminEntryTestCase(AdminTestCase):
def test_list(self):
AdminEntryFactory.create_batch(5, package='utils', model='adminentry')
url = reverse('api:v1:adminentry-list')
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.data['results']), 5)