15
15
16
16
"""
17
17
import os
18
+ import zipfile
18
19
from pathlib import Path
19
20
from unittest .mock import patch
20
21
45
46
JOB_DATA_QUERIER_ECSV_FILE_NAME = get_pkg_data_filename (os .path .join ("data" , '1712337806100O-result.ecsv' ),
46
47
package = package )
47
48
49
+ DL_PRODUCTS_VOT = get_pkg_data_filename (
50
+ os .path .join ("data" , 'gaia_dr3_source_id_5937083312263887616_dl_products_vot.zip' ),
51
+ package = package )
52
+
53
+ DL_PRODUCTS_ECSV = get_pkg_data_filename (
54
+ os .path .join ("data" , 'gaia_dr3_source_id_5937083312263887616_dl_products_ecsv.zip' ),
55
+ package = package )
56
+
57
+ DL_PRODUCTS_CSV = get_pkg_data_filename (
58
+ os .path .join ("data" , 'gaia_dr3_source_id_5937083312263887616_dl_products_csv.zip' ),
59
+ package = package )
60
+
61
+ DL_PRODUCTS_FITS = get_pkg_data_filename (
62
+ os .path .join ("data" , 'gaia_dr3_source_id_5937083312263887616_dl_products_fits.zip' ),
63
+ package = package )
64
+
48
65
JOB_DATA = Path (JOB_DATA_FILE_NAME ).read_text ()
49
66
JOB_DATA_NEW = Path (JOB_DATA_FILE_NAME_NEW ).read_text ()
50
67
@@ -152,6 +169,23 @@ def mock_querier():
152
169
return GaiaClass (tap_plus_conn_handler = conn_handler , datalink_handler = tapplus , show_server_messages = False )
153
170
154
171
172
+ @pytest .fixture (scope = "module" )
173
+ def mock_datalink_querier ():
174
+ conn_handler = DummyConnHandler ()
175
+ tapplus = TapPlus (url = "http://test:1111/tap" , connhandler = conn_handler )
176
+
177
+ launch_response = DummyResponse (200 )
178
+ launch_response .set_data (method = "POST" , body = DL_PRODUCTS_VOT )
179
+ # The query contains decimals: default response is more robust.
180
+ conn_handler .set_default_response (launch_response )
181
+ conn_handler .set_response (
182
+ '?DATA_STRUCTURE=INDIVIDUAL&FORMAT=votable&ID=5937083312263887616&RELEASE=Gaia+DR3&RETRIEVAL_TYPE=ALL'
183
+ '&USE_ZIP_ALWAYS=true&VALID_DATA=false' ,
184
+ launch_response )
185
+
186
+ return GaiaClass (tap_plus_conn_handler = conn_handler , datalink_handler = tapplus , show_server_messages = False )
187
+
188
+
155
189
@pytest .fixture (scope = "module" )
156
190
def mock_querier_ecsv ():
157
191
conn_handler = DummyConnHandler ()
@@ -696,29 +730,100 @@ def test_cone_search_and_changing_MAIN_GAIA_TABLE(mock_querier_async):
696
730
assert "name_from_class" in job .parameters ["query" ]
697
731
698
732
699
- def test_load_data (monkeypatch , tmp_path ):
733
+ def test_load_data (mock_datalink_querier ):
734
+ mock_datalink_querier .load_data (ids = [5937083312263887616 ], data_release = 'Gaia DR3' , data_structure = 'INDIVIDUAL' ,
735
+ retrieval_type = "ALL" ,
736
+ linking_parameter = 'SOURCE_ID' , valid_data = False , band = None ,
737
+ avoid_datatype_check = False ,
738
+ format = "votable" , dump_to_file = True , overwrite_output_file = True , verbose = False )
739
+
740
+ assert os .path .exists ('datalink_output.zip' )
741
+
742
+ extracted_files = []
743
+
744
+ with zipfile .ZipFile ('datalink_output.zip' , "r" ) as zip_ref :
745
+ extracted_files .extend (zip_ref .namelist ())
746
+
747
+ assert len (extracted_files ) == 3
748
+
749
+ os .remove (os .path .join (os .getcwd (), 'datalink_output.zip' ))
750
+
751
+ assert not os .path .exists ('datalink_output.zip' )
752
+
753
+
754
+ @pytest .mark .skip (reason = "Thes fits files generate an error relatate to the unit 'log(cm.s**-2)" )
755
+ def test_load_data_fits (monkeypatch , tmp_path , tmp_path_factory ):
756
+ path = Path (os .getcwd () + '/' + 'datalink_output.zip' )
757
+
758
+ with open (DL_PRODUCTS_FITS , 'rb' ) as file :
759
+ zip_bytes = file .read ()
760
+
761
+ path .write_bytes (zip_bytes )
762
+
700
763
def load_data_monkeypatched (self , params_dict , output_file , verbose ):
701
764
assert params_dict == {
702
765
"VALID_DATA" : "true" ,
703
766
"ID" : "1,2,3,4" ,
704
- "FORMAT" : "votable " ,
767
+ "FORMAT" : "fits " ,
705
768
"RETRIEVAL_TYPE" : "epoch_photometry" ,
706
769
"DATA_STRUCTURE" : "INDIVIDUAL" ,
707
770
"USE_ZIP_ALWAYS" : "true" }
708
- assert output_file == str ( tmp_path / " datalink_output.zip" )
771
+ assert output_file == os . getcwd () + '/' + ' datalink_output.zip'
709
772
assert verbose is True
710
773
711
774
monkeypatch .setattr (TapPlus , "load_data" , load_data_monkeypatched )
712
775
713
776
GAIA_QUERIER .load_data (
777
+ valid_data = True ,
714
778
ids = "1,2,3,4" ,
779
+ format = 'fits' ,
715
780
retrieval_type = "epoch_photometry" ,
781
+ verbose = True ,
782
+ dump_to_file = True )
783
+
784
+ path .unlink ()
785
+
786
+
787
+ def test_load_data_csv (monkeypatch , tmp_path , tmp_path_factory ):
788
+ path = Path (os .getcwd () + '/' + 'datalink_output.zip' )
789
+
790
+ with open (DL_PRODUCTS_CSV , 'rb' ) as file :
791
+ zip_bytes = file .read ()
792
+
793
+ path .write_bytes (zip_bytes )
794
+
795
+ def load_data_monkeypatched (self , params_dict , output_file , verbose ):
796
+ assert params_dict == {
797
+ "VALID_DATA" : "true" ,
798
+ "ID" : "1,2,3,4" ,
799
+ "FORMAT" : "csv" ,
800
+ "RETRIEVAL_TYPE" : "epoch_photometry" ,
801
+ "DATA_STRUCTURE" : "INDIVIDUAL" ,
802
+ "USE_ZIP_ALWAYS" : "true" }
803
+ assert output_file == os .getcwd () + '/' + 'datalink_output.zip'
804
+ assert verbose is True
805
+
806
+ monkeypatch .setattr (TapPlus , "load_data" , load_data_monkeypatched )
807
+
808
+ GAIA_QUERIER .load_data (
716
809
valid_data = True ,
810
+ ids = "1,2,3,4" ,
811
+ format = 'csv' ,
812
+ retrieval_type = "epoch_photometry" ,
717
813
verbose = True ,
718
814
dump_to_file = True )
719
815
816
+ path .unlink ()
817
+
818
+
819
+ def test_load_data_ecsv (monkeypatch , tmp_path , tmp_path_factory ):
820
+ path = Path (os .getcwd () + '/' + 'datalink_output.zip' )
821
+
822
+ with open (DL_PRODUCTS_ECSV , 'rb' ) as file :
823
+ zip_bytes = file .read ()
824
+
825
+ path .write_bytes (zip_bytes )
720
826
721
- def test_load_data_ecsv (monkeypatch , tmp_path ):
722
827
def load_data_monkeypatched (self , params_dict , output_file , verbose ):
723
828
assert params_dict == {
724
829
"VALID_DATA" : "true" ,
@@ -727,21 +832,30 @@ def load_data_monkeypatched(self, params_dict, output_file, verbose):
727
832
"RETRIEVAL_TYPE" : "epoch_photometry" ,
728
833
"DATA_STRUCTURE" : "INDIVIDUAL" ,
729
834
"USE_ZIP_ALWAYS" : "true" }
730
- assert output_file == str ( tmp_path / " datalink_output.zip" )
835
+ assert output_file == os . getcwd () + '/' + ' datalink_output.zip'
731
836
assert verbose is True
732
837
733
838
monkeypatch .setattr (TapPlus , "load_data" , load_data_monkeypatched )
734
839
735
840
GAIA_QUERIER .load_data (
841
+ valid_data = True ,
736
842
ids = "1,2,3,4" ,
843
+ format = 'ecsv' ,
737
844
retrieval_type = "epoch_photometry" ,
738
- valid_data = True ,
739
845
verbose = True ,
740
- format = 'ecsv' ,
741
846
dump_to_file = True )
742
847
848
+ path .unlink ()
849
+
743
850
744
851
def test_load_data_linking_parameter (monkeypatch , tmp_path ):
852
+ path = Path (os .getcwd () + '/' + 'datalink_output.zip' )
853
+
854
+ with open (DL_PRODUCTS_VOT , 'rb' ) as file :
855
+ zip_bytes = file .read ()
856
+
857
+ path .write_bytes (zip_bytes )
858
+
745
859
def load_data_monkeypatched (self , params_dict , output_file , verbose ):
746
860
assert params_dict == {
747
861
"VALID_DATA" : "true" ,
@@ -750,7 +864,7 @@ def load_data_monkeypatched(self, params_dict, output_file, verbose):
750
864
"RETRIEVAL_TYPE" : "epoch_photometry" ,
751
865
"DATA_STRUCTURE" : "INDIVIDUAL" ,
752
866
"USE_ZIP_ALWAYS" : "true" }
753
- assert output_file == str ( tmp_path / " datalink_output.zip" )
867
+ assert output_file == os . getcwd () + '/' + ' datalink_output.zip'
754
868
assert verbose is True
755
869
756
870
monkeypatch .setattr (TapPlus , "load_data" , load_data_monkeypatched )
@@ -763,9 +877,18 @@ def load_data_monkeypatched(self, params_dict, output_file, verbose):
763
877
verbose = True ,
764
878
dump_to_file = True )
765
879
880
+ path .unlink ()
881
+
766
882
767
883
@pytest .mark .parametrize ("linking_param" , ['TRANSIT_ID' , 'IMAGE_ID' ])
768
884
def test_load_data_linking_parameter_with_values (monkeypatch , tmp_path , linking_param ):
885
+ path = Path (os .getcwd () + '/' + 'datalink_output.zip' )
886
+
887
+ with open (DL_PRODUCTS_VOT , 'rb' ) as file :
888
+ zip_bytes = file .read ()
889
+
890
+ path .write_bytes (zip_bytes )
891
+
769
892
def load_data_monkeypatched (self , params_dict , output_file , verbose ):
770
893
assert params_dict == {
771
894
"VALID_DATA" : "true" ,
@@ -775,7 +898,7 @@ def load_data_monkeypatched(self, params_dict, output_file, verbose):
775
898
"DATA_STRUCTURE" : "INDIVIDUAL" ,
776
899
"LINKING_PARAMETER" : linking_param ,
777
900
"USE_ZIP_ALWAYS" : "true" , }
778
- assert output_file == str ( tmp_path / " datalink_output.zip" )
901
+ assert output_file == os . getcwd () + '/' + ' datalink_output.zip'
779
902
assert verbose is True
780
903
781
904
monkeypatch .setattr (TapPlus , "load_data" , load_data_monkeypatched )
@@ -788,6 +911,8 @@ def load_data_monkeypatched(self, params_dict, output_file, verbose):
788
911
verbose = True ,
789
912
dump_to_file = True )
790
913
914
+ path .unlink ()
915
+
791
916
792
917
def test_get_datalinks (monkeypatch ):
793
918
def get_datalinks_monkeypatched (self , ids , linking_parameter , verbose ):
0 commit comments