Author: russellm
Date: 2010-10-09 03:23:32 -0500 (Sat, 09 Oct 2010)
New Revision: 14071

Added:
   django/branches/releases/1.2.X/tests/modeltests/custom_columns/tests.py
Modified:
   django/branches/releases/1.2.X/tests/modeltests/custom_columns/models.py
Log:
[1.2.X] Migrated the custom_columns doctests to unit tests. Thanks to Alex 
Gaynor.

Backport of r13765 from trunk.

Modified: 
django/branches/releases/1.2.X/tests/modeltests/custom_columns/models.py
===================================================================
--- django/branches/releases/1.2.X/tests/modeltests/custom_columns/models.py    
2010-10-09 08:20:56 UTC (rev 14070)
+++ django/branches/releases/1.2.X/tests/modeltests/custom_columns/models.py    
2010-10-09 08:23:32 UTC (rev 14071)
@@ -38,68 +38,3 @@
     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>]
-
-"""}

Added: django/branches/releases/1.2.X/tests/modeltests/custom_columns/tests.py
===================================================================
--- django/branches/releases/1.2.X/tests/modeltests/custom_columns/tests.py     
                        (rev 0)
+++ django/branches/releases/1.2.X/tests/modeltests/custom_columns/tests.py     
2010-10-09 08:23:32 UTC (rev 14071)
@@ -0,0 +1,71 @@
+from django.core.exceptions import FieldError
+from django.test import TestCase
+
+from models import Author, Article
+
+
+class CustomColumnsTests(TestCase):
+    def test_db_column(self):
+        a1 = Author.objects.create(first_name="John", last_name="Smith")
+        a2 = Author.objects.create(first_name="Peter", last_name="Jones")
+
+        art = Article.objects.create(headline="Django lets you build web apps 
easily")
+        art.authors = [a1, 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
+        self.assertQuerysetEqual(
+            Author.objects.all(), [
+                "Peter Jones", "John Smith",
+            ],
+            unicode
+        )
+        self.assertQuerysetEqual(
+            Author.objects.filter(first_name__exact="John"), [
+                "John Smith",
+            ],
+            unicode
+        )
+        self.assertEqual(
+            Author.objects.get(first_name__exact="John"),
+            a1,
+        )
+
+        self.assertRaises(FieldError,
+            lambda: Author.objects.filter(firstname__exact="John")
+        )
+
+        a = Author.objects.get(last_name__exact="Smith")
+        a.first_name = "John"
+        a.last_name = "Smith"
+
+        self.assertRaises(AttributeError, lambda: a.firstname)
+        self.assertRaises(AttributeError, lambda: a.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
+        self.assertQuerysetEqual(
+            art.authors.all(), [
+                "Peter Jones",
+                "John Smith",
+            ],
+            unicode
+        )
+        # Get the articles for an author
+        self.assertQuerysetEqual(
+            a.article_set.all(), [
+                "Django lets you build web apps easily",
+            ],
+            lambda a: a.headline
+        )
+        # Query the authors across the m2m relation
+        self.assertQuerysetEqual(
+            art.authors.filter(last_name='Jones'), [
+                "Peter Jones"
+            ],
+            unicode
+        )

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to