def test_tap(): tap_mock = Mock() empty_result = Table.read(os.path.join(DATA_DIR, 'alma-empty.txt'), format='ascii') tap_mock.search.return_value = Mock(table=empty_result) alma = Alma() alma._get_dataarchive_url = Mock() alma._tap = tap_mock result = alma.query_tap('select * from ivoa.ObsCore') assert len(result.table) == 0 tap_mock.search.assert_called_once_with('select * from ivoa.ObsCore', language='ADQL')
def test_galactic_query(): """ regression test for 1867 """ tap_mock = Mock() empty_result = Table.read(os.path.join(DATA_DIR, 'alma-empty.txt'), format='ascii') mock_result = Mock() mock_result.to_table.return_value = empty_result tap_mock.search.return_value = mock_result alma = Alma() alma._get_dataarchive_url = Mock() alma._tap = tap_mock result = alma.query_region(SkyCoord(0*u.deg, 0*u.deg, frame='galactic'), radius=1*u.deg, get_query_payload=True) assert result['ra_dec'] == SkyCoord(0*u.deg, 0*u.deg, frame='galactic').icrs.to_string() + ", 1.0"
def test_query(): # Tests the query and return values tap_mock = Mock() empty_result = Table.read(os.path.join(DATA_DIR, 'alma-empty.txt'), format='ascii') mock_result = Mock() mock_result.to_table.return_value = empty_result tap_mock.search.return_value = mock_result alma = Alma() alma._get_dataarchive_url = Mock() alma._tap = tap_mock result = alma.query_region(SkyCoord(1 * u.deg, 2 * u.deg, frame='icrs'), radius=1 * u.deg) assert len(result) == 0 assert 'proposal_id' in result.columns tap_mock.search.assert_called_once_with( "select * from ivoa.obscore WHERE " "(INTERSECTS(CIRCLE('ICRS',1.0,2.0,1.0), s_region) = 1) " "AND calib_level>1 AND data_rights='Public'", language='ADQL') # one row result tap_mock = Mock() onerow_result = Table.read(os.path.join(DATA_DIR, 'alma-onerow.txt'), format='ascii') mock_result = Mock() mock_result.to_table.return_value = onerow_result tap_mock.search.return_value = mock_result alma = Alma() alma._tap = tap_mock with patch('astroquery.alma.tapsql.coord.SkyCoord.from_name') as name_mock: name_mock.return_value = SkyCoord(1, 2, unit='deg') result = alma.query_object('M83', public=False, band_list=[3]) assert len(result) == 1 tap_mock.search.assert_called_once_with( "select * from ivoa.obscore WHERE " "(INTERSECTS(CIRCLE('ICRS',1.0,2.0,0.16666666666666666), s_region) = 1) " "AND band_list LIKE '%3%' AND calib_level>1 AND data_rights='Proprietary'", band_list=[3], language='ADQL') # repeat for legacy columns mock_result = Mock() tap_mock = Mock() mock_result.to_table.return_value = onerow_result tap_mock.search.return_value = mock_result alma = Alma() alma._tap = tap_mock with patch('astroquery.alma.tapsql.coord.SkyCoord.from_name') as name_mock: name_mock.return_value = SkyCoord(1, 2, unit='deg') result_legacy = alma.query_object('M83', public=False, legacy_columns=True, band_list=[3]) assert len(result) == 1 assert 'Project code' in result_legacy.columns tap_mock.search.assert_called_once_with( "select * from ivoa.obscore WHERE " "(INTERSECTS(CIRCLE('ICRS',1.0,2.0,0.16666666666666666), s_region) = 1) " "AND band_list LIKE '%3%' AND calib_level>1 AND data_rights='Proprietary'", band_list=[3], language='ADQL') row_legacy = result_legacy[0] row = result[0] for item in _OBSCORE_TO_ALMARESULT.items(): if item[0] == 't_min': assert Time(row[item[0]], format='mjd').strftime('%d-%m-%Y') ==\ row_legacy[item[1]] else: assert row[item[0]] == row_legacy[item[1]] # query with different arguments tap_mock = Mock() empty_result = Table.read(os.path.join(DATA_DIR, 'alma-empty.txt'), format='ascii') mock_result = Mock() mock_result.to_table.return_value = empty_result tap_mock.search.return_value = mock_result alma = Alma() alma._get_dataarchive_url = Mock() alma._tap = tap_mock result = alma.query_region('1 2', radius=1 * u.deg, payload={'frequency': '22'}, public=None, band_list='1 3', science=False, start_date='01-01-2010', polarisation_type='Dual', fov=0.0123130, integration_time=25) assert len(result) == 0 tap_mock.search.assert_called_with( "select * from ivoa.obscore WHERE frequency=22.0 AND " "(INTERSECTS(CIRCLE('ICRS',1.0,2.0,1.0), s_region) = 1) AND " "(band_list LIKE '%1%' OR band_list LIKE '%3%') AND " "t_min=55197.0 AND pol_states='/XX/YY/' AND s_fov=0.012313 AND " "t_exptime=25", band_list='1 3', fov=0.012313, integration_time=25, language='ADQL', polarisation_type='Dual', start_date='01-01-2010')