File: test_dto.py

package info (click to toggle)
python-argh 0.31.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 352 kB
  • sloc: python: 3,234; makefile: 4
file content (120 lines) | stat: -rw-r--r-- 3,073 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
120
"""
Unit Tests For the Argument DTO
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"""

from argh.dto import ParserAddArgumentSpec


def test_update_empty_dto() -> None:
    def stub_completer(): ...

    dto = ParserAddArgumentSpec(
        func_arg_name="foo",
        cli_arg_names=["-f"],
    )
    other_dto = ParserAddArgumentSpec(
        func_arg_name="bar",
        cli_arg_names=["-f", "--foo"],
        is_required=True,
        default_value=123,
        nargs="+",
        other_add_parser_kwargs={"knights": "Ni!"},
        completer=stub_completer,
    )

    dto.update(other_dto)

    assert dto == ParserAddArgumentSpec(
        func_arg_name="foo",
        cli_arg_names=["-f", "--foo"],
        is_required=True,
        default_value=123,
        nargs="+",
        other_add_parser_kwargs={"knights": "Ni!"},
        completer=stub_completer,
    )


def test_update_full_dto() -> None:
    def stub_completer_one(): ...

    def stub_completer_two(): ...

    dto = ParserAddArgumentSpec(
        func_arg_name="foo",
        cli_arg_names=["-f"],
        nargs="?",
        is_required=True,
        default_value=123,
        other_add_parser_kwargs={"'tis but a": "scratch"},
        completer=stub_completer_one,
    )
    other_dto = ParserAddArgumentSpec(
        func_arg_name="bar",
        cli_arg_names=["-f", "--foo"],
        nargs="+",
        is_required=False,
        default_value=None,
        other_add_parser_kwargs={"knights": "Ni!"},
        completer=stub_completer_two,
    )

    dto.update(other_dto)

    assert dto == ParserAddArgumentSpec(
        func_arg_name="foo",
        cli_arg_names=["-f", "--foo"],
        is_required=False,
        default_value=None,
        nargs="+",
        other_add_parser_kwargs={"knights": "Ni!", "'tis but a": "scratch"},
        completer=stub_completer_two,
    )


class TestGetAllKwargs: ...


def test_make_from_kwargs_minimal() -> None:
    dto = ParserAddArgumentSpec.make_from_kwargs("foo", ["-f", "--foo"], {})

    assert dto == ParserAddArgumentSpec(
        func_arg_name="foo", cli_arg_names=["-f", "--foo"]
    )


def test_make_from_kwargs_full() -> None:
    dto = ParserAddArgumentSpec.make_from_kwargs(
        "foo",
        ["-f", "--foo"],
        {
            "action": "some action",
            "nargs": "?",
            "default": None,
            "type": str,
            "choices": [1, 2, 3],
            "required": False,
            "help": "some help",
            "metavar": "FOOOOO",
            "dest": "foo_dest",
            "some arbitrary key": "and its value",
        },
    )

    assert dto == ParserAddArgumentSpec(
        func_arg_name="foo",
        cli_arg_names=["-f", "--foo"],
        is_required=False,
        default_value=None,
        nargs="?",
        other_add_parser_kwargs={
            "action": "some action",
            "type": str,
            "choices": [1, 2, 3],
            "help": "some help",
            "metavar": "FOOOOO",
            "dest": "foo_dest",
            "some arbitrary key": "and its value",
        },
    )