Skip to content
Browse files

[soc2010/test-refactor] Converted custom_columns doctest to unittest.

  • Loading branch information...
1 parent 75302ff commit 101796ce8da802e74720d47821157723b46800da @PaulMcMillan PaulMcMillan committed
View
29 tests/modeltests/custom_columns/fixtures/custom_columns_testdata.json
@@ -0,0 +1,29 @@
+[
+ {
+ "pk": 2,
+ "model": "custom_columns.author",
+ "fields": {
+ "first_name": "Peter",
+ "last_name": "Jones"
+ }
+ },
+ {
+ "pk": 1,
+ "model": "custom_columns.author",
+ "fields": {
+ "first_name": "John",
+ "last_name": "Smith"
+ }
+ },
+ {
+ "pk": 1,
+ "model": "custom_columns.article",
+ "fields": {
+ "headline": "Django lets you build web apps easily",
+ "authors": [
+ 2,
+ 1
+ ]
+ }
+ }
+]
View
66 tests/modeltests/custom_columns/models.py
@@ -37,69 +37,3 @@ def __unicode__(self):
class Meta:
ordering = ('headline',)
-
-__test__ = {'API_TESTS':"""
-# Create a Author.
->>> a = Author(first_name='John', last_name='Smith')
->>> a.save()
-
->>> a.id
-1
-
-# Create another author
->>> a2 = Author(first_name='Peter', last_name='Jones')
->>> a2.save()
-
-# Create an article
->>> art = Article(headline='Django lets you build web apps easily')
->>> art.save()
->>> art.authors = [a, a2]
-
-# Although the table and column names on Author have been set to custom values,
-# nothing about using the Author model has changed...
-
-# Query the available authors
->>> Author.objects.all()
-[<Author: Peter Jones>, <Author: John Smith>]
-
->>> Author.objects.filter(first_name__exact='John')
-[<Author: John Smith>]
-
->>> Author.objects.get(first_name__exact='John')
-<Author: John Smith>
-
->>> Author.objects.filter(firstname__exact='John')
-Traceback (most recent call last):
- ...
-FieldError: Cannot resolve keyword 'firstname' into field. Choices are: article, first_name, id, last_name
-
->>> a = Author.objects.get(last_name__exact='Smith')
->>> a.first_name
-u'John'
->>> a.last_name
-u'Smith'
->>> a.firstname
-Traceback (most recent call last):
- ...
-AttributeError: 'Author' object has no attribute 'firstname'
->>> a.last
-Traceback (most recent call last):
- ...
-AttributeError: 'Author' object has no attribute 'last'
-
-# Although the Article table uses a custom m2m table,
-# nothing about using the m2m relationship has changed...
-
-# Get all the authors for an article
->>> art.authors.all()
-[<Author: Peter Jones>, <Author: John Smith>]
-
-# Get the articles for an author
->>> a.article_set.all()
-[<Article: Django lets you build web apps easily>]
-
-# Query the authors across the m2m relation
->>> art.authors.filter(last_name='Jones')
-[<Author: Peter Jones>]
-
-"""}
View
53 tests/modeltests/custom_columns/tests.py
@@ -0,0 +1,53 @@
+from django.test import TestCase
+
+from django.core.exceptions import FieldError
+
+from models import Author, Article
+
+class CustomColumnsTestCase(TestCase):
+ fixtures = ['custom_columns_testdata.json']
+
+ def test_column_interface(self):
+ # Although the table and column names on Author have been set to
+ # custom values, nothing about using the Author model has
+ # changed...
+ self.assertEqual(Author.objects.get(first_name='John').id,
+ 1)
+
+ # Query the available authors
+ self.assertQuerysetEqual(Author.objects.all(),
+ ['<Author: Peter Jones>', '<Author: John Smith>'])
+ self.assertQuerysetEqual(Author.objects.filter(first_name__exact='John'),
+ ['<Author: John Smith>'])
+ self.assertEqual(repr(Author.objects.get(first_name__exact='John')),
+ '<Author: John Smith>')
+ self.assertRaises(FieldError,
+ Author.objects.filter,
+ firstname__exact='John')
+
+ js = Author.objects.get(last_name__exact='Smith')
+
+ self.assertEqual(js.first_name,
+ u'John')
+ self.assertEqual(js.last_name,
+ u'Smith')
+ self.assertRaises(AttributeError,
+ getattr,
+ js, 'firstname')
+ self.assertRaises(AttributeError,
+ getattr,
+ js, 'last')
+
+ # Although the Article table uses a custom m2m table,
+ # nothing about using the m2m relationship has changed...
+
+ # Get all the authors for an article
+ art = Article.objects.get(headline='Django lets you build web apps easily')
+ self.assertQuerysetEqual(art.authors.all(),
+ ['<Author: Peter Jones>', '<Author: John Smith>'])
+ # Get the articles for an author
+ self.assertQuerysetEqual(js.article_set.all(),
+ ['<Article: Django lets you build web apps easily>'])
+ # Query the authors across the m2m relation
+ self.assertQuerysetEqual(art.authors.filter(last_name='Jones'),
+ ['<Author: Peter Jones>'])

0 comments on commit 101796c

Please sign in to comment.
Something went wrong with that request. Please try again.