10
10
from pyrcs .line_data import ELRMileages
11
11
12
12
13
+ def test__parse_mileages ():
14
+ from pyrcs .line_data .elr_mileage import _parse_mileages
15
+
16
+ test_data = [['8.69 km' , '10.12 km' ], ['8.69' , '10.12' ]]
17
+
18
+ for i , dat in enumerate (test_data ):
19
+ test_mileages = pd .Series (data = dat , index = [0 , 1 ], name = 'Mileage' )
20
+ parsed_mileage = _parse_mileages (test_mileages )
21
+ assert parsed_mileage .columns .tolist () == ['Mileage' , 'Mileage_Note' , 'Miles_Chains' ]
22
+ if i == 0 :
23
+ assert parsed_mileage ['Mileage_Note' ].str .contains ('km' ).all ()
24
+ else :
25
+ assert parsed_mileage ['Mileage_Note' ].tolist () == ['' , '' ]
26
+
27
+
13
28
class TestELRMileages :
14
29
15
30
@pytest .fixture (scope = 'class' )
16
31
def em (self ):
17
32
return ELRMileages ()
18
33
19
- def test_collect_elr (self , em , capfd ):
34
+ def test_collect_elr (self , em , capfd , monkeypatch ):
20
35
test_initials = ['a' , 'q' ]
21
36
for initial in test_initials :
22
37
elr_codes = em .collect_elr (initial = initial , confirmation_required = False , verbose = True )
@@ -27,11 +42,27 @@ def test_collect_elr(self, em, capfd):
27
42
assert f'beginning with "{ test_initial } "' in out and "Done." in out
28
43
29
44
assert isinstance (elr_codes , dict )
30
- assert list (elr_codes .keys ()) == [test_initial , 'Last updated date' ]
45
+ assert list (elr_codes .keys ()) == [test_initial , em . KEY_TO_LAST_UPDATED_DATE ]
31
46
32
47
elrs_codes_dat = elr_codes [test_initial ]
33
48
assert isinstance (elrs_codes_dat , pd .DataFrame )
34
49
50
+ test_initial = 'B'
51
+
52
+ monkeypatch .setattr ('builtins.input' , lambda _ : "No" )
53
+ elr_codes = em .collect_elr (initial = 'b' , verbose = True )
54
+ assert elr_codes is None
55
+
56
+ monkeypatch .setattr ('builtins.input' , lambda _ : "Yes" )
57
+ elr_codes = em .collect_elr (initial = test_initial , verbose = True )
58
+ out , _ = capfd .readouterr ()
59
+ assert "Collecting the data" in out and "Done." in out
60
+
61
+ assert isinstance (elr_codes , dict )
62
+ assert list (elr_codes .keys ()) == [test_initial , em .KEY_TO_LAST_UPDATED_DATE ]
63
+ elrs_codes_dat = elr_codes [test_initial ]
64
+ assert isinstance (elrs_codes_dat , pd .DataFrame )
65
+
35
66
@pytest .mark .parametrize ('update' , [False , True ])
36
67
def test_fetch_elr (self , em , update ):
37
68
elrs_codes = em .fetch_elr (update = update , verbose = True )
@@ -42,24 +73,45 @@ def test_fetch_elr(self, em, update):
42
73
elrs_codes_dat = elrs_codes [em .KEY ]
43
74
assert isinstance (elrs_codes_dat , pd .DataFrame )
44
75
45
- def test_collect_mileage_file (self , em ):
46
- test_elrs = ['CJD' , ' GAM' , 'SLD' , 'ELR' ]
76
+ def test_collect_mileage_file (self , em , monkeypatch , capfd ):
77
+ test_elrs = ['GAM' , 'SLD' , 'ELR' ]
47
78
for test_elr in test_elrs :
48
79
test_mileage_file = em .collect_mileage_file (
49
80
elr = test_elr , confirmation_required = False , verbose = True )
50
-
81
+ out , _ = capfd .readouterr ()
82
+ assert f'Collecting the mileage file of "{ test_elr } " ... Done.' in out
51
83
assert isinstance (test_mileage_file , dict )
52
84
assert list (test_mileage_file .keys ()) == ['ELR' , 'Line' , 'Sub-Line' , 'Mileage' , 'Notes' ]
53
85
assert isinstance (test_mileage_file ['Mileage' ], pd .DataFrame )
54
86
87
+ test_elr = 'CJD'
88
+
89
+ monkeypatch .setattr ('builtins.input' , lambda _ : "No" )
90
+ test_mileage_file = em .collect_mileage_file (elr = test_elr , verbose = True )
91
+ assert test_mileage_file is None
92
+
93
+ monkeypatch .setattr ('builtins.input' , lambda _ : "Yes" )
94
+ test_mileage_file = em .collect_mileage_file (elr = 'CJD' , verbose = True )
95
+ out , _ = capfd .readouterr ()
96
+ assert 'Collecting the mileage file ... Done.' in out and "Done." in out
97
+ assert isinstance (test_mileage_file , dict )
98
+ assert list (test_mileage_file .keys ()) == ['ELR' , 'Line' , 'Sub-Line' , 'Mileage' , 'Notes' ]
99
+ assert isinstance (test_mileage_file ['Mileage' ], pd .DataFrame )
100
+
55
101
@pytest .mark .parametrize ('update' , [False , True ])
56
- def test_fetch_mileage_file (self , em , update ):
102
+ def test_fetch_mileage_file (self , em , update , tmp_path , capfd ):
57
103
test_elrs = ['AAL' , 'MLA' ]
58
104
for test_elr in test_elrs :
59
105
test_mileage_file = em .fetch_mileage_file (elr = test_elr , update = update , verbose = True )
60
106
assert isinstance (test_mileage_file , dict )
61
107
assert isinstance (test_mileage_file ['Mileage' ], (pd .DataFrame , dict ))
62
108
109
+ test_mileage_file = em .fetch_mileage_file (elr = 'AAL' , verbose = 2 , dump_dir = tmp_path )
110
+ out , _ = capfd .readouterr ()
111
+ assert "Saving" in out and "Done." in out
112
+ assert isinstance (test_mileage_file , dict )
113
+ assert isinstance (test_mileage_file ['Mileage' ], (pd .DataFrame , dict ))
114
+
63
115
def test_search_conn (self , em ):
64
116
elr_1 , elr_2 = 'AAM' , 'ANZ'
65
117
@@ -78,6 +130,9 @@ def test_get_conn_mileages(self, em):
78
130
conn = em .get_conn_mileages (start_elr = 'MAC3' , end_elr = 'DBP1' )
79
131
assert conn == ('' , '' , '' , '' , '' )
80
132
133
+ conn = em .get_conn_mileages (start_elr = 'MAC4' , end_elr = 'DBP4' )
134
+ assert conn == ('' , '' , '' , '' , '' )
135
+
81
136
82
137
if __name__ == '__main__' :
83
138
pytest .main ()
0 commit comments