File: test_time_field.py

package info (click to toggle)
wtforms-components 0.11.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 352 kB
  • sloc: python: 1,582; makefile: 135; sh: 11
file content (61 lines) | stat: -rw-r--r-- 1,932 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from datetime import time

from tests import FieldTestCase, MultiDict
from wtforms_components import TimeField, TimeRange


class TestTimeField(FieldTestCase):
    field_class = TimeField

    def setup_method(self, method):
        self.valid_times = ["00:00", "11:11", "12:15"]
        self.invalid_times = [
            "00:61",
            "25:01",
            "unknown",
        ]

    def test_valid_times(self):
        form_class = self.init_form()
        for time_ in self.valid_times:
            form = form_class(MultiDict(test_field=time_))
            form.validate()
            assert len(form.errors) == 0

    def test_invalid_times(self):
        form_class = self.init_form()
        for time_ in self.invalid_times:
            form = form_class(MultiDict(test_field=time_))
            form.validate()
            assert len(form.errors["test_field"]) == 1

    def test_assigns_min_and_max(self):
        form_class = self.init_form(
            validators=[TimeRange(min=time(12, 12), max=time(13, 30))]
        )
        form = form_class(MultiDict(test_field="13:20"))
        assert str(form.test_field) == (
            '<input id="test_field" max="13:30:00" min="12:12:00"'
            ' name="test_field" type="time" value="13:20">'
        )

    def test_renders_input_time_at_midnight(self):
        form_class = self.init_form()
        form = form_class(MultiDict(test_field="00:00"))
        assert str(form.test_field) == (
            '<input id="test_field" name="test_field"' ' type="time" value="00:00">'
        )


class TestTimeFieldWithSeconds(TestTimeField):
    def setup_method(self, method):
        self.valid_times = ["00:00:00", "11:11:11", "12:15:17"]
        self.invalid_times = [
            "00:61",
            "01:01:61",
            "unknown",
        ]

    def init_form(self, **kwargs):
        kwargs["format"] = "%H:%M:%S"
        return super().init_form(**kwargs)