Skip to content

Commit

Permalink
Add tests and recursion check for link str
Browse files Browse the repository at this point in the history
  • Loading branch information
gadomski committed Jul 15, 2021
1 parent 3561a5c commit 21feb88
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 1 deletion.
4 changes: 4 additions & 0 deletions pystac/link.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@ def get_target_str(self) -> Optional[str]:
else:
return None

def has_target_href(self) -> bool:
"""Returns true if this link has a string href in its target information."""
return self._target_href is not None

def __repr__(self) -> str:
return "<Link rel={} target={}>".format(self.rel, self.target)

Expand Down
2 changes: 1 addition & 1 deletion pystac/stac_object.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ def get_self_href(self) -> Optional[str]:
links have absolute (as opposed to relative) HREFs.
"""
self_link = self.get_single_link(pystac.RelType.SELF)
if self_link:
if self_link and self_link.has_target_href():
return self_link.get_target_str()
else:
return None
Expand Down
18 changes: 18 additions & 0 deletions tests/test_link.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,24 @@ def test_resolved_self_href(self) -> None:
link.resolve_stac_object()
self.assertEqual(link.get_absolute_href(), path)

def test_target_getter_setter(self) -> None:
link = pystac.Link("my rel", target="./foo/bar.json")
self.assertEqual(link.target, "./foo/bar.json")
self.assertEqual(link.get_target_str(), "./foo/bar.json")

link.target = self.item
self.assertEqual(link.target, self.item)
self.assertEqual(link.get_target_str(), self.item.get_self_href())

link.target = "./bar/foo.json"
self.assertEqual(link.target, "./bar/foo.json")

def test_get_target_str_no_href(self) -> None:
self.item.remove_links("self")
link = pystac.Link("self", target=self.item)
self.item.add_link(link)
self.assertIsNone(link.get_target_str())


class StaticLinkTest(unittest.TestCase):
def setUp(self) -> None:
Expand Down

0 comments on commit 21feb88

Please sign in to comment.