diff --git a/src/textual/widgets/_link.py b/src/textual/widgets/_link.py index d65ec320b6..bb230fbcb2 100644 --- a/src/textual/widgets/_link.py +++ b/src/textual/widgets/_link.py @@ -62,6 +62,12 @@ def __init__( def watch_text(self, text: str) -> None: self.update(text) + if not self.url: + self.url = text + + def watch_url(self, url: str) -> None: + if not self.text: + self.text = url def on_click(self) -> None: self.action_open_link() diff --git a/tests/test_link.py b/tests/test_link.py new file mode 100644 index 0000000000..8b6a49ecd8 --- /dev/null +++ b/tests/test_link.py @@ -0,0 +1,20 @@ +from textual.widgets import Link + +TEST_URL = "http://example.com" + + +async def test_link_url_defaults_to_text(): + link = Link(TEST_URL) + assert link.url == TEST_URL + + +async def test_empty_link_updates_url_with_text(): + link = Link("") + link.text = TEST_URL + assert link.url == TEST_URL + + +async def test_empty_link_updates_text_with_url(): + link = Link("") + link.url = TEST_URL + assert link.text == TEST_URL