1414from click .testing import CliRunner
1515
1616from lean .commands import lean
17+ from lean .components .cloud .data_downloader import parse_timedelta
1718from lean .container import container
19+ from datetime import timedelta
20+ import pytest
1821
1922
2023def test_config_set_updates_the_value_of_the_option () -> None :
@@ -25,6 +28,48 @@ def test_config_set_updates_the_value_of_the_option() -> None:
2528 assert container .cli_config_manager .user_id .get_value () == "12345"
2629
2730
31+ @pytest .mark .parametrize ("raw_frequency, expected" , [("_" , None ), ("=" , None ), ("_" , None ),
32+ ("1.0:0:0" , timedelta (days = 1 )),
33+ ("0.1:0:0" , timedelta (hours = 1 )),
34+ ("0.0:1:0" , timedelta (minutes = 1 )),
35+ ("0.0:0:1" , timedelta (seconds = 1 )),
36+ ("1:0:0" , timedelta (hours = 1 )),
37+ ("0:1:0" , timedelta (minutes = 1 )),
38+ ("0:0:1" , timedelta (seconds = 1 )),
39+ ("01.00:00:00" , timedelta (days = 1 )),
40+ ("00.01:00:00" , timedelta (hours = 1 )),
41+ ("00.00:01:00" , timedelta (minutes = 1 )),
42+ ("00.00:00:01" , timedelta (seconds = 1 )),
43+ ("01:00:00" , timedelta (hours = 1 )),
44+ ("00:01:00" , timedelta (minutes = 1 )),
45+ ("00:00:01" , timedelta (seconds = 1 )),
46+ ("1.00:00:00" , timedelta (days = 1 )),
47+ ("00.1:00:00" , timedelta (hours = 1 )),
48+ ("00.00:1:00" , timedelta (minutes = 1 )),
49+ ("00.00:00:1" , timedelta (seconds = 1 )),
50+ ("1:00:00" , timedelta (hours = 1 )),
51+ ("00:1:00" , timedelta (minutes = 1 )),
52+ ("00:00:1" , timedelta (seconds = 1 )),
53+ ("00.1:00:1" , timedelta (hours = 1 , seconds = 1 )),
54+ ("00.1:1:1" , timedelta (hours = 1 , minutes = 1 , seconds = 1 )),
55+ ("1:00:1" , timedelta (hours = 1 , seconds = 1 )),
56+ ("1:1:1" , timedelta (hours = 1 , minutes = 1 , seconds = 1 )),
57+ ("1.1:1:1" , timedelta (days = 1 , hours = 1 , minutes = 1 , seconds = 1 )),
58+ ("10.20:30:40" , timedelta (days = 10 , hours = 20 , minutes = 30 , seconds = 40 )),
59+ ("30.23:59:59" , timedelta (days = 30 , hours = 23 , minutes = 59 , seconds = 59 )),
60+ ("60.23:59:59" , timedelta (days = 60 , hours = 23 , minutes = 59 , seconds = 59 )),
61+ ("20:30:40" , timedelta (hours = 20 , minutes = 30 , seconds = 40 )),
62+ ("00:59:59" , timedelta (minutes = 59 , seconds = 59 )),
63+ ("00:00:59" , timedelta (seconds = 59 ))])
64+ def test_set_database_update_frequency_works_with_different_timespans (raw_frequency : str , expected : timedelta ) -> None :
65+ result = CliRunner ().invoke (lean , ["config" , "set" , "database-update-frequency" , raw_frequency ])
66+
67+ assert result .exit_code == 0
68+
69+ frequency = parse_timedelta (raw_frequency )
70+ assert frequency == expected
71+
72+
2873def test_config_set_aborts_when_no_option_with_given_key_exists () -> None :
2974 result = CliRunner ().invoke (lean , ["config" , "set" , "this-option-does-not-exist" , "value" ])
3075
0 commit comments