mirror of
https://github.com/django/django.git
synced 2024-12-23 01:25:58 +00:00
d818e0c9b2
This is the result of Christopher Medrela's 2013 Summer of Code project. Thanks also to Preston Holmes, Tim Graham, Anssi Kääriäinen, Florian Apolloner, and Alex Gaynor for review notes along the way. Also: Fixes #8579, fixes #3055, fixes #19844.
69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
# -*- encoding: utf-8 -*-
|
|
from __future__ import unicode_literals
|
|
|
|
from types import MethodType
|
|
|
|
from django.core.checks import Error
|
|
from django.db import connection, models
|
|
|
|
from .base import IsolatedModelsTestCase
|
|
|
|
|
|
class BackendSpecificChecksTests(IsolatedModelsTestCase):
|
|
|
|
def test_check_field(self):
|
|
""" Test if backend specific checks are performed. """
|
|
|
|
error = Error('an error', hint=None)
|
|
|
|
def mock(self, field, **kwargs):
|
|
return [error]
|
|
|
|
class Model(models.Model):
|
|
field = models.IntegerField()
|
|
|
|
field = Model._meta.get_field('field')
|
|
|
|
# Mock connection.validation.check_field method.
|
|
v = connection.validation
|
|
old_check_field = v.check_field
|
|
v.check_field = MethodType(mock, v)
|
|
try:
|
|
errors = field.check()
|
|
finally:
|
|
# Unmock connection.validation.check_field method.
|
|
v.check_field = old_check_field
|
|
|
|
self.assertEqual(errors, [error])
|
|
|
|
def test_validate_field(self):
|
|
""" Errors raised by deprecated `validate_field` method should be
|
|
collected. """
|
|
|
|
def mock(self, errors, opts, field):
|
|
errors.add(opts, "An error!")
|
|
|
|
class Model(models.Model):
|
|
field = models.IntegerField()
|
|
|
|
field = Model._meta.get_field('field')
|
|
expected = [
|
|
Error(
|
|
"An error!",
|
|
hint=None,
|
|
obj=field,
|
|
)
|
|
]
|
|
|
|
# Mock connection.validation.validate_field method.
|
|
v = connection.validation
|
|
old_validate_field = v.validate_field
|
|
v.validate_field = MethodType(mock, v)
|
|
try:
|
|
errors = field.check()
|
|
finally:
|
|
# Unmock connection.validation.validate_field method.
|
|
v.validate_field = old_validate_field
|
|
|
|
self.assertEqual(errors, expected)
|