Skip to content

Commit 9ae848f

Browse files
committed
core/views: Show server version and feature level in about popup.
The server version and the feature level are shown under a 'Server' category. Note: Feature level is only shown in the popup when it is present. Test amended and added to check whether feature level is added to the about menu based on its availability. Fixes #616.
1 parent 25f6758 commit 9ae848f

File tree

3 files changed

+32
-4
lines changed

3 files changed

+32
-4
lines changed

tests/ui/test_ui_tools.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
ModListWalker, MsgInfoView, PopUpConfirmationView, PopUpView,
1818
RightColumnView, StreamInfoView, StreamsView, TopicsView, UsersView,
1919
)
20+
from zulipterminal.version import MINIMUM_SUPPORTED_SERVER_VERSION
2021

2122

2223
VIEWS = "zulipterminal.ui_tools.views"
@@ -1246,8 +1247,11 @@ def mock_external_classes(self, mocker):
12461247
mocker.patch.object(self.controller, 'maximum_popup_dimensions',
12471248
return_value=(64, 64))
12481249
mocker.patch(VIEWS + '.urwid.SimpleFocusListWalker', return_value=[])
1250+
server_version, server_feature_level = MINIMUM_SUPPORTED_SERVER_VERSION
12491251
self.about_view = AboutView(self.controller, 'About',
1250-
zt_version='0.5.1+git')
1252+
zt_version='0.5.1+git',
1253+
server_version=server_version,
1254+
server_feature_level=server_feature_level)
12511255

12521256
@pytest.mark.parametrize('key', {*keys_for_command('GO_BACK'),
12531257
*keys_for_command('ABOUT')})
@@ -1270,6 +1274,19 @@ def test_keypress_navigation(self, mocker,
12701274
self.about_view.keypress(size, key)
12711275
super_keypress.assert_called_once_with(size, expected_key)
12721276

1277+
def test_feature_level_content(self, mocker, zulip_version):
1278+
self.controller = mocker.Mock()
1279+
mocker.patch.object(self.controller, 'maximum_popup_dimensions',
1280+
return_value=(64, 64))
1281+
mocker.patch(VIEWS + '.urwid.SimpleFocusListWalker', return_value=[])
1282+
server_version, server_feature_level = zulip_version
1283+
about_view = AboutView(self.controller, 'About', zt_version='0.5.1',
1284+
server_version=server_version,
1285+
server_feature_level=server_feature_level)
1286+
assert len(about_view.feature_level_content) == (
1287+
1 if server_feature_level else 0
1288+
)
1289+
12731290

12741291
class TestPopUpConfirmationView:
12751292
@pytest.fixture

zulipterminal/core.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,11 @@ def popup_with_message(self, text: str, width: int) -> None:
148148
self.show_pop_up(NoticeView(self, text, width, "NOTICE"))
149149

150150
def show_about(self) -> None:
151-
self.show_pop_up(AboutView(self, 'About', zt_version=ZT_VERSION))
151+
self.show_pop_up(
152+
AboutView(self, 'About', zt_version=ZT_VERSION,
153+
server_version=self.model.server_version,
154+
server_feature_level=self.model.server_feature_level)
155+
)
152156

153157
def search_messages(self, text: str) -> None:
154158
# Search for a text in messages

zulipterminal/ui_tools/views.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -879,10 +879,17 @@ def __init__(self, controller: Any,
879879

880880

881881
class AboutView(PopUpView):
882-
def __init__(self, controller: Any, title: str, *,
883-
zt_version: str) -> None:
882+
def __init__(self, controller: Any, title: str, *, zt_version: str,
883+
server_version: str,
884+
server_feature_level: Optional[int]) -> None:
885+
self.feature_level_content = (
886+
[('Feature level', str(server_feature_level))]
887+
if server_feature_level else []
888+
)
884889
contents = [
885890
('Application', [('Zulip Terminal', zt_version)]),
891+
('Server', [('Version', server_version)]
892+
+ self.feature_level_content),
886893
]
887894

888895
popup_width, column_widths = self.calculate_table_widths(contents,

0 commit comments

Comments
 (0)