|
1 from unittest import TestCase |
|
2 from django.db import DatabaseError |
|
3 from regressiontests.max_lengths.models import PersonWithDefaultMaxLengths, PersonWithCustomMaxLengths |
|
4 |
|
5 class MaxLengthArgumentsTests(TestCase): |
|
6 |
|
7 def verify_max_length(self, model,field,length): |
|
8 self.assertEquals(model._meta.get_field(field).max_length,length) |
|
9 |
|
10 def test_default_max_lengths(self): |
|
11 self.verify_max_length(PersonWithDefaultMaxLengths, 'email', 75) |
|
12 self.verify_max_length(PersonWithDefaultMaxLengths, 'vcard', 100) |
|
13 self.verify_max_length(PersonWithDefaultMaxLengths, 'homepage', 200) |
|
14 self.verify_max_length(PersonWithDefaultMaxLengths, 'avatar', 100) |
|
15 |
|
16 def test_custom_max_lengths(self): |
|
17 self.verify_max_length(PersonWithCustomMaxLengths, 'email', 250) |
|
18 self.verify_max_length(PersonWithCustomMaxLengths, 'vcard', 250) |
|
19 self.verify_max_length(PersonWithCustomMaxLengths, 'homepage', 250) |
|
20 self.verify_max_length(PersonWithCustomMaxLengths, 'avatar', 250) |
|
21 |
|
22 class MaxLengthORMTests(TestCase): |
|
23 |
|
24 def test_custom_max_lengths(self): |
|
25 args = { |
|
26 "email": "someone@example.com", |
|
27 "vcard": "vcard", |
|
28 "homepage": "http://example.com/", |
|
29 "avatar": "me.jpg" |
|
30 } |
|
31 |
|
32 for field in ("email", "vcard", "homepage", "avatar"): |
|
33 new_args = args.copy() |
|
34 new_args[field] = "X" * 250 # a value longer than any of the default fields could hold. |
|
35 p = PersonWithCustomMaxLengths.objects.create(**new_args) |
|
36 self.assertEqual(getattr(p, field), ("X" * 250)) |