diff --git a/tests/ui_tools/test_buttons.py b/tests/ui_tools/test_buttons.py index 9f1419a090..6068021ab0 100644 --- a/tests/ui_tools/test_buttons.py +++ b/tests/ui_tools/test_buttons.py @@ -369,11 +369,12 @@ def test_update_widget(self, mocker, caption, expected_cursor_position, @pytest.mark.parametrize([ 'link', 'handle_narrow_link_called', + 'open_in_browser_called', ], [ - (SERVER_URL + '/#narrow/stream/1-Stream-1', True), - (SERVER_URL + '/user_uploads/some/path/image.png', False), - ('https://foo.com', False), + (SERVER_URL + '/#narrow/stream/1-Stream-1', True, False), + (SERVER_URL + '/user_uploads/some/path/image.png', False, False), + ('https://foo.com', False, True), ], ids=[ 'internal_narrow_link', @@ -381,7 +382,8 @@ def test_update_widget(self, mocker, caption, expected_cursor_position, 'external_link', ] ) - def test_handle_link(self, mocker, link, handle_narrow_link_called): + def test_handle_link(self, mocker, link, handle_narrow_link_called, + open_in_browser_called): self.controller.model.server_url = SERVER_URL self.handle_narrow_link = ( mocker.patch(BUTTONS + '.MessageLinkButton.handle_narrow_link') @@ -391,6 +393,7 @@ def test_handle_link(self, mocker, link, handle_narrow_link_called): mocked_button.handle_link() assert self.handle_narrow_link.called == handle_narrow_link_called + assert self.controller.open_in_browser.called == open_in_browser_called @pytest.mark.parametrize('stream_data, expected_response', [ ('206-zulip-terminal', dict(stream_id=206, stream_name=None)), diff --git a/zulipterminal/ui_tools/buttons.py b/zulipterminal/ui_tools/buttons.py index 96ae20e5e2..4dde199127 100644 --- a/zulipterminal/ui_tools/buttons.py +++ b/zulipterminal/ui_tools/buttons.py @@ -339,6 +339,8 @@ def handle_link(self, *_: Any) -> None: server_url = self.model.server_url if self.link.startswith(urljoin(server_url, '/#narrow/')): self.handle_narrow_link() + elif not self.link.startswith(urljoin(server_url, '/user_uploads/')): + self.controller.open_in_browser(self.link) @staticmethod def _decode_stream_data(encoded_stream_data: str) -> DecodedStream: