File: test_build_app_context.py

package info (click to toggle)
python-briefcase 0.3.22-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,300 kB
  • sloc: python: 59,405; makefile: 57
file content (135 lines) | stat: -rw-r--r-- 4,393 bytes parent folder | download | duplicates (2)
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
def test_question_sequence(new_command):
    """Questions are asked, a context is constructed."""

    # Prime answers for all the questions.
    new_command.console.values = [
        "My Application",  # formal name
        "",  # app name - accept the default
        "org.beeware",  # bundle ID
        "My Project",  # project name
        "Cool stuff",  # description
        "Grace Hopper",  # author
        "grace@navy.mil",  # author email
        "https://navy.mil/myapplication",  # URL
        "4",  # license
    ]

    context = new_command.build_app_context(
        project_overrides={},
    )

    assert context == dict(
        app_name="myapplication",
        author="Grace Hopper",
        author_email="grace@navy.mil",
        bundle="org.beeware",
        class_name="MyApplication",
        description="Cool stuff",
        formal_name="My Application",
        license="GNU General Public License v2 (GPLv2)",
        module_name="myapplication",
        source_dir="src/myapplication",
        test_source_dir="tests",
        project_name="My Project",
        url="https://navy.mil/myapplication",
    )


def test_question_sequence_with_overrides(new_command):
    """Overrides can be used to set the answers for questions."""

    # Prime answers for none of the questions.
    new_command.console.values = []

    context = new_command.build_app_context(
        project_overrides=dict(
            formal_name="My Override App",
            app_name="myoverrideapp",
            bundle="net.example",
            project_name="My Override Project",
            description="My override description",
            author="override, author",
            author_email="author@override.tld",
            url="https://override.example.com",
            license="MIT license",
        ),
    )

    assert context == dict(
        app_name="myoverrideapp",
        author="override, author",
        author_email="author@override.tld",
        bundle="net.example",
        class_name="MyOverrideApp",
        description="My override description",
        formal_name="My Override App",
        license="MIT license",
        module_name="myoverrideapp",
        source_dir="src/myoverrideapp",
        test_source_dir="tests",
        project_name="My Override Project",
        url="https://override.example.com",
    )


def test_question_sequence_with_bad_license_override(new_command):
    """A bad override for license uses user input instead."""

    # Prime answers for all the questions.
    new_command.console.values = [
        "4",  # license
    ]

    context = new_command.build_app_context(
        project_overrides=dict(
            formal_name="My Override App",
            app_name="myoverrideapp",
            bundle="net.example",
            project_name="My Override Project",
            description="My override description",
            author="override, author",
            author_email="author@override.tld",
            url="https://override.example.com",
            license="BAD i don't exist license",
        ),
    )

    assert context == dict(
        app_name="myoverrideapp",
        author="override, author",
        author_email="author@override.tld",
        bundle="net.example",
        class_name="MyOverrideApp",
        description="My override description",
        formal_name="My Override App",
        license="GNU General Public License v2 (GPLv2)",
        module_name="myoverrideapp",
        source_dir="src/myoverrideapp",
        test_source_dir="tests",
        project_name="My Override Project",
        url="https://override.example.com",
    )


def test_question_sequence_with_no_user_input(new_command):
    """If no user input is provided, all user inputs are taken as default."""

    new_command.console.input_enabled = False

    context = new_command.build_app_context(project_overrides={})

    assert context == dict(
        app_name="helloworld",
        author="Jane Developer",
        author_email="jane@example.com",
        bundle="com.example",
        class_name="HelloWorld",
        description="My first application",
        formal_name="Hello World",
        license="BSD license",
        module_name="helloworld",
        source_dir="src/helloworld",
        test_source_dir="tests",
        project_name="Hello World",
        url="https://example.com/helloworld",
    )