-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_project.py
108 lines (73 loc) · 2.79 KB
/
test_project.py
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
import argparse
import sys
from datetime import date, timedelta
import pytest
import constants
from constants import COUNTRIES_CSV_PATH
from project import (
get_sem_version,
last_day_valid_stay,
parse_args,
valid_arg_iso8601_date,
valid_countries,
)
def test_get_sem_version() -> None:
constants.PROG_SEM_VERSION = (1, 0, 0)
assert "1.0.0" == get_sem_version()
constants.PROG_SEM_VERSION = (2, 3, 4)
assert "2.3.4" == get_sem_version()
def test_valid_arg_iso8601_date() -> None:
assert valid_arg_iso8601_date("0001-01-01")
assert valid_arg_iso8601_date("1970-01-01")
assert valid_arg_iso8601_date("9999-12-31")
with pytest.raises(argparse.ArgumentTypeError):
valid_arg_iso8601_date("111-01-01")
with pytest.raises(argparse.ArgumentTypeError):
valid_arg_iso8601_date("1970-1-01")
with pytest.raises(argparse.ArgumentTypeError):
valid_arg_iso8601_date("1970-01-1")
with pytest.raises(argparse.ArgumentTypeError):
valid_arg_iso8601_date("cat-01-01")
with pytest.raises(argparse.ArgumentTypeError):
valid_arg_iso8601_date("cat")
with pytest.raises(argparse.ArgumentTypeError):
valid_arg_iso8601_date("1970-01")
with pytest.raises(argparse.ArgumentTypeError):
valid_arg_iso8601_date("1970")
def test_parse_args() -> None:
sys.argv = ["prog_name", "visa_info", "-c", "Germany"]
args = parse_args()
assert "visa_info", args.command
assert "Germany", args.country
def test_parse_args_visa_info_list() -> None:
sys.argv = ["prog_name", "visa_info", "-l"]
args = parse_args()
assert "visa_info", args.command
assert not args.country
assert args.list_countries
def test_parse_args_exit_calc_default_entry() -> None:
sys.argv = ["prog_name", "exit_calc", "-d", "5"]
args = parse_args()
assert "exit_calc", args.command
assert 5, args.days_valid
assert date.today() == args.entry_date
def test_parse_args_exit_calc_set_entry() -> None:
sys.argv = ["prog_name", "exit_calc", "-d", "5", "-e", "2025-01-17"]
args = parse_args()
assert "exit_calc", args.command
assert 5, args.days_valid
assert date.fromisoformat("2025-01-17") == args.entry_date
def test_last_day_valid_stay() -> None:
days = 1
date_entry = date.today()
date_valid = date_entry + timedelta(days - 1)
assert date_valid == last_day_valid_stay(days, date_entry)
def test_last_day_valid_stay_invalid() -> None:
date_entry = date.today()
with pytest.raises(ValueError):
assert last_day_valid_stay(0, date_entry)
with pytest.raises(ValueError):
assert last_day_valid_stay(-1, date_entry)
def test_valid_countries() -> None:
with open(COUNTRIES_CSV_PATH) as file:
assert len(list(file)) - 1 == len(valid_countries())