|
11 | 11 | import os
|
12 | 12 | import shutil
|
13 | 13 | from pathlib import Path
|
14 |
| -from unittest.mock import MagicMock |
| 14 | +from unittest.mock import MagicMock, patch |
15 | 15 | import sys
|
16 | 16 | import io
|
17 | 17 |
|
|
21 | 21 | from astropy import units
|
22 | 22 | from astropy.coordinates.name_resolve import NameResolveError
|
23 | 23 | from astropy.coordinates.sky_coordinate import SkyCoord
|
| 24 | +from astropy.io.votable import parse_single_table |
24 | 25 | from astropy.table import Table
|
25 | 26 | from astropy.units import Quantity
|
26 | 27 | from astroquery.exceptions import TableParseError
|
27 | 28 |
|
28 | 29 | from astroquery.esa.jwst import JwstClass
|
29 | 30 | from astroquery.esa.jwst.tests.DummyTapHandler import DummyTapHandler
|
30 | 31 | from astroquery.ipac.ned import Ned
|
31 |
| -from astroquery.simbad import Simbad |
| 32 | +from astroquery.simbad import SimbadClass |
32 | 33 | from astroquery.utils.tap.conn.tests.DummyConnHandler import DummyConnHandler
|
33 | 34 | from astroquery.utils.tap.conn.tests.DummyResponse import DummyResponse
|
34 | 35 | from astroquery.utils.tap.core import TapPlus
|
@@ -914,53 +915,58 @@ def __check_extracted_files(self, files_expected, files_returned):
|
914 | 915 | raise ValueError(f"Not found expected file: {f}")
|
915 | 916 |
|
916 | 917 | def test_query_target_error(self):
|
917 |
| - jwst = JwstClass(show_messages=False) |
918 |
| - simbad = Simbad() |
919 |
| - ned = Ned() |
920 |
| - vizier = Vizier() |
921 |
| - # Testing default parameters |
922 |
| - with pytest.raises((ValueError, TableParseError)) as err: |
923 |
| - jwst.query_target(target_name="M1", target_resolver="") |
924 |
| - assert "This target resolver is not allowed" in err.value.args[0] |
925 |
| - with pytest.raises((ValueError, TableParseError)) as err: |
926 |
| - jwst.query_target("TEST") |
927 |
| - assert ('This target name cannot be determined with this ' |
928 |
| - 'resolver: ALL' in err.value.args[0] or 'Failed to parse' in err.value.args[0]) |
929 |
| - with pytest.raises((ValueError, TableParseError)) as err: |
930 |
| - jwst.query_target(target_name="M1", target_resolver="ALL") |
931 |
| - assert err.value.args[0] in ["This target name cannot be determined " |
932 |
| - "with this resolver: ALL", "Missing " |
933 |
| - "required argument: 'width'"] |
934 |
| - |
935 |
| - # Testing no valid coordinates from resolvers |
936 |
| - simbad_file = data_path('test_query_by_target_name_simbad_ned_error.vot') |
937 |
| - simbad_table = Table.read(simbad_file) |
938 |
| - simbad.query_object = MagicMock(return_value=simbad_table) |
939 |
| - ned_file = data_path('test_query_by_target_name_simbad_ned_error.vot') |
940 |
| - ned_table = Table.read(ned_file) |
941 |
| - ned.query_object = MagicMock(return_value=ned_table) |
942 |
| - vizier_file = data_path('test_query_by_target_name_vizier_error.vot') |
943 |
| - vizier_table = Table.read(vizier_file) |
944 |
| - vizier.query_object = MagicMock(return_value=vizier_table) |
945 |
| - |
946 |
| - # coordinate_error = 'coordinate must be either a string or astropy.coordinates' |
947 |
| - with pytest.raises((ValueError, TableParseError)) as err: |
948 |
| - jwst.query_target(target_name="test", target_resolver="SIMBAD", |
949 |
| - radius=units.Quantity(5, units.deg)) |
950 |
| - assert ('This target name cannot be determined with this ' |
951 |
| - 'resolver: SIMBAD' in err.value.args[0] or 'Failed to parse' in err.value.args[0]) |
952 |
| - |
953 |
| - with pytest.raises((ValueError, TableParseError)) as err: |
954 |
| - jwst.query_target(target_name="test", target_resolver="NED", |
955 |
| - radius=units.Quantity(5, units.deg)) |
956 |
| - assert ('This target name cannot be determined with this ' |
957 |
| - 'resolver: NED' in err.value.args[0] or 'Failed to parse' in err.value.args[0]) |
958 |
| - |
959 |
| - with pytest.raises((ValueError, TableParseError)) as err: |
960 |
| - jwst.query_target(target_name="test", target_resolver="VIZIER", |
961 |
| - radius=units.Quantity(5, units.deg)) |
962 |
| - assert ('This target name cannot be determined with this resolver: ' |
963 |
| - 'VIZIER' in err.value.args[0] or 'Failed to parse' in err.value.args[0]) |
| 918 | + # need to patch simbad query object here |
| 919 | + with patch("astroquery.simbad.SimbadClass.query_object", |
| 920 | + side_effect=lambda object_name: parse_single_table( |
| 921 | + Path(__file__).parent / "data" / f"simbad_{object_name}.vot" |
| 922 | + ).to_table()): |
| 923 | + jwst = JwstClass(show_messages=False) |
| 924 | + simbad = SimbadClass() |
| 925 | + ned = Ned() |
| 926 | + vizier = Vizier() |
| 927 | + # Testing default parameters |
| 928 | + with pytest.raises((ValueError, TableParseError)) as err: |
| 929 | + jwst.query_target(target_name="M1", target_resolver="") |
| 930 | + assert "This target resolver is not allowed" in err.value.args[0] |
| 931 | + with pytest.raises((ValueError, TableParseError)) as err: |
| 932 | + jwst.query_target("TEST") |
| 933 | + assert ('This target name cannot be determined with this ' |
| 934 | + 'resolver: ALL' in err.value.args[0] or 'Failed to parse' in err.value.args[0]) |
| 935 | + with pytest.raises((ValueError, TableParseError)) as err: |
| 936 | + jwst.query_target(target_name="M1", target_resolver="ALL") |
| 937 | + assert err.value.args[0] in ["This target name cannot be determined " |
| 938 | + "with this resolver: ALL", "Missing " |
| 939 | + "required argument: 'width'"] |
| 940 | + |
| 941 | + # Testing no valid coordinates from resolvers |
| 942 | + simbad_file = data_path('test_query_by_target_name_simbad_ned_error.vot') |
| 943 | + simbad_table = Table.read(simbad_file) |
| 944 | + simbad.query_object = MagicMock(return_value=simbad_table) |
| 945 | + ned_file = data_path('test_query_by_target_name_simbad_ned_error.vot') |
| 946 | + ned_table = Table.read(ned_file) |
| 947 | + ned.query_object = MagicMock(return_value=ned_table) |
| 948 | + vizier_file = data_path('test_query_by_target_name_vizier_error.vot') |
| 949 | + vizier_table = Table.read(vizier_file) |
| 950 | + vizier.query_object = MagicMock(return_value=vizier_table) |
| 951 | + |
| 952 | + # coordinate_error = 'coordinate must be either a string or astropy.coordinates' |
| 953 | + with pytest.raises((ValueError, TableParseError)) as err: |
| 954 | + jwst.query_target(target_name="TEST", target_resolver="SIMBAD", |
| 955 | + radius=units.Quantity(5, units.deg)) |
| 956 | + assert ('This target name cannot be determined with this ' |
| 957 | + 'resolver: SIMBAD' in err.value.args[0] or 'Failed to parse' in err.value.args[0]) |
| 958 | + |
| 959 | + with pytest.raises((ValueError, TableParseError)) as err: |
| 960 | + jwst.query_target(target_name="TEST", target_resolver="NED", |
| 961 | + radius=units.Quantity(5, units.deg)) |
| 962 | + assert ('This target name cannot be determined with this ' |
| 963 | + 'resolver: NED' in err.value.args[0] or 'Failed to parse' in err.value.args[0]) |
| 964 | + |
| 965 | + with pytest.raises((ValueError, TableParseError)) as err: |
| 966 | + jwst.query_target(target_name="TEST", target_resolver="VIZIER", |
| 967 | + radius=units.Quantity(5, units.deg)) |
| 968 | + assert ('This target name cannot be determined with this resolver: ' |
| 969 | + 'VIZIER' in err.value.args[0] or 'Failed to parse' in err.value.args[0]) |
964 | 970 |
|
965 | 971 | def test_remove_jobs(self):
|
966 | 972 | dummyTapHandler = DummyTapHandler()
|
|
0 commit comments