Skip to content

Commit

Permalink
Test django model validation support.
Browse files Browse the repository at this point in the history
  • Loading branch information
Warren Smith committed Mar 5, 2021
1 parent 038cda9 commit 2e0c34f
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 5 deletions.
8 changes: 4 additions & 4 deletions django_test_app/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ class Integer(StaticModel):


class TestModel(models.Model):
name = models.CharField(max_length=10, unique=True)
name = models.CharField(max_length=20, unique=True)
char = StaticModelCharField(static_model=String, value_field_name='code',
display_field_name='display', max_length=10, null=True)
display_field_name='display', max_length=10, null=True, blank=True)
text = StaticModelTextField(static_model=String, value_field_name='code',
display_field_name='display', null=True)
display_field_name='display', null=True, blank=True)
integer = StaticModelIntegerField(static_model=Integer, value_field_name='value',
display_field_name='display', null=True)
display_field_name='display', null=True, blank=True)
51 changes: 50 additions & 1 deletion tests/django_integration_tests/test_fields.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from unittest.case import TestCase

from django.core.exceptions import ValidationError

from django_test_app.models import Integer, String, TestModel


Expand Down Expand Up @@ -46,11 +48,26 @@ def test_write_id(self):
object2.refresh_from_db()
self.assertIs(object2.char, String.VALUE_1)

def test_clean(self):
object1 = TestModel.objects.get(char=String.VALUE_1)

object1.char = String.VALUE_2
object1.full_clean()

object1.char = String.VALUE_3.code
object1.full_clean()

object1.char = 'bad'
self.assertRaises(ValidationError, object1.full_clean)

object1.char = 1
self.assertRaises(ValidationError, object1.full_clean)

def tearDown(self):
TestModel.objects.all().delete()


class TestFieldTest(TestCase):
class TextFieldTest(TestCase):
def setUp(self):
TestModel.objects.create(name='Test Object 1', text=String.VALUE_1)
TestModel.objects.create(name='Test Object 2', text=String.VALUE_2.code)
Expand Down Expand Up @@ -93,6 +110,21 @@ def test_write_id(self):
object2.refresh_from_db()
self.assertIs(object2.text, String.VALUE_1)

def test_clean(self):
object1 = TestModel.objects.get(text=String.VALUE_1)

object1.text = String.VALUE_2
object1.full_clean()

object1.text = String.VALUE_3.code
object1.full_clean()

object1.text = 'bad'
self.assertRaises(ValidationError, object1.full_clean)

object1.text = 1
self.assertRaises(ValidationError, object1.full_clean)

def tearDown(self):
TestModel.objects.all().delete()

Expand Down Expand Up @@ -140,5 +172,22 @@ def test_write_id(self):
object2.refresh_from_db()
self.assertIs(object2.integer, Integer.VALUE_1)

def test_clean(self):
object1 = TestModel.objects.get(integer=Integer.VALUE_1)

object1.integer = Integer.VALUE_2
object1.full_clean()
self.assertIs(object1.integer, Integer.VALUE_2)

object1.integer = Integer.VALUE_3.value
object1.full_clean()
self.assertIs(object1.integer, Integer.VALUE_3)

object1.integer = 'bad'
self.assertRaises(ValidationError, object1.full_clean)

object1.integer = 0
self.assertRaises(ValidationError, object1.full_clean)

def tearDown(self):
TestModel.objects.all().delete()

0 comments on commit 2e0c34f

Please sign in to comment.