Tests model DurationField ¶
Classe DurationModel ¶
class DurationModel(models.Model):
field = models.DurationField()
Classe NullDurationModel ¶
class NullDurationModel(models.Model):
field = models.DurationField(null=True)
Classe VerboseNameField ¶
1 class VerboseNameField(models.Model):
2 id = models.AutoField("verbose pk", primary_key=True)
3 field1 = models.BigIntegerField("verbose field1")
4 field2 = models.BooleanField("verbose field2", default=False)
5 field3 = models.CharField("verbose field3", max_length=10)
6 field4 = models.DateField("verbose field4")
7 field5 = models.DateTimeField("verbose field5")
8 field6 = models.DecimalField("verbose field6", max_digits=6, decimal_places=1)
9 field7 = models.EmailField("verbose field7")
10 field8 = models.FileField("verbose field8", upload_to="unused")
11 field9 = models.FilePathField("verbose field9")
12 field10 = models.FloatField("verbose field10")
13 # Don't want to depend on Pillow in this test
14 # field_image = models.ImageField("verbose field")
15 field11 = models.IntegerField("verbose field11")
16 field12 = models.GenericIPAddressField("verbose field12", protocol="ipv4")
17 field13 = models.NullBooleanField("verbose field13")
18 field14 = models.PositiveIntegerField("verbose field14")
19 field15 = models.PositiveSmallIntegerField("verbose field15")
20 field16 = models.SlugField("verbose field16")
21 field17 = models.SmallIntegerField("verbose field17")
22 field18 = models.TextField("verbose field18")
23 field19 = models.TimeField("verbose field19")
24 field20 = models.URLField("verbose field20")
25 field21 = models.UUIDField("verbose field21")
26 field22 = models.DurationField("verbose field22")
class BasicFieldTests(SimpleTestCase) ¶
1 import pickle
2
3 from django import forms
4 from django.core.exceptions import ValidationError
5 from django.db import models
6 from django.test import SimpleTestCase, TestCase
7 from django.utils.functional import lazy
8
9 from .models import (
10 Bar, Choiceful, Foo, RenamedField, VerboseNameField, Whiz, WhizDelayed,
11 WhizIter, WhizIterEmpty,
12 )
test_model_duration_field.py ¶
1import datetime
2
3from django.core.exceptions import ValidationError
4from django.forms import DurationField
5from django.test import SimpleTestCase
6from django.utils import translation
7from django.utils.duration import duration_string
8
9from . import FormFieldAssertionsMixin
10
11
12class DurationFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
13 def test_durationfield_clean(self):
14 f = DurationField()
15 self.assertEqual(datetime.timedelta(seconds=30), f.clean("30"))
16 self.assertEqual(datetime.timedelta(minutes=15, seconds=30), f.clean("15:30"))
17 self.assertEqual(
18 datetime.timedelta(hours=1, minutes=15, seconds=30), f.clean("1:15:30")
19 )
20 self.assertEqual(
21 datetime.timedelta(
22 days=1, hours=1, minutes=15, seconds=30, milliseconds=300
23 ),
24 f.clean("1 1:15:30.3"),
25 )
26
27 def test_overflow(self):
28 msg = "The number of days must be between {min_days} and {max_days}.".format(
29 min_days=datetime.timedelta.min.days,
30 max_days=datetime.timedelta.max.days,
31 )
32 f = DurationField()
33 with self.assertRaisesMessage(ValidationError, msg):
34 f.clean("1000000000 00:00:00")
35 with self.assertRaisesMessage(ValidationError, msg):
36 f.clean("-1000000000 00:00:00")
37
38 def test_overflow_translation(self):
39 msg = "Le nombre de jours doit être entre {min_days} et {max_days}.".format(
40 min_days=datetime.timedelta.min.days,
41 max_days=datetime.timedelta.max.days,
42 )
43 with translation.override("fr"):
44 with self.assertRaisesMessage(ValidationError, msg):
45 DurationField().clean("1000000000 00:00:00")
46
47 def test_durationfield_render(self):
48 self.assertWidgetRendersTo(
49 DurationField(initial=datetime.timedelta(hours=1)),
50 '<input id="id_f" type="text" name="f" value="01:00:00" required>',
51 )
52
53 def test_durationfield_integer_value(self):
54 f = DurationField()
55 self.assertEqual(datetime.timedelta(0, 10800), f.clean(10800))
56
57 def test_durationfield_prepare_value(self):
58 field = DurationField()
59 td = datetime.timedelta(minutes=15, seconds=30)
60 self.assertEqual(field.prepare_value(td), duration_string(td))
61 self.assertEqual(field.prepare_value("arbitrary"), "arbitrary")
62 self.assertIsNone(field.prepare_value(None))