File: test_form_field.py

package info (click to toggle)
python-django-timezone-field 7.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 292 kB
  • sloc: python: 1,047; sh: 6; makefile: 3
file content (70 lines) | stat: -rw-r--r-- 1,958 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
import pytest
from django import forms
from pytest_lazy_fixtures import lf as lazy_fixture

from timezone_field import TimeZoneFormField


@pytest.fixture
def Form(use_pytz):
    class _Form(forms.Form):
        tz = TimeZoneFormField(use_pytz=use_pytz)
        tz_opt = TimeZoneFormField(required=False, use_pytz=use_pytz)

    yield _Form


@pytest.fixture
def FormInvalidChoice(all_tzstrs, invalid_tz, use_pytz):
    class _FormInvalidChoice(forms.Form):
        tz = TimeZoneFormField(choices=([(tz, tz) for tz in all_tzstrs] + [(invalid_tz, "UTC")]), use_pytz=use_pytz)

    yield _FormInvalidChoice


def test_form_valid1(Form, pst, pst_tz):
    form = Form({"tz": pst})
    assert form.is_valid()
    assert form.cleaned_data["tz"] == pst_tz
    assert form.cleaned_data["tz_opt"] is None


def test_form_valid2(Form, gmt, gmt_tz, utc, utc_tz):
    form = Form({"tz": gmt, "tz_opt": utc})
    assert form.is_valid()
    assert form.cleaned_data["tz"] == gmt_tz
    assert form.cleaned_data["tz_opt"] == utc_tz


@pytest.mark.parametrize(
    "tz, tz_invalid_choice",
    [
        [lazy_fixture("invalid_tz"), None],
        [None, lazy_fixture("invalid_tz")],
    ],
)
def test_form_invalid(Form, tz, tz_invalid_choice):
    form = Form({"tz": tz, "tz_invalid_choice": tz_invalid_choice})
    assert not form.is_valid()


def test_form_uncommon(Form, uncommon_tz):
    form = Form({"tz": uncommon_tz})
    assert not form.is_valid()


def test_form_default_human_readable_choices_dont_have_underscores(Form):
    form = Form()
    for choice in form.fields["tz"].choices:
        assert "_" not in choice[1]


def test_form_invalid_choice_valid(FormInvalidChoice, pst, pst_tz):
    form = FormInvalidChoice({"tz": pst})
    assert form.is_valid()
    assert form.cleaned_data["tz"] == pst_tz


def test_form_invalid_chocie_invalid_choice(FormInvalidChoice, invalid_tz):
    form = FormInvalidChoice({"tz": invalid_tz})
    assert not form.is_valid()