summaryrefslogtreecommitdiff
path: root/tests/regressiontests/admin_util
diff options
context:
space:
mode:
Diffstat (limited to 'tests/regressiontests/admin_util')
-rw-r--r--tests/regressiontests/admin_util/models.py19
-rw-r--r--tests/regressiontests/admin_util/tests.py81
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)
+ )