1
1
import pandas as pd
2
+ import numpy as np
2
3
import xarray as xr
3
4
import pytest
4
5
from unittest .mock import patch
@@ -19,7 +20,7 @@ def mock_enphase_data(*args, **kwargs):
19
20
(PVSite (latitude = 40.7128 , longitude = - 74.0059 , capacity_kwp = 8.5 , inverter_type = 'enphase' ), mock_enphase_data ()),
20
21
])
21
22
@patch ('quartz_solar_forecast.inverters.enphase.get_enphase_data' , side_effect = mock_enphase_data )
22
- def test_make_pv_data (mock_get_enphase , site , expected_data , ts = pd .Timestamp ('2023-06-14 12:15:00' )):
23
+ def test_make_pv_data_enphase (mock_get_enphase , site , expected_data , ts = pd .Timestamp ('2023-06-14 12:15:00' )):
23
24
from quartz_solar_forecast .data import make_pv_data
24
25
result = make_pv_data (site , ts )
25
26
expected = expected_data [expected_data ['timestamp' ] <= ts ]
@@ -38,30 +39,25 @@ def test_make_pv_data(mock_get_enphase, site, expected_data, ts=pd.Timestamp('20
38
39
).to_dataset (name = 'generation_kw' )
39
40
40
41
assert result .equals (expected_xr )
41
-
42
+
42
43
@pytest .mark .parametrize ("site, expected_data" , [
43
- (PVSite (latitude = 40.7128 , longitude = - 74.0059 , capacity_kwp = 8.5 , inverter_type = 'enphase ' ), pd . DataFrame ({ 'timestamp' : [], 'power_kw' : []} )),
44
+ (PVSite (latitude = 40.7128 , longitude = - 74.0059 , capacity_kwp = 8.5 , inverter_type = 'unknown ' ), np . array ([[ np . nan ]] )),
44
45
])
45
- @patch ('quartz_solar_forecast.inverters.enphase.get_enphase_data' , return_value = pd .DataFrame ({'timestamp' : [], 'power_kw' : []}))
46
- def test_make_pv_data_empty_data (mock_get_enphase , site , expected_data , ts = pd .Timestamp ('2023-06-14 12:15:00' )):
46
+ def test_make_pv_data_no_live (site , expected_data , ts = pd .Timestamp ('2023-06-14 12:15:00' )):
47
47
from quartz_solar_forecast .data import make_pv_data
48
48
result = make_pv_data (site , ts )
49
- if not expected_data .empty :
50
- expected = expected_data [expected_data ['timestamp' ] <= ts ]
51
- else :
52
- expected = expected_data
53
49
expected_xr = xr .DataArray (
54
- data = expected [ 'power_kw' ]. values . reshape ( 1 , - 1 ) ,
50
+ data = expected_data ,
55
51
dims = ['pv_id' , 'timestamp' ],
56
52
coords = {
57
53
'longitude' : (['pv_id' ], [site .longitude ]),
58
54
'latitude' : (['pv_id' ], [site .latitude ]),
59
- 'timestamp' : (['timestamp' ], expected [ 'timestamp' ]. values . astype ( 'datetime64[ns]' ) ),
55
+ 'timestamp' : (['timestamp' ], [ ts ] ),
60
56
'pv_id' : [1 ],
61
57
'kwp' : (['pv_id' ], [site .capacity_kwp ]),
62
58
'tilt' : (["pv_id" ], [site .tilt ]),
63
59
'orientation' : (["pv_id" ], [site .orientation ]),
64
60
}
65
61
).to_dataset (name = 'generation_kw' )
66
62
67
- assert result .equals (expected_xr )
63
+ assert result .equals (expected_xr )
0 commit comments