diff --git a/dav_base/tests/generic.py b/dav_base/tests/generic.py index 7d50050..1c92a6b 100644 --- a/dav_base/tests/generic.py +++ b/dav_base/tests/generic.py @@ -4,6 +4,7 @@ from django.apps import apps from django.contrib.auth.models import AbstractUser from django.contrib.staticfiles.testing import StaticLiveServerTestCase from django.core import mail as django_mail +from django.core.exceptions import ValidationError from django.test import SimpleTestCase, TestCase, tag from django.urls import reverse from selenium import webdriver @@ -209,6 +210,24 @@ class UrlsTestCase(SimpleTestCase): 'Getting url named \'{}\' resolve to wrong function'.format(url.name)) +class ValidatorTestMixin(object): + def assertValid(self, validator, data): + for val in data: + try: + validator(val) + except ValidationError as e: # pragma: no cover + self.fail('%s: %s' % (val, e)) + + def assertInvalid(self, validator, data): + for val in data: + try: + validator(val) + except ValidationError: + pass + else: # pragma: no cover + self.fail('%s: no ValidationError was raised' % val) + + class SeleniumTestCase(StaticLiveServerTestCase): headless = True window_width = 1024 diff --git a/dav_registration/tests/test_validators.py b/dav_registration/tests/test_validators.py index d9acbb5..a7d8e2d 100644 --- a/dav_registration/tests/test_validators.py +++ b/dav_registration/tests/test_validators.py @@ -1,12 +1,15 @@ -from django.core.exceptions import ValidationError from django.test import SimpleTestCase +from dav_base.tests.generic import ValidatorTestMixin + from ..validators import DAVNumberValidator -class TestCase(SimpleTestCase): - def test_dav_number_validator(self): - valid_data = ( +class DAVNumberValidatorTestCase(ValidatorTestMixin, SimpleTestCase): + validator = DAVNumberValidator + + def test_valid_data(self): + data = ( '131/00/1', '1', '22', @@ -19,7 +22,10 @@ class TestCase(SimpleTestCase): '54321*54321*4321*4321', '54321*54321*4321*4321*87654321', ) - invalid_data = ( + self.assertValid(self.validator, data) + + def test_invalid_data(self): + data = ( '131/00/', '1/1/1', '1/1', @@ -28,19 +34,4 @@ class TestCase(SimpleTestCase): 'abc/00/131', '131/ab/131', ) - - v = DAVNumberValidator - - for val in valid_data: - try: - v(val) - except ValidationError as e: # pragma: no cover - self.fail('%s: %s' % (val, e)) - - for val in invalid_data: - try: - v(val) - except ValidationError: - pass - else: # pragma: no cover - self.fail('%s: no ValidationError was raised' % val) + self.assertInvalid(self.validator, data)