@@ -632,8 +632,9 @@ def test_daily_observation_validation_ghi(mocker, make_observation,
632
632
DESCRIPTION_MASK_MAPPING ['UNEVEN FREQUENCY' ] |
633
633
LATEST_VERSION_FLAG
634
634
]
635
- assert post_mock .called_once
636
- assert_frame_equal (post_mock .call_args [0 ][1 ], out )
635
+ assert post_mock .called
636
+ posted_df = pd .concat ([cal [0 ][1 ] for cal in post_mock .call_args_list ])
637
+ assert_frame_equal (posted_df , out )
637
638
638
639
639
640
def test_daily_observation_validation_ghi_zeros (mocker , make_observation ,
@@ -677,8 +678,9 @@ def test_daily_observation_validation_ghi_zeros(mocker, make_observation,
677
678
base | DESCRIPTION_MASK_MAPPING ['NIGHTTIME' ] |
678
679
DESCRIPTION_MASK_MAPPING ['UNEVEN FREQUENCY' ]
679
680
]
680
- assert post_mock .called_once
681
- assert_frame_equal (post_mock .call_args [0 ][1 ], out )
681
+ assert post_mock .called
682
+ posted_df = pd .concat ([cal [0 ][1 ] for cal in post_mock .call_args_list ])
683
+ assert_frame_equal (posted_df , out )
682
684
683
685
684
686
def test_validate_daily_dc_power (mocker , make_observation , daily_index ):
@@ -767,8 +769,9 @@ def test_daily_observation_validation_dc_power(mocker, make_observation,
767
769
DESCRIPTION_MASK_MAPPING ['NIGHTTIME' ] |
768
770
LATEST_VERSION_FLAG
769
771
]
770
- assert post_mock .called_once
771
- assert_frame_equal (post_mock .call_args [0 ][1 ], out )
772
+ assert post_mock .called
773
+ posted_df = pd .concat ([cal [0 ][1 ] for cal in post_mock .call_args_list ])
774
+ assert_frame_equal (posted_df , out )
772
775
773
776
774
777
def test_validate_daily_ac_power (mocker , make_observation , daily_index ):
@@ -863,8 +866,9 @@ def test_daily_observation_validation_ac_power(mocker, make_observation,
863
866
DESCRIPTION_MASK_MAPPING ['NIGHTTIME' ] |
864
867
LATEST_VERSION_FLAG
865
868
]
866
- assert post_mock .called_once
867
- assert_frame_equal (post_mock .call_args [0 ][1 ], out )
869
+ assert post_mock .called
870
+ posted_df = pd .concat ([cal [0 ][1 ] for cal in post_mock .call_args_list ])
871
+ assert_frame_equal (posted_df , out )
868
872
869
873
870
874
@pytest .mark .parametrize ('var' , ['air_temperature' , 'wind_speed' , 'dni' , 'dhi' ,
@@ -885,13 +889,14 @@ def test_daily_observation_validation_other(var, mocker, make_observation,
885
889
return_value = data )
886
890
post_mock = mocker .patch (
887
891
'solarforecastarbiter.io.api.APISession.post_observation_values' )
888
- validate_mock = mocker .MagicMock ()
892
+ validated = pd .Series (2 , index = daily_index )
893
+ validate_mock = mocker .MagicMock (return_value = validated )
889
894
mocker .patch .dict (
890
895
'solarforecastarbiter.validation.tasks.IMMEDIATE_VALIDATION_FUNCS' ,
891
896
{var : validate_mock })
892
897
tasks .daily_single_observation_validation (
893
898
'' , obs .observation_id , data .index [0 ], data .index [- 1 ])
894
- assert post_mock .called_once
899
+ assert post_mock .called
895
900
assert validate_mock .called
896
901
897
902
@@ -914,13 +919,14 @@ def test_daily_observation_validation_many(mocker, make_observation,
914
919
return_value = data )
915
920
post_mock = mocker .patch (
916
921
'solarforecastarbiter.io.api.APISession.post_observation_values' )
917
- validate_mock = mocker .MagicMock ()
922
+ validated = pd .Series (2 , index = daily_index )
923
+ validate_mock = mocker .MagicMock (return_value = validated )
918
924
mocker .patch .dict (
919
925
'solarforecastarbiter.validation.tasks.IMMEDIATE_VALIDATION_FUNCS' ,
920
926
{'dhi' : validate_mock , 'dni' : validate_mock })
921
927
tasks .daily_observation_validation (
922
928
'' , data .index [0 ], data .index [- 1 ])
923
- assert post_mock .called_once
929
+ assert post_mock .called
924
930
assert validate_mock .call_count == 2
925
931
926
932
@@ -967,3 +973,51 @@ def test_daily_observation_validation_not_enough(mocker, make_observation):
967
973
'' , data .index [0 ], data .index [- 1 ])
968
974
assert out is None
969
975
assert log .called
976
+
977
+
978
+ def test__group_continuous_week_post (mocker , make_observation ):
979
+ split_dfs = [
980
+ pd .DataFrame ([(0 , LATEST_VERSION_FLAG )],
981
+ columns = ['value' , 'quality_flag' ],
982
+ index = pd .date_range (
983
+ start = '2020-05-03T00:00' ,
984
+ end = '2020-05-03T23:59' ,
985
+ tz = 'UTC' ,
986
+ freq = '1h' )),
987
+ # new week split
988
+ pd .DataFrame ([(0 , LATEST_VERSION_FLAG )],
989
+ columns = ['value' , 'quality_flag' ],
990
+ index = pd .date_range (
991
+ start = '2020-05-04T00:00' ,
992
+ end = '2020-05-04T11:59' ,
993
+ tz = 'UTC' ,
994
+ freq = '1h' )),
995
+ # missing 12
996
+ pd .DataFrame (
997
+ [(0 , LATEST_VERSION_FLAG | DESCRIPTION_MASK_MAPPING ['UNEVEN FREQUENCY' ])] + # NOQA
998
+ [(1 , LATEST_VERSION_FLAG )] * 7 ,
999
+ columns = ['value' , 'quality_flag' ],
1000
+ index = pd .date_range (
1001
+ start = '2020-05-04T13:00' ,
1002
+ end = '2020-05-04T20:00' ,
1003
+ tz = 'UTC' ,
1004
+ freq = '1h' )),
1005
+ # missing a week+
1006
+ pd .DataFrame (
1007
+ [(9 , LATEST_VERSION_FLAG | DESCRIPTION_MASK_MAPPING ['UNEVEN FREQUENCY' ])] + # NOQA
1008
+ [(3 , LATEST_VERSION_FLAG )] * 7 ,
1009
+ columns = ['value' , 'quality_flag' ],
1010
+ index = pd .date_range (
1011
+ start = '2020-05-13T09:00' ,
1012
+ end = '2020-05-13T16:59' ,
1013
+ tz = 'UTC' ,
1014
+ freq = '1h' )),
1015
+ ]
1016
+ ov = pd .concat (split_dfs , axis = 0 )
1017
+ obs = make_observation ('ghi' )
1018
+ session = mocker .MagicMock ()
1019
+ tasks ._group_continuous_week_post (session , obs , ov )
1020
+ call_list = session .post_observation_values .call_args_list
1021
+ assert len (call_list ) == 4
1022
+ for i , cal in enumerate (call_list ):
1023
+ assert_frame_equal (split_dfs [i ], cal [0 ][1 ])
0 commit comments