Skip to content

Commit 71889f1

Browse files
committed
Added tests for ESASky SSO feature
1 parent 32e5498 commit 71889f1

File tree

2 files changed

+82
-13
lines changed

2 files changed

+82
-13
lines changed

astroquery/esasky/core.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -493,15 +493,15 @@ def query_sso_maps(self, sso_name, *, sso_type="ALL", missions=__ALL_STRING,
493493
'Allowed values are {}.\n'.format(', '.join(map(str, self.SSO_TYPES)))
494494
if sso_type != 'ALL':
495495
type_text = ' and type {}'.format(sso_type)
496-
log.info('Found {num_sso} SSO\'s with name: {sso_name}{type_text}.\n'
497-
'Try narrowing your search by typing a more specific sso_name.\n{specify_type}'
498-
'The following SSO\'s were found:\n{found_ssos}'
499-
.format(num_sso=len(sso),
500-
sso_name=sso_name,
501-
type_text=type_text,
502-
specify_type=specify_type,
503-
found_ssos='\n'.join(map(str, sso)))
504-
)
496+
raise ValueError('Found {num_sso} SSO\'s with name: {sso_name}{type_text}.\n'
497+
'Try narrowing your search by typing a more specific sso_name.\n{specify_type}'
498+
'The following SSO\'s were found:\n{found_ssos}'
499+
.format(num_sso=len(sso),
500+
sso_name=sso_name,
501+
type_text=type_text,
502+
specify_type=specify_type,
503+
found_ssos='\n'.join(map(str, sso)))
504+
)
505505
return None
506506

507507
sanitized_missions = self._sanitize_input_sso_mission(missions)
@@ -513,7 +513,7 @@ def query_sso_maps(self, sso_name, *, sso_type="ALL", missions=__ALL_STRING,
513513
query_result = {}
514514

515515
sso_type = self._get_sso_db_type(sso['sso_type'])
516-
sso_db_identifier = self._get_db_sso_identifier(self._get_db_sso_identifier(sso['sso_type']))
516+
sso_db_identifier = self._get_db_sso_identifier(sso['sso_type'])
517517
for name in sanitized_missions:
518518
data_table = self._find_mission_tap_table_name(sso_json, name)
519519
mission_json = self._find_mission_parameters_in_json(data_table, sso_json)
@@ -528,7 +528,7 @@ def query_sso_maps(self, sso_name, *, sso_type="ALL", missions=__ALL_STRING,
528528
if len(table) > 0:
529529
query_result[name.upper()] = table
530530

531-
return query_result
531+
return commons.TableList(query_result)
532532

533533
def get_images_sso(self, *, sso_name=None, sso_type="ALL", table_list=None, missions=__ALL_STRING,
534534
download_dir=_MAPS_DOWNLOAD_DIR, cache=True):
@@ -595,7 +595,7 @@ def get_images_sso(self, *, sso_name=None, sso_type="ALL", table_list=None, miss
595595
if sso_name is None and table_list is None:
596596
raise ValueError("An input is required for either sso_name or table.")
597597

598-
sanitized_missions = self._sanitize_input_sso_mission(missions)
598+
sanitized_missions = [m.lower() for m in self._sanitize_input_sso_mission(missions)]
599599
sso_name = self._sanitize_input_sso_name(sso_name)
600600
sso_type = self._sanitize_input_sso_type(sso_type)
601601
if table_list is None:
@@ -1415,7 +1415,7 @@ def _sanitize_input_sso_mission(self, missions):
14151415
else:
14161416
return [missions]
14171417
raise ValueError("Mission must be either a string or a list of "
1418-
"missions")
1418+
"missions. Valid entries are found in list_sso()")
14191419
def _get_sso_db_type(self, sso_type):
14201420
sso_type = sso_type.lower()
14211421
if sso_type == "asteroid" or sso_type == "dwarf_planet":

astroquery/esasky/tests/test_esasky_remote.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,3 +289,72 @@ def test_get_columns(self):
289289
columns = ESASkyClass.get_columns(table_name='observations.mv_v_esasky_xmm_om_uv_fdw', only_names=False)
290290
assert isinstance(columns[0], TapColumn)
291291
assert len(column_names) == len(columns)
292+
293+
def test_esasky_query_sso_maps(self):
294+
result = ESASkyClass.query_sso_maps(sso_name="ceres")
295+
assert isinstance(result, TableList)
296+
assert "HST" in result.keys()
297+
assert "XMM" in result.keys()
298+
assert "HERSCHEL" in result.keys()
299+
assert len(result["HST"]) >= 176
300+
301+
result = ESASkyClass.query_sso_maps(sso_name="ceres", missions="HST", row_limit=1)
302+
assert isinstance(result, TableList)
303+
assert "HST" in result.keys()
304+
assert "XMM" not in result.keys()
305+
assert "HERSCHEL" not in result.keys()
306+
assert len(result["HST"]) == 1
307+
308+
result = ESASkyClass.query_sso_maps(sso_name="io", sso_type="SATELLITE", missions=["HST", "XMM"])
309+
assert isinstance(result, TableList)
310+
assert "HST" in result.keys()
311+
assert "XMM" in result.keys()
312+
assert "HERSCHEL" not in result.keys()
313+
314+
def test_esasky_query_sso_maps_ambiguous_name(self):
315+
try:
316+
ESASkyClass.query_sso_maps(sso_name="io")
317+
except ValueError as err:
318+
assert 'Try narrowing your search' in str(err)
319+
return
320+
assert False
321+
322+
def test_esasky_find_sso(self):
323+
sso = ESASkyClass.find_sso(sso_name="Io")
324+
assert len(sso) >= 2
325+
assert "Io" in sso[0]['aliases'] or "Io" in sso[0]['sso_name']
326+
327+
sso = ESASkyClass.find_sso(sso_name="Io", sso_type="asteroid")
328+
assert len(sso) >= 1
329+
assert "Io" in sso[0]['aliases'] or "Io" in sso[0]['sso_name']
330+
assert "ASTEROID" in sso[0]['sso_type']
331+
332+
assert ESASkyClass.find_sso(sso_name="Not an SSO") is None
333+
334+
def test_esasky_list_sso(self):
335+
assert len(ESASkyClass.list_sso()) >= 3
336+
337+
def test_esasky_get_images_sso(self):
338+
download_directory = "ESASkyRemoteTest"
339+
if not os.path.exists(download_directory):
340+
os.makedirs(download_directory)
341+
342+
table_list = ESASkyClass.query_sso_maps(sso_name="ceres")
343+
assert "HERSCHEL" in table_list.keys()
344+
fits_files = ESASkyClass.get_images_sso(table_list=table_list, missions="XMM",
345+
download_dir=download_directory)
346+
assert "HERSCHEL" not in fits_files
347+
assert "XMM" in fits_files
348+
assert isinstance(fits_files["XMM"][0], HDUList)
349+
350+
fits_files = ESASkyClass.get_images_sso(sso_name="ceres", missions="XMM",
351+
download_dir=download_directory)
352+
assert "HERSCHEL" not in fits_files
353+
assert "XMM" in fits_files
354+
assert isinstance(fits_files["XMM"][0], HDUList)
355+
356+
file_path = os.path.join(download_directory, "XMM")
357+
assert os.path.exists(file_path)
358+
359+
fits_files = None
360+
shutil.rmtree(download_directory)

0 commit comments

Comments
 (0)