mirror of
https://github.com/django/django.git
synced 2025-07-07 03:09:22 +00:00
[soc2009/model-validation] Validation test refactoring
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/model-validation@11190 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
7464e4ec27
commit
cb7d3f2a0e
@ -0,0 +1,13 @@
|
|||||||
|
import unittest
|
||||||
|
|
||||||
|
from django.core.exceptions import ValidationError
|
||||||
|
|
||||||
|
class ValidationTestCase(unittest.TestCase):
|
||||||
|
def assertFailsValidation(self, clean, failed_fields):
|
||||||
|
self.assertRaises(ValidationError, clean)
|
||||||
|
try:
|
||||||
|
clean()
|
||||||
|
except ValidationError, e:
|
||||||
|
self.assertEquals(sorted(failed_fields), sorted(e.message_dict.keys()))
|
||||||
|
|
||||||
|
|
@ -1,18 +1,14 @@
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from django.core.exceptions import ValidationError, NON_FIELD_ERRORS
|
from django.core.exceptions import ValidationError, NON_FIELD_ERRORS
|
||||||
from django.test import TestCase
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
from modeltests.validation import ValidationTestCase
|
||||||
from models import *
|
from models import *
|
||||||
|
|
||||||
class BaseModelValidationTests(TestCase):
|
from validators import TestModelsWithValidators
|
||||||
def assertFailsValidation(self, clean, failed_fields):
|
|
||||||
self.assertRaises(ValidationError, clean)
|
class BaseModelValidationTests(ValidationTestCase):
|
||||||
try:
|
|
||||||
clean()
|
|
||||||
except ValidationError, e:
|
|
||||||
self.assertEquals(sorted(failed_fields), sorted(e.message_dict.keys()))
|
|
||||||
|
|
||||||
def test_missing_required_field_raises_error(self):
|
def test_missing_required_field_raises_error(self):
|
||||||
mtv = ModelToValidate()
|
mtv = ModelToValidate()
|
||||||
@ -43,14 +39,6 @@ class BaseModelValidationTests(TestCase):
|
|||||||
mtv = ModelToValidate(number=10, name='Some Name', email='valid@email.com')
|
mtv = ModelToValidate(number=10, name='Some Name', email='valid@email.com')
|
||||||
self.assertEqual(None, mtv.clean())
|
self.assertEqual(None, mtv.clean())
|
||||||
|
|
||||||
def test_custom_validator_passes_for_correct_value(self):
|
|
||||||
mtv = ModelToValidate(number=10, name='Some Name', f_with_custom_validator=42)
|
|
||||||
self.assertEqual(None, mtv.clean())
|
|
||||||
|
|
||||||
def test_custom_validator_raises_error_for_incorrect_value(self):
|
|
||||||
mtv = ModelToValidate(number=10, name='Some Name', f_with_custom_validator=12)
|
|
||||||
self.assertFailsValidation(mtv.clean, ['f_with_custom_validator'])
|
|
||||||
|
|
||||||
class GetUniqueCheckTests(unittest.TestCase):
|
class GetUniqueCheckTests(unittest.TestCase):
|
||||||
def test_unique_fields_get_collected(self):
|
def test_unique_fields_get_collected(self):
|
||||||
m = UniqueFieldsModel()
|
m = UniqueFieldsModel()
|
||||||
|
14
tests/modeltests/validation/validators.py
Normal file
14
tests/modeltests/validation/validators.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
|
from modeltests.validation import ValidationTestCase
|
||||||
|
from models import *
|
||||||
|
|
||||||
|
class TestModelsWithValidators(ValidationTestCase):
|
||||||
|
def test_custom_validator_passes_for_correct_value(self):
|
||||||
|
mtv = ModelToValidate(number=10, name='Some Name', f_with_custom_validator=42)
|
||||||
|
self.assertEqual(None, mtv.clean())
|
||||||
|
|
||||||
|
def test_custom_validator_raises_error_for_incorrect_value(self):
|
||||||
|
mtv = ModelToValidate(number=10, name='Some Name', f_with_custom_validator=12)
|
||||||
|
self.assertFailsValidation(mtv.clean, ['f_with_custom_validator'])
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user