Added test to make sure inherited models with no custom manager still have the correct default manager

This commit is contained in:
Dirk Groten 2019-10-20 20:06:44 +02:00
parent 50a7868fa7
commit f42d3404e2
3 changed files with 18 additions and 9 deletions

View file

@ -314,26 +314,29 @@ class CustomManager2TestModel(models.Model):
class CustomManagerAbstract(models.Manager):
def to_translate(self):
return self.get_queryset().filter(needs_translation=True)
pass
class CustomManagerBaseModel(models.Model):
needs_translation = models.BooleanField(default=False)
objects = models.Manager()
objects = models.Manager() # ensures objects is the default manager
translations = CustomManagerAbstract()
class Meta:
abstract = True
class CustomAbstractManagerTestModel(CustomManagerBaseModel):
class CustomManagerChildTestModel(CustomManagerBaseModel):
title = models.CharField(ugettext_lazy('title'), max_length=255)
objects = CustomManager2()
class PlainChildTestModel(CustomManagerBaseModel):
title = models.CharField(ugettext_lazy('title'), max_length=255)
# ######### Required fields testing
class RequiredModel(models.Model):

View file

@ -40,7 +40,7 @@ models = translation = None
request = None
# How many models are registered for tests.
TEST_MODELS = 32 + (1 if MIGRATIONS else 0)
TEST_MODELS = 33 + (1 if MIGRATIONS else 0)
class reload_override_settings(override_settings):
@ -2731,12 +2731,17 @@ class TestManager(ModeltranslationTestBase):
manager = models.CustomManagerTestModel.another_mgr_name
self.assertTrue(isinstance(manager, MultilingualManager))
def test_default_manager_for_inherited_models(self):
def test_default_manager_for_inherited_models_with_custom_manager(self):
"""Test if default manager is still set from local managers"""
manager = models.CustomAbstractManagerTestModel._meta.default_manager
manager = models.CustomManagerChildTestModel._meta.default_manager
self.assertEqual('objects', manager.name)
self.assertTrue(isinstance(manager, MultilingualManager))
self.assertTrue(isinstance(models.CustomAbstractManagerTestModel.translations, MultilingualManager))
self.assertTrue(isinstance(models.CustomManagerChildTestModel.translations, MultilingualManager))
def test_default_manager_for_inherited_models(self):
manager = models.PlainChildTestModel._meta.default_manager
self.assertEqual('objects', manager.name)
self.assertTrue(isinstance(models.PlainChildTestModel.translations, MultilingualManager))
def test_custom_manager2(self):
"""Test if user-defined queryset is still working"""

View file

@ -137,7 +137,8 @@ class ManagerTestModelTranslationOptions(TranslationOptions):
@register([
models.CustomManagerTestModel,
models.CustomManager2TestModel,
models.CustomAbstractManagerTestModel
models.CustomManagerChildTestModel,
models.PlainChildTestModel
])
class CustomManagerTestModelTranslationOptions(TranslationOptions):
fields = ('title',)