Skip to content

Commit

Permalink
[1.2.X] Fixed #14473 -- converted the model_package tests from doctes…
Browse files Browse the repository at this point in the history
…ts to unitests. We have always been at war with doctests. Thanks to Gabriel Hurley for the patch. Backport of [14227].

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14228 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
alex committed Oct 15, 2010
1 parent 3c469e9 commit 7ddeb86
Showing 1 changed file with 63 additions and 72 deletions.
135 changes: 63 additions & 72 deletions tests/modeltests/model_package/tests.py
Original file line number Diff line number Diff line change
@@ -1,81 +1,72 @@
from django.contrib.sites.models import Site
from django.db import models
from django.test import TestCase

from models.publication import Publication
from models.article import Article


class Advertisment(models.Model):
customer = models.CharField(max_length=100)
publications = models.ManyToManyField("model_package.Publication", null=True, blank=True)
publications = models.ManyToManyField(
"model_package.Publication", null=True, blank=True
)

class Meta:
app_label = 'model_package'

__test__ = {'API_TESTS': """
>>> from models.publication import Publication
>>> from models.article import Article
>>> p = Publication(title="FooBar")
>>> p.save()
>>> p
<Publication: Publication object>
>>> from django.contrib.sites.models import Site
>>> current_site = Site.objects.get_current()
>>> current_site
<Site: example.com>
# Regression for #12168: models split into subpackages still get M2M tables
>>> a = Article(headline="a foo headline")
>>> a.save()
>>> a.publications.add(p)
>>> a.sites.add(current_site)
>>> a = Article.objects.get(id=1)
>>> a
<Article: Article object>
>>> a.id
1
>>> a.sites.count()
1
# Regression for #12245 - Models can exist in the test package, too
>>> ad = Advertisment(customer="Lawrence Journal-World")
>>> ad.save()
>>> ad.publications.add(p)
>>> ad = Advertisment.objects.get(id=1)
>>> ad
<Advertisment: Advertisment object>
>>> ad.publications.count()
1
# Regression for #12386 - field names on the autogenerated intermediate class
# that are specified as dotted strings don't retain any path component for the
# field or column name
>>> Article.publications.through._meta.fields[1].name
'article'
>>> Article.publications.through._meta.fields[1].get_attname_column()
('article_id', 'article_id')
>>> Article.publications.through._meta.fields[2].name
'publication'
>>> Article.publications.through._meta.fields[2].get_attname_column()
('publication_id', 'publication_id')
# The oracle backend truncates the name to 'model_package_article_publ233f'.
>>> Article._meta.get_field('publications').m2m_db_table() \\
... in ('model_package_article_publications', 'model_package_article_publ233f')
True
>>> Article._meta.get_field('publications').m2m_column_name()
'article_id'
>>> Article._meta.get_field('publications').m2m_reverse_name()
'publication_id'
"""}


class ModelPackageTests(TestCase):
def test_model_packages(self):
p = Publication.objects.create(title="FooBar")

current_site = Site.objects.get_current()
self.assertEqual(current_site.domain, "example.com")

# Regression for #12168: models split into subpackages still get M2M
# tables
a = Article.objects.create(headline="a foo headline")
a.publications.add(p)
a.sites.add(current_site)

a = Article.objects.get(id=a.pk)
self.assertEqual(a.id, a.pk)
self.assertEqual(a.sites.count(), 1)

# Regression for #12245 - Models can exist in the test package, too
ad = Advertisment.objects.create(customer="Lawrence Journal-World")
ad.publications.add(p)

ad = Advertisment.objects.get(id=ad.pk)
self.assertEqual(ad.publications.count(), 1)

# Regression for #12386 - field names on the autogenerated intermediate
# class that are specified as dotted strings don't retain any path
# component for the field or column name
self.assertEqual(
Article.publications.through._meta.fields[1].name, 'article'
)
self.assertEqual(
Article.publications.through._meta.fields[1].get_attname_column(),
('article_id', 'article_id')
)
self.assertEqual(
Article.publications.through._meta.fields[2].name, 'publication'
)
self.assertEqual(
Article.publications.through._meta.fields[2].get_attname_column(),
('publication_id', 'publication_id')
)

# The oracle backend truncates the name to 'model_package_article_publ233f'.
self.assertTrue(
Article._meta.get_field('publications').m2m_db_table() in ('model_package_article_publications', 'model_package_article_publ233f')
)

self.assertEqual(
Article._meta.get_field('publications').m2m_column_name(), 'article_id'
)
self.assertEqual(
Article._meta.get_field('publications').m2m_reverse_name(),
'publication_id'
)

0 comments on commit 7ddeb86

Please sign in to comment.