Test rejigging

This commit is contained in:
Tom Christie 2014-09-19 15:46:32 +01:00
parent c0150e619c
commit b361c54c5c
5 changed files with 75 additions and 71 deletions

View File

@ -24,6 +24,9 @@ class CustomField(models.Field):
pass pass
COLOR_CHOICES = (('red', 'Red'), ('blue', 'Blue'), ('green', 'Green'))
class RegularFieldsModel(models.Model): class RegularFieldsModel(models.Model):
""" """
A model class for testing regular flat fields. A model class for testing regular flat fields.
@ -32,6 +35,7 @@ class RegularFieldsModel(models.Model):
big_integer_field = models.BigIntegerField() big_integer_field = models.BigIntegerField()
boolean_field = models.BooleanField(default=False) boolean_field = models.BooleanField(default=False)
char_field = models.CharField(max_length=100) char_field = models.CharField(max_length=100)
choices_field = models.CharField(max_length=100, choices=COLOR_CHOICES)
comma_seperated_integer_field = models.CommaSeparatedIntegerField(max_length=100) comma_seperated_integer_field = models.CommaSeparatedIntegerField(max_length=100)
date_field = models.DateField() date_field = models.DateField()
datetime_field = models.DateTimeField() datetime_field = models.DateTimeField()
@ -68,6 +72,7 @@ class TestRegularFieldMappings(TestCase):
big_integer_field = IntegerField() big_integer_field = IntegerField()
boolean_field = BooleanField(default=False) boolean_field = BooleanField(default=False)
char_field = CharField(max_length=100) char_field = CharField(max_length=100)
choices_field = ChoiceField(choices=[('red', 'Red'), ('blue', 'Blue'), ('green', 'Green')])
comma_seperated_integer_field = CharField(max_length=100, validators=[<django.core.validators.RegexValidator object>]) comma_seperated_integer_field = CharField(max_length=100, validators=[<django.core.validators.RegexValidator object>])
date_field = DateField() date_field = DateField()
datetime_field = DateTimeField() datetime_field = DateTimeField()

View File

@ -1,31 +0,0 @@
from django.test import TestCase
from django.utils import six
from rest_framework.utils.model_meta import _resolve_model
from tests.models import BasicModel
class ResolveModelTests(TestCase):
"""
`_resolve_model` should return a Django model class given the
provided argument is a Django model class itself, or a properly
formatted string representation of one.
"""
def test_resolve_django_model(self):
resolved_model = _resolve_model(BasicModel)
self.assertEqual(resolved_model, BasicModel)
def test_resolve_string_representation(self):
resolved_model = _resolve_model('tests.BasicModel')
self.assertEqual(resolved_model, BasicModel)
def test_resolve_unicode_representation(self):
resolved_model = _resolve_model(six.text_type('tests.BasicModel'))
self.assertEqual(resolved_model, BasicModel)
def test_resolve_non_django_model(self):
with self.assertRaises(ValueError):
_resolve_model(TestCase)
def test_resolve_improper_string_representation(self):
with self.assertRaises(ValueError):
_resolve_model('BasicModel')

View File

@ -4,6 +4,7 @@ from django.test import TestCase
from rest_framework.test import APIRequestFactory from rest_framework.test import APIRequestFactory
from rest_framework.templatetags.rest_framework import add_query_param, urlize_quoted_links from rest_framework.templatetags.rest_framework import add_query_param, urlize_quoted_links
factory = APIRequestFactory() factory = APIRequestFactory()
@ -49,3 +50,37 @@ class Issue1386Tests(TestCase):
# example from issue #1386, this shouldn't raise an exception # example from issue #1386, this shouldn't raise an exception
urlize_quoted_links("asdf:[/p]zxcv.com") urlize_quoted_links("asdf:[/p]zxcv.com")
class URLizerTests(TestCase):
"""
Test if both JSON and YAML URLs are transformed into links well
"""
def _urlize_dict_check(self, data):
"""
For all items in dict test assert that the value is urlized key
"""
for original, urlized in data.items():
assert urlize_quoted_links(original, nofollow=False) == urlized
def test_json_with_url(self):
"""
Test if JSON URLs are transformed into links well
"""
data = {}
data['"url": "http://api/users/1/", '] = \
'&quot;url&quot;: &quot;<a href="http://api/users/1/">http://api/users/1/</a>&quot;, '
data['"foo_set": [\n "http://api/foos/1/"\n], '] = \
'&quot;foo_set&quot;: [\n &quot;<a href="http://api/foos/1/">http://api/foos/1/</a>&quot;\n], '
self._urlize_dict_check(data)
def test_yaml_with_url(self):
"""
Test if YAML URLs are transformed into links well
"""
data = {}
data['''{users: 'http://api/users/'}'''] = \
'''{users: &#39;<a href="http://api/users/">http://api/users/</a>&#39;}'''
data['''foo_set: ['http://api/foos/1/']'''] = \
'''foo_set: [&#39;<a href="http://api/foos/1/">http://api/foos/1/</a>&#39;]'''
self._urlize_dict_check(data)

