-
Notifications
You must be signed in to change notification settings - Fork 0
/
validation.py
99 lines (91 loc) · 3.36 KB
/
validation.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
class Validation:
"""
Methods: set_params, check_desc, check_mode, check_group, check_payment_mode, check_all_input, check_routes
Attributes: config, b1_desc, b2_desc, mode, group, payment_mode
"""
def __init__(self, config):
self.config = config
self.b1_desc = None
self.b2_desc = None
self.mode = None
self.group = None
self.payment_mode = None
def set_params(self, entry_dict):
"""
:param entry_dict: input is a dictionaries containing required inputs
:return: sets the values of the attributes based on the input
"""
self.b1_desc = entry_dict.get("start", None)
self.b2_desc = entry_dict.get("end", None)
self.mode = entry_dict.get("mode", None)
self.group = entry_dict.get("group", None)
self.payment_mode = entry_dict.get("payment_mode", None)
def __check_desc(self):
"""
:return: checks if either the description of bus stop 1 or 2 is a NoneType
"""
if self.b1_desc or self.b2_desc is None:
return "Please choose another bus stop."
return None
def __check_mode(self):
"""
:return: checks if mode is a NoneType and whether mode satisfies the presets
"""
if self.mode is None:
return "Please indicate whether you wish to sort the result by distance or fare."
else:
if self.mode.lower() not in self.config.MODE:
return "Please enter a valid mode to sort by."
return None
def __check_group(self):
"""
:return: checks if group is a NoneType and whether group satisfies the presets
"""
if self.group is None:
return "Please enter the payment group which you belong to."
else:
if self.group not in self.config.GROUP:
return "PLease enter a valid payment group."
return None
def __check_payment_mode(self):
"""
:return: checks if payment_mode is a NoneType and whether payment_mode satisfies the presets
"""
if self.payment_mode is None:
return "Please enter your mode of payment."
else:
if self.payment_mode not in self.config.PAYMENT_MODE:
return "Please enter a valid mode of payment."
return None
def check_all_input(self):
"""
:return: runs check on description, mode, group and payment_mode and returns the result
"""
temp = [
self.__check_desc(),
self.__check_mode(),
self.__check_group(),
self.__check_payment_mode(),
None
]
if temp != [None]*5:
passed = True
else:
passed = False
return temp, passed
@staticmethod
def check_routes(bus_routes, b1, b2, err_msg):
"""
:param bus_routes: a string indicating the bus route
:param b1: description of bus stop 1
:param b2: description of bus stop 2
:param err_msg: existing list of error messages
:return: returns an error message and the test result
"""
passed = True
if len(bus_routes) == 0:
err = f"No direct bus between {b1} and {b2}."
passed = False
err_msg[4] = err
return err_msg, passed
return err_msg, passed