diff options
Diffstat (limited to 'tests/regressiontests/admin_util')
| -rw-r--r-- | tests/regressiontests/admin_util/models.py | 19 | ||||
| -rw-r--r-- | tests/regressiontests/admin_util/tests.py | 81 |
2 files changed, 98 insertions, 2 deletions
diff --git a/tests/regressiontests/admin_util/models.py b/tests/regressiontests/admin_util/models.py index b40f364b76..c4022b3814 100644 --- a/tests/regressiontests/admin_util/models.py +++ b/tests/regressiontests/admin_util/models.py @@ -1 +1,18 @@ -# needed for tests
\ No newline at end of file +from django.db import models + + + +class Article(models.Model): + """ + A simple Article model for testing + """ + title = models.CharField(max_length=100) + title2 = models.CharField(max_length=100, verbose_name="another name") + created = models.DateTimeField() + + def test_from_model(self): + return "nothing" + + def test_from_model_with_override(self): + return "nothing" + test_from_model_with_override.short_description = "not what you expect" diff --git a/tests/regressiontests/admin_util/tests.py b/tests/regressiontests/admin_util/tests.py index 11e71e20ec..e7f163aa94 100644 --- a/tests/regressiontests/admin_util/tests.py +++ b/tests/regressiontests/admin_util/tests.py @@ -3,12 +3,15 @@ import unittest from django.db import models from django.contrib import admin -from django.contrib.admin.util import display_for_field +from django.contrib.admin.util import display_for_field, label_for_field from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE +from models import Article + class UtilTests(unittest.TestCase): + def test_null_display_for_field(self): """ Regression test for #12550: display_for_field should handle None @@ -38,3 +41,79 @@ class UtilTests(unittest.TestCase): display_value = display_for_field(None, models.FloatField()) self.assertEqual(display_value, EMPTY_CHANGELIST_VALUE) + + def test_label_for_field(self): + """ + Tests for label_for_field + """ + self.assertEquals( + label_for_field("title", Article), + "title" + ) + self.assertEquals( + label_for_field("title2", Article), + "another name" + ) + self.assertEquals( + label_for_field("title2", Article, return_attr=True), + ("another name", None) + ) + + self.assertEquals( + label_for_field("__unicode__", Article), + "article" + ) + self.assertEquals( + label_for_field("__str__", Article), + "article" + ) + + self.assertRaises( + AttributeError, + lambda: label_for_field("unknown", Article) + ) + + def test_callable(obj): + return "nothing" + self.assertEquals( + label_for_field(test_callable, Article), + "test_callable" + ) + self.assertEquals( + label_for_field(test_callable, Article, return_attr=True), + ("test_callable", test_callable) + ) + + self.assertEquals( + label_for_field("test_from_model", Article), + "test_from_model" + ) + self.assertEquals( + label_for_field("test_from_model", Article, return_attr=True), + ("test_from_model", Article.test_from_model) + ) + self.assertEquals( + label_for_field("test_from_model_with_override", Article), + "not what you expect" + ) + + self.assertEquals( + label_for_field(lambda x: "nothing", Article), + "--" + ) + + class MockModelAdmin(object): + def test_from_model(self, obj): + return "nothing" + test_from_model.short_description = "not really the model" + self.assertEquals( + label_for_field("test_from_model", Article, model_admin=MockModelAdmin), + "not really the model" + ) + self.assertEquals( + label_for_field("test_from_model", Article, + model_admin = MockModelAdmin, + return_attr = True + ), + ("not really the model", MockModelAdmin.test_from_model) + ) |
