Skip to content

Commit

Permalink
✅ Add tests for planetary coordinates
Browse files Browse the repository at this point in the history
  • Loading branch information
Xen0Xys committed Jul 24, 2024
1 parent 3695530 commit cbe7700
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/ipyaladin/utils/_coordinate_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def _from_name_on_planet(string: str, body: str) -> SkyCoord:
"""
url = (
f"https://alasky.cds.unistra.fr/planetary-features/resolve"
f"?identifier={string}&body={body}&threshold=0.7&format=json"
f"?identifier={string.replace(' ', '+')}&body={body}&threshold=0.7&format=json"
)
request = requests.get(url)
if request.status_code != OK_STATUS_CODE:
Expand Down
66 changes: 65 additions & 1 deletion src/test/test_aladin.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import requests
from astropy.coordinates import Angle, SkyCoord
import numpy as np
import pytest
from typing import Callable
from typing import Callable, Dict

from ipyaladin import Aladin
from ipyaladin.utils._coordinate_parser import parse_coordinate_string
Expand All @@ -18,6 +19,40 @@ def mock_sesame(monkeypatch: Callable) -> None:
monkeypatch.setattr(SkyCoord, "from_name", lambda _: SkyCoord(0, 0, unit="deg"))


class MockResponse:
"""Mock response object for requests.get."""

def __init__(self) -> None:
self.status_code = 200

def json(self) -> Dict:
"""Return a mock JSON response."""
return {
"data": [
[
None,
None,
None,
None,
None,
0,
0,
None,
None,
None,
None,
"",
]
]
}


@pytest.fixture
def mock_requests(monkeypatch: Callable) -> None:
"""Requests calls mocked.""" # noqa: D401
monkeypatch.setattr(requests, "get", lambda _: MockResponse())


test_aladin_string_target, _ = zip(*test_is_coordinate_string_values)


Expand All @@ -37,6 +72,35 @@ def test_aladin_string_target_set(target: str, mock_sesame: Callable) -> None:
assert np.isclose(aladin.target.icrs.dec.deg, parsed_target.icrs.dec.deg)


test_aladin_planetary_string_target = [
"Olympus Mons",
"Terra Sabaea",
"Promethei Terra",
]


@pytest.mark.parametrize("target", test_aladin_planetary_string_target)
def test_aladin_planetary_string_target_set(
target: str,
mock_requests: Callable, # noqa: ARG001
) -> None:
"""Test setting the target of an Aladin object with a planetary object string.
Parameters
----------
target : str
The target string.
"""
aladin._survey_body = "mars"
aladin.target = target
parsed_target = parse_coordinate_string(target, body="mars")
print(aladin.target)
print(parsed_target)
assert np.isclose(aladin.target.icrs.ra.deg, parsed_target.icrs.ra.deg)
assert np.isclose(aladin.target.icrs.dec.deg, parsed_target.icrs.dec.deg)


@pytest.mark.parametrize("target", test_aladin_string_target)
def test_aladin_sky_coord_target_set(target: str, mock_sesame: Callable) -> None: # noqa: ARG001
"""Test setting and getting the target of an Aladin object with a SkyCoord object.
Expand Down

0 comments on commit cbe7700

Please sign in to comment.