12
12
DOWNLOAD_META_HISTORIC_SINGLE_VAR = (
13
13
"climateset.download.downloader.Downloader.download_meta_historic_biomassburning_single_var"
14
14
)
15
- DOWNLOAD_FROM_MODEL_SINGLE_VAR = "climateset.download.downloader.Downloader.download_from_model_single_var"
15
+ DOWNLOAD_MODEL_SINGLE_VAR = "climateset.download.downloader.Downloader.download_from_model_single_var"
16
16
SUBPROCESS_RUN = "subprocess.run"
17
17
18
18
EXPECTED_MINIMAL_RAW_INPUT_CALLS = [
43
43
44
44
@pytest .fixture ()
45
45
def mock_raw_input_single_var ():
46
- with patch (DOWNLOAD_RAW_INPUT_SINGLE_VAR ) as mock_raw_input :
47
- yield mock_raw_input
46
+ with patch (DOWNLOAD_RAW_INPUT_SINGLE_VAR ) as mock_function :
47
+ yield mock_function
48
48
49
49
50
50
@pytest .fixture ()
51
51
def mock_meta_historic_single_var ():
52
- with patch (DOWNLOAD_META_HISTORIC_SINGLE_VAR ) as mock_meta_input :
53
- yield mock_meta_input
52
+ with patch (DOWNLOAD_META_HISTORIC_SINGLE_VAR ) as mock_function :
53
+ yield mock_function
54
54
55
55
56
56
@pytest .fixture ()
57
57
def mock_model_single_var ():
58
- with patch (DOWNLOAD_FROM_MODEL_SINGLE_VAR ) as mock_model :
59
- yield mock_model
58
+ with patch (DOWNLOAD_MODEL_SINGLE_VAR ) as mock_function :
59
+ yield mock_function
60
60
61
61
62
62
@pytest .fixture ()
63
63
def mock_subprocess_run ():
64
- with patch (SUBPROCESS_RUN ) as mock_subprocess_run :
65
- yield mock_subprocess_run
64
+ with patch (SUBPROCESS_RUN ) as mock_function :
65
+ yield mock_function
66
66
67
67
68
68
@pytest .fixture
@@ -114,44 +114,43 @@ def test_downloader_model_params(simple_downloader_object):
114
114
115
115
116
116
def test_download_raw_input (simple_downloader_object , mock_raw_input_single_var , mock_meta_historic_single_var ):
117
- mock_raw_input = mock_raw_input_single_var
118
- mock_meta_input = mock_meta_historic_single_var
119
117
simple_downloader_object .download_raw_input ()
120
- assert mock_raw_input .call_args_list == EXPECTED_MINIMAL_RAW_INPUT_CALLS
121
- assert mock_meta_input .call_args_list == EXPECTED_MINIMAL_META_HISTORIC_CALLS
118
+ assert mock_raw_input_single_var .call_args_list == EXPECTED_MINIMAL_RAW_INPUT_CALLS
119
+ assert mock_raw_input_single_var .call_count == 8
120
+ assert mock_meta_historic_single_var .call_args_list == EXPECTED_MINIMAL_META_HISTORIC_CALLS
121
+ assert mock_meta_historic_single_var .call_count == 6
122
122
123
123
124
124
def test_download_from_model (simple_downloader_object , mock_model_single_var ):
125
- mock_model = mock_model_single_var
126
125
simple_downloader_object .download_from_model ()
127
- assert mock_model .call_args_list == EXPECTED_MINIMAL_MODEL_CALLS
126
+ assert mock_model_single_var .call_args_list == EXPECTED_MINIMAL_MODEL_CALLS
127
+ assert mock_model_single_var .call_count == 2
128
128
129
129
130
130
def test_download_from_config_file (
131
131
simple_downloader_object , mock_raw_input_single_var , mock_meta_historic_single_var , mock_model_single_var
132
132
):
133
- mock_raw_input = mock_raw_input_single_var
134
- mock_meta_input = mock_meta_historic_single_var
135
- mock_model = mock_model_single_var
136
-
137
133
download_from_config_file (config = MINIMAL_DATASET_CONFIG_PATH )
138
134
139
- assert mock_raw_input .call_args_list == EXPECTED_MINIMAL_RAW_INPUT_CALLS
140
- assert mock_meta_input .call_args_list == EXPECTED_MINIMAL_META_HISTORIC_CALLS
141
- assert mock_model .call_args_list == EXPECTED_MINIMAL_MODEL_CALLS
135
+ assert mock_raw_input_single_var .call_args_list == EXPECTED_MINIMAL_RAW_INPUT_CALLS
136
+ assert mock_raw_input_single_var .call_count == 8
137
+ assert mock_meta_historic_single_var .call_args_list == EXPECTED_MINIMAL_META_HISTORIC_CALLS
138
+ assert mock_meta_historic_single_var .call_count == 6
139
+ assert mock_model_single_var .call_args_list == EXPECTED_MINIMAL_MODEL_CALLS
140
+ assert mock_model_single_var .call_count == 2
142
141
143
142
144
- def _assert_content_is_in_wget_script (download_subprocess , f ):
143
+ def _assert_content_is_in_wget_script (mock_call , string_content ):
145
144
# This seems very obscure, so here's what's happening,
146
145
# With the provided inputs, there should be only 1 call.
147
146
# We then access the call's arguments. We are interested in
148
147
# the content of the wget script that is generated, and we
149
148
# want to make sure that for there inputs, we get the same files
150
- call_list = download_subprocess .call_args_list
149
+ call_list = mock_call .call_args_list
151
150
first_and_only_call = call_list [0 ]
152
151
call_arguments = first_and_only_call .args [0 ]
153
152
wget_script_content = call_arguments [2 ]
154
- assert f in wget_script_content
153
+ assert string_content in wget_script_content
155
154
156
155
157
156
def test_download_raw_input_single_var (simple_downloader_object , mock_subprocess_run ):
@@ -173,21 +172,19 @@ def test_download_raw_input_single_var(simple_downloader_object, mock_subprocess
173
172
174
173
175
174
def test_download_meta_historic_biomassburning_single_var (simple_downloader_object , mock_subprocess_run ):
176
- download_subprocess = mock_subprocess_run
177
175
simple_downloader_object .download_meta_historic_biomassburning_single_var (
178
176
variable = "CH4_percentage_AGRI" , institution_id = "VUA"
179
177
)
180
178
181
179
expected_files = [
182
180
"CH4-percentage-AGRI-em-biomassburning_input4MIPs_emissions_CMIP_VUA-CMIP-BB4CMIP6-1-2_gn_175001-201512.nc"
183
181
]
184
- download_subprocess .assert_called_once ()
182
+ mock_subprocess_run .assert_called_once ()
185
183
for f in expected_files :
186
- _assert_content_is_in_wget_script (download_subprocess , f )
184
+ _assert_content_is_in_wget_script (mock_call = mock_subprocess_run , string_content = f )
187
185
188
186
189
187
def test_download_from_model_single_var (simple_downloader_object , mock_subprocess_run ):
190
- download_subprocess = mock_subprocess_run
191
188
simple_downloader_object .download_from_model_single_var (variable = "tas" , experiment = "ssp126" )
192
189
193
190
expected_files = [
@@ -201,6 +198,6 @@ def test_download_from_model_single_var(simple_downloader_object, mock_subproces
201
198
"tas_Amon_NorESM2-LM_ssp126_r1i1p1f1_gn_208101-209012.nc" ,
202
199
"tas_Amon_NorESM2-LM_ssp126_r1i1p1f1_gn_209101-210012.nc" ,
203
200
]
204
- download_subprocess .assert_called_once ()
201
+ mock_subprocess_run .assert_called_once ()
205
202
for f in expected_files :
206
- _assert_content_is_in_wget_script (download_subprocess , f )
203
+ _assert_content_is_in_wget_script (mock_call = mock_subprocess_run , string_content = f )
0 commit comments