summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul McMillan <Paul@McMillan.ws>2010-06-10 01:46:36 +0000
committerPaul McMillan <Paul@McMillan.ws>2010-06-10 01:46:36 +0000
commit101796ce8da802e74720d47821157723b46800da (patch)
tree95c5364e0d54bd58fed7cf1f6b50bd49462afba4
parent75302ff6355ab770a1791b55eaf4a476bcc76d99 (diff)
downloaddjango-101796ce8da802e74720d47821157723b46800da.tar.gz
[soc2010/test-refactor] Converted custom_columns doctest to unittest.
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/test-refactor@13346 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--tests/modeltests/custom_columns/fixtures/custom_columns_testdata.json29
-rw-r--r--tests/modeltests/custom_columns/models.py66
-rw-r--r--tests/modeltests/custom_columns/tests.py53
3 files changed, 82 insertions, 66 deletions
diff --git a/tests/modeltests/custom_columns/fixtures/custom_columns_testdata.json b/tests/modeltests/custom_columns/fixtures/custom_columns_testdata.json
new file mode 100644
index 0000000000..4756ac38b9
--- /dev/null
+++ b/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
+ ]
+ }
+ }
+] \ No newline at end of file
diff --git a/tests/modeltests/custom_columns/models.py b/tests/modeltests/custom_columns/models.py
index 74691cd1bc..7d60b03f8c 100644
--- a/tests/modeltests/custom_columns/models.py
+++ b/tests/modeltests/custom_columns/models.py
@@ -37,69 +37,3 @@ class Article(models.Model):
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>]
-
-"""}
diff --git a/tests/modeltests/custom_columns/tests.py b/tests/modeltests/custom_columns/tests.py
new file mode 100644
index 0000000000..e678d005c7
--- /dev/null
+++ b/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>'])