1
1
from typing import Any , Dict
2
2
3
3
import pytest
4
+ from typing_extensions import Literal
4
5
from urwid import AttrMap , Overlay
5
6
6
7
from zulipterminal .config .keys import keys_for_command
@@ -405,6 +406,21 @@ def test__decode_stream_data(self, stream_data, expected_response):
405
406
406
407
assert return_value == expected_response
407
408
409
+ @pytest .mark .parametrize ('pm_data, expected_response' , [
410
+ ('1,2-pm' , dict (recipient_ids = [1 , 2 ], type = Literal ['pm' ])),
411
+ ('1,2,3-group' , dict (recipient_ids = [1 , 2 , 3 ],
412
+ type = Literal ['group' ])),
413
+ ],
414
+ ids = [
415
+ 'ordinary_pm' ,
416
+ 'group_pm' ,
417
+ ]
418
+ )
419
+ def test__decode_pm_data (self , pm_data , expected_response ):
420
+ return_value = MessageLinkButton ._decode_pm_data (pm_data )
421
+
422
+ assert return_value == expected_response
423
+
408
424
@pytest .mark .parametrize ('message_id, expected_return_value' , [
409
425
('1' , 1 ),
410
426
('foo' , None ),
@@ -430,6 +446,9 @@ def test__decode_message_id(self, message_id, expected_return_value):
430
446
(SERVER_URL + '/#narrow/stream/1-Stream-1/topic/foo/near/1' ,
431
447
{'narrow' : 'stream:topic:near' , 'topic_name' : 'foo' , 'message_id' : 1 ,
432
448
'stream' : {'stream_id' : 1 , 'stream_name' : None }}),
449
+ (SERVER_URL + '/#narrow/pm-with/1,2-pm/near/1' ,
450
+ {'narrow' : 'pm-with' , 'message_id' : 1 ,
451
+ 'pm_with' : {'type' : Literal ['pm' ], 'recipient_ids' : [1 , 2 ]}}),
433
452
(SERVER_URL + '/#narrow/foo' ,
434
453
{}),
435
454
(SERVER_URL + '/#narrow/stream/' ,
@@ -447,6 +466,7 @@ def test__decode_message_id(self, message_id, expected_return_value):
447
466
'topic_narrow_link' ,
448
467
'stream_near_narrow_link' ,
449
468
'topic_near_narrow_link' ,
469
+ 'pm_near_narrow_link' ,
450
470
'invalid_narrow_link_1' ,
451
471
'invalid_narrow_link_2' ,
452
472
'invalid_narrow_link_3' ,
@@ -629,44 +649,62 @@ def test__validate_and_patch_stream_data(self, stream_dict, parsed_link,
629
649
'parsed_link' ,
630
650
'narrow_to_stream_called' ,
631
651
'narrow_to_topic_called' ,
652
+ 'narrow_to_user_called' ,
632
653
],
633
654
[
634
655
({'narrow' : 'stream' ,
635
656
'stream' : {'stream_id' : 1 , 'stream_name' : 'Stream 1' }},
636
657
True ,
658
+ False ,
637
659
False ),
638
660
({'narrow' : 'stream:topic' , 'topic_name' : 'Foo' ,
639
661
'stream' : {'stream_id' : 1 , 'stream_name' : 'Stream 1' }},
640
662
False ,
641
- True ),
663
+ True ,
664
+ False ),
642
665
({'narrow' : 'stream:near' , 'message_id' : 1 ,
643
666
'stream' : {'stream_id' : 1 , 'stream_name' : 'Stream 1' }},
644
667
True ,
668
+ False ,
645
669
False ),
646
670
({'narrow' : 'stream:topic:near' , 'topic_name' : 'Foo' ,
647
671
'message_id' : 1 ,
648
672
'stream' : {'stream_id' : 1 , 'stream_name' : 'Stream 1' }},
649
673
False ,
674
+ True ,
675
+ False ),
676
+ ({'narrow' : 'pm-with' , 'message_id' : 1 ,
677
+ 'pm_with' : {'type' : Literal ['pm' ], 'recipient_ids' : [1 , 2 ]}},
678
+ False ,
679
+ False ,
650
680
True ),
651
681
],
652
682
ids = [
653
683
'stream_narrow' ,
654
684
'topic_narrow' ,
655
685
'stream_near_narrow' ,
656
686
'topic_near_narrow' ,
687
+ 'pm_near_narrow' ,
657
688
]
658
689
)
659
690
def test__switch_narrow_to (self , parsed_link , narrow_to_stream_called ,
660
- narrow_to_topic_called ,
691
+ narrow_to_topic_called , narrow_to_user_called
661
692
):
662
693
mocked_button = self .message_link_button ()
694
+ # For PM narrow switch
695
+ mocked_button .model .user_id_email_dict = {
696
+
697
+
698
+ }
663
699
664
700
mocked_button ._switch_narrow_to (parsed_link )
665
701
666
702
assert (mocked_button .controller .narrow_to_stream .called
667
703
== narrow_to_stream_called )
668
704
assert (mocked_button .controller .narrow_to_topic .called
669
705
== narrow_to_topic_called )
706
+ assert (mocked_button .controller .narrow_to_user .called
707
+ == narrow_to_user_called )
670
708
671
709
@pytest .mark .parametrize (['error' , 'set_footer_text_called' ,
672
710
'_switch_narrow_to_called' ,
0 commit comments