20
20
from unittest .mock import Mock , patch
21
21
22
22
import arrow
23
+ import nemo_nowcast
23
24
import pytest
24
25
25
26
from nowcast .workers import download_wwatch3_results
@@ -31,56 +32,44 @@ def config(base_config):
31
32
return base_config
32
33
33
34
34
- @patch ("nowcast.workers.download_wwatch3_results.NowcastWorker" , spec = True )
35
+ @pytest .fixture
36
+ def mock_worker (mock_nowcast_worker , monkeypatch ):
37
+ monkeypatch .setattr (download_wwatch3_results , "NowcastWorker" , mock_nowcast_worker )
38
+
39
+
35
40
class TestMain :
36
41
"""Unit tests for main() function."""
37
42
38
- def test_instantiate_worker (self , m_worker ):
39
- m_worker ().cli = Mock (name = "cli" )
40
- download_wwatch3_results .main ()
41
- args , kwargs = m_worker .call_args
42
- assert args == ("download_wwatch3_results" ,)
43
- assert list (kwargs .keys ()) == ["description" ]
44
-
45
- def test_init_cli (self , m_worker ):
46
- m_worker ().cli = Mock (name = "cli" )
47
- download_wwatch3_results .main ()
48
- m_worker ().init_cli .assert_called_once_with ()
49
-
50
- def test_add_host_name_arg (self , m_worker ):
51
- m_worker ().cli = Mock (name = "cli" )
52
- download_wwatch3_results .main ()
53
- args , kwargs = m_worker ().cli .add_argument .call_args_list [0 ]
54
- assert args == ("host_name" ,)
55
- assert "help" in kwargs
56
-
57
- def test_add_run_type_arg (self , m_worker ):
58
- m_worker ().cli = Mock (name = "cli" )
59
- download_wwatch3_results .main ()
60
- args , kwargs = m_worker ().cli .add_argument .call_args_list [1 ]
61
- assert args == ("run_type" ,)
62
- expected = {"nowcast" , "forecast" , "forecast2" }
63
- assert kwargs ["choices" ] == expected
64
- assert "help" in kwargs
65
-
66
- def test_add_run_date_arg (self , m_worker ):
67
- m_worker ().cli = Mock (name = "cli" )
68
- download_wwatch3_results .main ()
69
- args , kwargs = m_worker ().cli .add_date_option .call_args_list [0 ]
70
- assert args == ("--run-date" ,)
71
- assert kwargs ["default" ] == arrow .now ().floor ("day" )
72
- assert "help" in kwargs
73
-
74
- def test_run_worker (self , m_worker ):
75
- m_worker ().cli = Mock (name = "cli" )
76
- download_wwatch3_results .main ()
77
- args , kwargs = m_worker ().run .call_args
78
- assert args == (
79
- download_wwatch3_results .download_wwatch3_results ,
80
- download_wwatch3_results .success ,
81
- download_wwatch3_results .failure ,
43
+ def test_instantiate_worker (self , mock_worker ):
44
+ worker = download_wwatch3_results .main ()
45
+ assert worker .name == "download_wwatch3_results"
46
+ assert worker .description .startswith (
47
+ "SalishSeaCast system worker that downloads the results files\n from a WaveWatch3 run"
82
48
)
83
49
50
+ def test_add_host_name_arg (self , mock_worker ):
51
+ worker = download_wwatch3_results .main ()
52
+ assert worker .cli .parser ._actions [3 ].dest == "host_name"
53
+ assert worker .cli .parser ._actions [3 ].help
54
+
55
+ def test_add_run_type_arg (self , mock_worker ):
56
+ worker = download_wwatch3_results .main ()
57
+ assert worker .cli .parser ._actions [4 ].dest == "run_type"
58
+ assert worker .cli .parser ._actions [4 ].choices == {
59
+ "nowcast" ,
60
+ "forecast" ,
61
+ "forecast2" ,
62
+ }
63
+ assert worker .cli .parser ._actions [4 ].help
64
+
65
+ def test_add_run_date_option (self , mock_worker ):
66
+ worker = download_wwatch3_results .main ()
67
+ assert worker .cli .parser ._actions [5 ].dest == "run_date"
68
+ expected = nemo_nowcast .cli .CommandLineInterface .arrow_date
69
+ assert worker .cli .parser ._actions [5 ].type == expected
70
+ assert worker .cli .parser ._actions [5 ].default == arrow .now ().floor ("day" )
71
+ assert worker .cli .parser ._actions [5 ].help
72
+
84
73
85
74
@pytest .mark .parametrize (
86
75
"run_type, host_name" ,
0 commit comments