File: test_split_date_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 (119 lines) | stat: -rw-r--r-- 3,728 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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
from datetime import date, datetime, time

from wtforms import Form
from wtforms.validators import DataRequired

from tests import MultiDict, SimpleFieldTestCase
from wtforms_components.fields import SplitDateTimeField


class Obj:
    test_field = None


class TestSplitDateTimeField(SimpleFieldTestCase):
    field_class = SplitDateTimeField

    def test_assigns_required_to_date(self):
        form_class = self.init_form(
            datetime_form={"date": {"validators": [DataRequired()]}}
        )
        form = form_class()
        assert str(form.test_field.date) == (
            '<input id="test_field-date" name="test_field-date" required '
            'type="date" value="">'
        )

    def test_renders_date_field(self):
        form_class = self.init_form()
        form = form_class()
        assert str(form.test_field.date) == (
            '<input id="test_field-date" name="test_field-date" type="date" '
            'value="">'
        )

    def test_assigns_required_to_time(self):
        form_class = self.init_form(
            datetime_form={"time": {"validators": [DataRequired()]}}
        )
        form = form_class()
        assert str(form.test_field.time) == (
            '<input id="test_field-time" name="test_field-time" required '
            'type="time" value="">'
        )

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

    def test_processes_values(self):
        form_class = self.init_form()
        form = form_class(
            MultiDict(
                {
                    "test_field-date": "2000-3-2",
                    "test_field-time": "19:10",
                }
            )
        )
        assert form.test_field.data["date"] == date(2000, 3, 2)
        assert form.test_field.data["time"] == time(19, 10)

    def test_populates_object(self):
        form_class = self.init_form()
        form = form_class(
            MultiDict(
                {
                    "test_field-date": "2000-3-2",
                    "test_field-time": "19:10",
                }
            )
        )
        obj = Obj()
        form.populate_obj(obj)
        assert obj.test_field == datetime(2000, 3, 2, 19, 10)

    def test_processes_values_when_format_is_set(self):
        form_class = self.init_form(
            datetime_form={
                "date": {"format": "%d.%m.%Y"},
                "time": {"format": "%H.%M"},
            }
        )
        form = form_class(
            MultiDict(
                {
                    "test_field-date": "2.3.2000",
                    "test_field-time": "19.10",
                }
            )
        )
        assert form.test_field.data["date"] == date(2000, 3, 2)
        assert form.test_field.data["time"] == time(19, 10)

    def test_default_base_form(self):
        form_class = self.init_form()
        form = form_class()
        assert form.test_field.form.__class__.__bases__ == (Form,)

    def test_custom_base_form(self):
        class A(Form):
            pass

        form_class = self.init_form(datetime_form={"base_form": A})
        form = form_class()
        assert form.test_field.form.__class__.__bases__ == (A,)

    def test_custom_base_form_with_two_instances(self):
        class A(Form):
            pass

        form_class = self.init_form(datetime_form={"base_form": A})
        form = form_class()
        form2 = form_class()
        assert form.test_field.form.__class__.__bases__ == (A,)
        assert form2.test_field.form.__class__.__bases__ == (A,)