View File

@ -1,37 +0,0 @@
from __future__ import unicode_literals
from django.test import TestCase
from rest_framework.templatetags.rest_framework import urlize_quoted_links
class URLizerTests(TestCase):
"""
Test if both JSON and YAML URLs are transformed into links well
"""
def _urlize_dict_check(self, data):
"""
For all items in dict test assert that the value is urlized key
"""
for original, urlized in data.items():
assert urlize_quoted_links(original, nofollow=False) == urlized
def test_json_with_url(self):
"""
Test if JSON URLs are transformed into links well
"""
data = {}
data['"url": "http://api/users/1/", '] = \
'&quot;url&quot;: &quot;<a href="http://api/users/1/">http://api/users/1/</a>&quot;, '
data['"foo_set": [\n "http://api/foos/1/"\n], '] = \
'&quot;foo_set&quot;: [\n &quot;<a href="http://api/foos/1/">http://api/foos/1/</a>&quot;\n], '
self._urlize_dict_check(data)
def test_yaml_with_url(self):
"""
Test if YAML URLs are transformed into links well
"""
data = {}
data['''{users: 'http://api/users/'}'''] = \
'''{users: &#39;<a href="http://api/users/">http://api/users/</a>&#39;}'''
data['''foo_set: ['http://api/foos/1/']'''] = \
'''foo_set: [&#39;<a href="http://api/foos/1/">http://api/foos/1/</a>&#39;]'''
self._urlize_dict_check(data)

View File

@ -1,8 +1,11 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from django.conf.urls import patterns, url from django.conf.urls import patterns, url
from django.test import TestCase from django.test import TestCase
from django.utils import six
from rest_framework.utils.model_meta import _resolve_model
from rest_framework.utils.breadcrumbs import get_breadcrumbs from rest_framework.utils.breadcrumbs import get_breadcrumbs
from rest_framework.views import APIView from rest_framework.views import APIView
from tests.models import BasicModel
class Root(APIView): class Root(APIView):
@ -24,6 +27,7 @@ class NestedResourceRoot(APIView):
class NestedResourceInstance(APIView): class NestedResourceInstance(APIView):
pass pass
urlpatterns = patterns( urlpatterns = patterns(
'', '',
url(r'^$', Root.as_view()), url(r'^$', Root.as_view()),
@ -35,9 +39,10 @@ urlpatterns = patterns(
class BreadcrumbTests(TestCase): class BreadcrumbTests(TestCase):
"""Tests the breadcrumb functionality used by the HTML renderer.""" """
Tests the breadcrumb functionality used by the HTML renderer.
urls = 'tests.test_breadcrumbs' """
urls = 'tests.test_utils'
def test_root_breadcrumbs(self): def test_root_breadcrumbs(self):
url = '/' url = '/'
@ -98,3 +103,30 @@ class BreadcrumbTests(TestCase):
get_breadcrumbs(url), get_breadcrumbs(url),
[('Root', '/')] [('Root', '/')]
) )
class ResolveModelTests(TestCase):
"""
`_resolve_model` should return a Django model class given the
provided argument is a Django model class itself, or a properly
formatted string representation of one.
"""
def test_resolve_django_model(self):
resolved_model = _resolve_model(BasicModel)
self.assertEqual(resolved_model, BasicModel)
def test_resolve_string_representation(self):
resolved_model = _resolve_model('tests.BasicModel')
self.assertEqual(resolved_model, BasicModel)
def test_resolve_unicode_representation(self):
resolved_model = _resolve_model(six.text_type('tests.BasicModel'))
self.assertEqual(resolved_model, BasicModel)
def test_resolve_non_django_model(self):
with self.assertRaises(ValueError):
_resolve_model(TestCase)
def test_resolve_improper_string_representation(self):
with self.assertRaises(ValueError):
_resolve_model('BasicModel')