1
0
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:
Honza Král 2009-07-05 13:28:41 +00:00
parent 7464e4ec27
commit cb7d3f2a0e
3 changed files with 31 additions and 16 deletions

View File

@ -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()))

View File

@ -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()

View 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'])