File: test_datetimelocal.py

package info (click to toggle)
wtforms 3.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,064 kB
  • sloc: python: 5,264; makefile: 27; sh: 17
file content (74 lines) | stat: -rw-r--r-- 2,054 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
import os
from datetime import datetime

from tests.common import DummyPostData
from wtforms.fields import DateTimeLocalField
from wtforms.form import Form


def make_form(name="F", **fields):
    return type(str(name), (Form,), fields)


class F(Form):
    a = DateTimeLocalField()
    b = DateTimeLocalField(format="%Y-%m-%d %H:%M")
    c = DateTimeLocalField(
        format="%#m/%#d/%Y %#I:%M" if os.name == "nt" else "%-m/%-d/%Y %-I:%M"
    )


def test_basic():
    d = datetime(2008, 5, 5, 4, 30, 0, 0)
    # Basic test with both inputs
    form = F(
        DummyPostData(
            a=["2008-05-05", "04:30:00"], b=["2008-05-05 04:30"], c=["5/5/2008 4:30"]
        )
    )
    assert form.a.data == d
    assert (
        form.a()
        == '<input id="a" name="a" type="datetime-local" value="2008-05-05 04:30:00">'
    )
    assert form.b.data == d
    assert (
        form.b()
        == '<input id="b" name="b" type="datetime-local" value="2008-05-05 04:30">'
    )
    assert form.c.data == d
    assert (
        form.c()
        == '<input id="c" name="c" type="datetime-local" value="5/5/2008 4:30">'
    )
    assert form.validate()

    # Test with a missing input
    form = F(DummyPostData(a=["2008-05-05"]))
    assert not form.validate()
    assert form.a.errors[0] == "Not a valid datetime value."

    form = F(a=d, b=d, c=d)
    assert form.validate()
    assert form.a._value() == "2008-05-05 04:30:00"
    assert form.b._value() == "2008-05-05 04:30"
    assert form.c._value() == "5/5/2008 4:30"


def test_microseconds():
    d = datetime(2011, 5, 7, 3, 23, 14, 424200)
    F = make_form(a=DateTimeLocalField(format="%Y-%m-%d %H:%M:%S.%f"))
    form = F(DummyPostData(a=["2011-05-07 03:23:14.4242"]))
    assert d == form.a.data


def test_separators():
    dt = datetime(2008, 5, 5, 4, 30, 0, 0)

    form = F(DummyPostData(a=["2008-05-05 04:30:00"]))
    assert form.a.data == dt
    assert form.validate()

    form = F(DummyPostData(a=["2008-05-05T04:30:00"]))
    assert form.a.data == dt
    assert form.validate()