diff options
author | Florian Apolloner <florian@apolloner.eu> | 2013-02-26 09:53:47 +0100 |
---|---|---|
committer | Florian Apolloner <florian@apolloner.eu> | 2013-02-26 14:36:57 +0100 |
commit | 89f40e36246100df6a11316c31a76712ebc6c501 (patch) | |
tree | 6e65639683ddaf2027908d1ecb1739e0e2ff853b /tests/model_package | |
parent | b3d2ccb5bfbaf6e7fe1f98843baaa48c35a70950 (diff) | |
download | django-89f40e36246100df6a11316c31a76712ebc6c501.tar.gz |
Merged regressiontests and modeltests into the test root.
Diffstat (limited to 'tests/model_package')
-rw-r--r-- | tests/model_package/__init__.py | 1 | ||||
-rw-r--r-- | tests/model_package/models/__init__.py | 5 | ||||
-rw-r--r-- | tests/model_package/models/article.py | 11 | ||||
-rw-r--r-- | tests/model_package/models/publication.py | 8 | ||||
-rw-r--r-- | tests/model_package/tests.py | 74 |
5 files changed, 99 insertions, 0 deletions
diff --git a/tests/model_package/__init__.py b/tests/model_package/__init__.py new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/tests/model_package/__init__.py @@ -0,0 +1 @@ + diff --git a/tests/model_package/models/__init__.py b/tests/model_package/models/__init__.py new file mode 100644 index 0000000000..3c261aa444 --- /dev/null +++ b/tests/model_package/models/__init__.py @@ -0,0 +1,5 @@ +# Import all the models from subpackages +from __future__ import absolute_import + +from .article import Article +from .publication import Publication diff --git a/tests/model_package/models/article.py b/tests/model_package/models/article.py new file mode 100644 index 0000000000..f70c971c7e --- /dev/null +++ b/tests/model_package/models/article.py @@ -0,0 +1,11 @@ +from django.contrib.sites.models import Site +from django.db import models + + +class Article(models.Model): + sites = models.ManyToManyField(Site) + headline = models.CharField(max_length=100) + publications = models.ManyToManyField("model_package.Publication", null=True, blank=True,) + + class Meta: + app_label = 'model_package' diff --git a/tests/model_package/models/publication.py b/tests/model_package/models/publication.py new file mode 100644 index 0000000000..29828b9295 --- /dev/null +++ b/tests/model_package/models/publication.py @@ -0,0 +1,8 @@ +from django.db import models + + +class Publication(models.Model): + title = models.CharField(max_length=30) + + class Meta: + app_label = 'model_package' diff --git a/tests/model_package/tests.py b/tests/model_package/tests.py new file mode 100644 index 0000000000..5cf464858b --- /dev/null +++ b/tests/model_package/tests.py @@ -0,0 +1,74 @@ +from __future__ import absolute_import + +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 + ) + + class Meta: + app_label = 'model_package' + + +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' + ) |