6
6
7
7
from zulipterminal .api_types import Composition
8
8
from zulipterminal .config .keys import keys_for_command
9
- from zulipterminal .ui import LEFT_WIDTH , RIGHT_WIDTH , View
9
+ from zulipterminal .ui import LEFT_WIDTH , RIGHT_WIDTH , TAB_WIDTH , View
10
10
from zulipterminal .urwid_types import urwid_Box
11
11
12
12
@@ -25,9 +25,15 @@ def mock_external_classes(self, mocker: MockerFixture) -> None:
25
25
26
26
@pytest .fixture
27
27
def view (self , mocker : MockerFixture ) -> View :
28
- main_window = mocker .patch (VIEW + ".main_window" )
28
+ mocker .patch (MODULE + ".TabView" )
29
+ mocker .patch (MODULE + ".LeftColumnView" )
30
+ mocker .patch ("zulipterminal.ui_tools.views.urwid.Frame" )
31
+ mocker .patch ("zulipterminal.ui_tools.views.MessageView" )
32
+ mocker .patch (MODULE + ".RightColumnView" )
33
+
29
34
# View is an urwid.Frame instance, a Box widget.
30
35
mocker .patch (VIEW + ".sizing" , return_value = frozenset ({"box" }))
36
+
31
37
return View (self .controller )
32
38
33
39
def test_init (self , mocker : MockerFixture ) -> None :
@@ -44,8 +50,11 @@ def test_init(self, mocker: MockerFixture) -> None:
44
50
45
51
def test_left_column_view (self , mocker : MockerFixture , view : View ) -> None :
46
52
left_view = mocker .patch (MODULE + ".LeftColumnView" )
53
+ left_tab = mocker .patch (MODULE + ".TabView" )
54
+
47
55
return_value = view .left_column_view ()
48
- assert return_value == left_view (view )
56
+
57
+ assert return_value == (left_view (view ), left_tab ())
49
58
50
59
def test_middle_column_view (self , view : View , mocker : MockerFixture ) -> None :
51
60
middle_view = mocker .patch (MODULE + ".MiddleColumnView" )
@@ -59,11 +68,14 @@ def test_middle_column_view(self, view: View, mocker: MockerFixture) -> None:
59
68
60
69
def test_right_column_view (self , view : View , mocker : MockerFixture ) -> None :
61
70
right_view = mocker .patch (MODULE + ".RightColumnView" )
71
+ right_tab = mocker .patch (MODULE + ".TabView" )
62
72
line_box = mocker .patch (MODULE + ".urwid.LineBox" )
73
+
63
74
return_value = view .right_column_view ()
75
+
64
76
right_view .assert_called_once_with (view )
65
77
assert view .users_view == right_view ()
66
- assert return_value == line_box ()
78
+ assert return_value == ( line_box (), right_tab () )
67
79
68
80
def test_set_footer_text_default (self , view : View , mocker : MockerFixture ) -> None :
69
81
mocker .patch (VIEW + ".get_random_help" , return_value = ["some help text" ])
@@ -153,15 +165,15 @@ def test_footer_view(self, mocker: MockerFixture, view: View) -> None:
153
165
def test_main_window (
154
166
self , mocker : MockerFixture , monkeypatch : pytest .MonkeyPatch
155
167
) -> None :
156
- left = mocker .patch (VIEW + ".left_column_view" )
168
+ left = mocker .patch (VIEW + ".left_column_view" , return_value = ( "PANEL" , "TAB" ) )
157
169
158
170
# NOTE: Use monkeypatch not patch, as view doesn't exist until later
159
171
def just_set_message_view (self : Any ) -> None :
160
172
self .message_view = mocker .Mock (read_message = lambda : None )
161
173
162
174
monkeypatch .setattr (View , "middle_column_view" , just_set_message_view )
163
175
164
- right = mocker .patch (VIEW + ".right_column_view" )
176
+ right = mocker .patch (VIEW + ".right_column_view" , return_value = ( "PANEL" , "TAB" ) )
165
177
col = mocker .patch (MODULE + ".urwid.Columns" )
166
178
frame = mocker .patch (MODULE + ".urwid.Frame" )
167
179
title_divider = mocker .patch (MODULE + ".urwid.Divider" )
@@ -190,9 +202,9 @@ def just_set_message_view(self: Any) -> None:
190
202
expected_column_calls = [
191
203
mocker .call (
192
204
[
193
- (LEFT_WIDTH , left () ),
205
+ (LEFT_WIDTH , view . left_panel ),
194
206
("weight" , 10 , mocker .ANY ), # ANY is a center
195
- (0 , right () ),
207
+ (TAB_WIDTH , view . right_tab ),
196
208
],
197
209
focus_column = 0 ,
198
210
),
@@ -215,7 +227,7 @@ def just_set_message_view(self: Any) -> None:
215
227
)
216
228
217
229
@pytest .mark .parametrize ("autohide" , [True , False ])
218
- @pytest .mark .parametrize ("visible, width" , [(True , LEFT_WIDTH ), (False , 0 )])
230
+ @pytest .mark .parametrize ("visible, width" , [(True , LEFT_WIDTH ), (False , TAB_WIDTH )])
219
231
def test_show_left_panel (
220
232
self ,
221
233
mocker : MockerFixture ,
@@ -224,20 +236,25 @@ def test_show_left_panel(
224
236
width : int ,
225
237
autohide : bool ,
226
238
) -> None :
227
- view .left_panel = mocker .Mock ()
228
239
view .body = mocker .Mock ()
229
- view .body .contents = [mocker . Mock () , mocker .Mock (), mocker .Mock ()]
240
+ view .body .contents = [view . left_panel , mocker .Mock (), mocker .Mock ()]
230
241
view .controller .autohide = autohide
231
242
232
243
view .show_left_panel (visible = visible )
233
244
234
245
if autohide :
246
+ if visible :
247
+ assert view .body .contents [0 ][0 ] == view .left_panel
248
+ else :
249
+ assert view .body .contents [0 ][0 ] == view .left_tab
235
250
view .body .options .assert_called_once_with ("given" , width )
236
251
else :
237
252
view .body .options .assert_not_called ()
238
253
239
254
@pytest .mark .parametrize ("autohide" , [True , False ])
240
- @pytest .mark .parametrize ("visible, width" , [(True , RIGHT_WIDTH ), (False , 0 )])
255
+ @pytest .mark .parametrize (
256
+ "visible, width" , [(True , RIGHT_WIDTH ), (False , TAB_WIDTH )]
257
+ )
241
258
def test_show_right_panel (
242
259
self ,
243
260
mocker : MockerFixture ,
@@ -246,14 +263,17 @@ def test_show_right_panel(
246
263
width : int ,
247
264
autohide : bool ,
248
265
) -> None :
249
- view .right_panel = mocker .Mock ()
250
266
view .body = mocker .Mock ()
251
- view .body .contents = [mocker .Mock (), mocker .Mock (), mocker . Mock () ]
267
+ view .body .contents = [mocker .Mock (), mocker .Mock (), view . right_panel ]
252
268
view .controller .autohide = autohide
253
269
254
270
view .show_right_panel (visible = visible )
255
271
256
272
if autohide :
273
+ if visible :
274
+ assert view .body .contents [2 ][0 ] == view .right_panel
275
+ else :
276
+ assert view .body .contents [2 ][0 ] == view .right_tab
257
277
view .body .options .assert_called_once_with ("given" , width )
258
278
else :
259
279
view .body .options .assert_not_called ()
0 commit comments