# coding: utf-8
from django.db.models.fields import AutoField
from django.conf import settings
from m3.actions import _import_by_path
from base_test import BaseTest
path = getattr(settings, 'OBJECTPACK_BASE_TEST', None)
if path:
patched_base_test = _import_by_path(path)
else:
patched_base_test = BaseTest
[документация]class BaseUnitTestModel(patched_base_test):
exclude_field_checker = ['lft', 'rght', 'tree_id', 'level', ]
exclude_model_checker = []
testing_model = None
[документация] def test_spell_model_verbose_name(self):
"""
Проверка орфографии verbose_name в моделях
"""
model = self.testing_model
if model and model.__name__ not in self.exclude_model_checker:
verbose_name = model._meta.verbose_name
self.assertTrue(self.check_spell(unicode(verbose_name)),
verbose_name)
[документация] def test_have_model_verbose_name(self):
"""
Проверка наличия в классе Meta модели verbose_name
"""
model = self.testing_model
if model and model.__name__ not in self.exclude_model_checker:
model_name = model.__name__.lower()
verbose_name = unicode(model._meta.verbose_name)
is_equal = model_name != verbose_name
self.assertTrue(
is_equal,
'Model used default class name in verbose name.')
[документация] def test_have_model_verbose_name_plural(self):
"""
Проверка наличия в классе Meta модели verbose_name_plural
"""
model = self.testing_model
if model and model.__name__ not in self.exclude_model_checker:
model_name = model.__name__.lower()
verbose_name_plural = model._meta.verbose_name_plural
is_equal = model_name != verbose_name_plural + u's'
self.assertTrue(
is_equal,
'Model used default class name in verbose name.')
[документация] def test_have_model_fields_verbose_name(self):
"""
Проверка наличия в field модели verbose_name
"""
model = self.testing_model
if model and model.__name__ not in self.exclude_model_checker:
all_fields = model._meta.fields
for temp_field in all_fields:
if temp_field.name not in self.exclude_field_checker:
if not isinstance(temp_field, AutoField):
if not temp_field.name.endswith('_ptr'):
verbose_name = unicode(temp_field.verbose_name)
field_name = temp_field.name.replace('_', ' ')
is_equal = verbose_name != field_name
self.assertTrue(is_equal, (
'Error in field: ' + field_name + str(model)))
[документация] def test_spell_model_fields_verbose_name(self):
"""
Проверка орфографии у полей модели
"""
model = self.testing_model
if model and model.__name__ not in self.exclude_model_checker:
all_fields = model._meta.fields
for temp_field in all_fields:
if temp_field.name not in self.exclude_field_checker:
if not isinstance(temp_field, AutoField):
if not temp_field.name.endswith('_ptr'):
verbose_name = unicode(temp_field.verbose_name)
self.assertTrue(
self.check_spell(verbose_name), verbose_name)
if hasattr(temp_field, 'choices') and temp_field.choices:
for key, val in temp_field.choices:
self.assertTrue(
self.check_spell(val), val)