@@ -1633,42 +1633,128 @@ def set_from_list_of_dict(data):
1633
1633
update_left_panel .assert_called_once_with ()
1634
1634
model .controller .update_screen .assert_called_once_with ()
1635
1635
1636
- @pytest .mark .parametrize ('event, expected_subscribers' , [
1637
- ({'op' : 'peer_add' , 'stream_id' : 99 , 'user_id' : 12 }, [1001 , 11 , 12 ]),
1638
- ({'op' : 'peer_remove' , 'stream_id' : 2 , 'user_id' : 12 }, [1001 , 11 ]),
1636
+ @pytest .mark .parametrize (['event' , 'feature_level' ,
1637
+ 'stream_id' , 'expected_subscribers' ], [
1638
+ ({'op' : 'peer_add' , 'stream_id' : 99 , 'user_id' : 12 }, None ,
1639
+ 99 , [1001 , 11 , 12 ]),
1640
+ ({'op' : 'peer_add' , 'stream_id' : 99 , 'user_id' : 12 }, 34 ,
1641
+ 99 , [1001 , 11 , 12 ]),
1642
+ ({'op' : 'peer_add' , 'stream_ids' : [99 ], 'user_ids' : [12 ]}, 34 ,
1643
+ 99 , [1001 , 11 , 12 ]),
1644
+ ({'op' : 'peer_add' , 'stream_ids' : [99 ], 'user_ids' : [12 ]}, 35 ,
1645
+ 99 , [1001 , 11 , 12 ]),
1646
+ ({'op' : 'peer_remove' , 'stream_id' : 2 , 'user_id' : 12 }, None ,
1647
+ 2 , [1001 , 11 ]),
1648
+ ({'op' : 'peer_remove' , 'stream_id' : 2 , 'user_id' : 12 }, 34 ,
1649
+ 2 , [1001 , 11 ]),
1650
+ ({'op' : 'peer_remove' , 'stream_ids' : [2 ], 'user_ids' : [12 ]}, 34 ,
1651
+ 2 , [1001 , 11 ]),
1652
+ ({'op' : 'peer_remove' , 'stream_ids' : [2 ], 'user_ids' : [12 ]}, 35 ,
1653
+ 2 , [1001 , 11 ]),
1639
1654
], ids = [
1640
- 'user_subscribed_to_stream' ,
1641
- 'user_unsubscribed_from_stream' ,
1655
+ 'user_subscribed_to_stream:ZFLNone' ,
1656
+ 'user_subscribed_to_stream:ZFL34' ,
1657
+ 'user_subscribed_to_stream:ZFL34shouldbe35' ,
1658
+ 'user_subscribed_to_stream:ZFL35' ,
1659
+ 'user_unsubscribed_from_stream:ZFLNone' ,
1660
+ 'user_unsubscribed_from_stream:ZFL34' ,
1661
+ 'user_unsubscribed_from_stream:ZFL34shouldbe35' ,
1662
+ 'user_unsubscribed_from_stream:ZFL35' ,
1642
1663
])
1643
1664
def test__handle_subscription_event_subscribers (self , model , mocker ,
1644
- stream_dict , event ,
1665
+ stream_dict ,
1666
+ event , feature_level ,
1667
+ stream_id ,
1645
1668
expected_subscribers ):
1646
1669
event ['type' ] = 'subscription'
1647
1670
1648
1671
model .stream_dict = stream_dict
1672
+ model .server_feature_level = feature_level
1649
1673
1650
1674
model ._handle_subscription_event (event )
1651
1675
1652
- new_subscribers = model .stream_dict [event [ ' stream_id' ] ]['subscribers' ]
1676
+ new_subscribers = model .stream_dict [stream_id ]['subscribers' ]
1653
1677
assert new_subscribers == expected_subscribers
1654
1678
1655
- @pytest .mark .parametrize ('event' , [
1656
- ({'op' : 'peer_add' , 'stream_id' : 462 , 'user_id' : 12 }),
1657
- ({'op' : 'peer_remove' , 'stream_id' : 462 , 'user_id' : 12 }),
1679
+ @pytest .mark .parametrize ('event, feature_level' , [
1680
+ ({'op' : 'peer_add' , 'stream_id' : 462 , 'user_id' : 12 }, 34 ),
1681
+ ({'op' : 'peer_add' , 'stream_ids' : [462 ], 'user_ids' : [12 ]}, 35 ),
1682
+ ({'op' : 'peer_remove' , 'stream_id' : 462 , 'user_id' : 12 }, 34 ),
1683
+ ({'op' : 'peer_remove' , 'stream_ids' : [462 ], 'user_ids' : [12 ]}, 35 ),
1658
1684
], ids = [
1659
1685
'peer_subscribed_to_stream_that_user_is_unsubscribed_to' ,
1686
+ 'peer_subscribed_to_stream_that_user_is_unsubscribed_to:ZFL35+' ,
1660
1687
'peer_unsubscribed_from_stream_that_user_is_unsubscribed_to' ,
1688
+ 'peer_unsubscribed_from_stream_that_user_is_unsubscribed_to:ZFL35+' ,
1661
1689
])
1662
1690
def test__handle_subscription_event_subscribers_to_unsubscribed_streams (
1663
- self , model , mocker , stream_dict , event ):
1691
+ self , model , mocker , stream_dict , event , feature_level ):
1664
1692
event ['type' ] = 'subscription'
1665
1693
1666
1694
model .stream_dict = deepcopy (stream_dict )
1695
+ model .server_feature_level = feature_level
1667
1696
1668
1697
model ._handle_subscription_event (event )
1669
1698
1670
1699
assert model .stream_dict == stream_dict
1671
1700
1701
+ # NOTE: This only applies to feature level 34/35+
1702
+ @pytest .mark .parametrize (['event' , 'feature_level' ,
1703
+ 'expected_subscribers' ], [
1704
+ ({'op' : 'peer_add' , 'user_ids' : [13 , 14 ]}, 34 , [1001 , 11 , 12 , 13 , 14 ]),
1705
+ ({'op' : 'peer_add' , 'user_ids' : [13 , 14 ]}, 35 , [1001 , 11 , 12 , 13 , 14 ]),
1706
+ ({'op' : 'peer_remove' , 'user_ids' : [12 , 11 ]}, 34 , [1001 ]),
1707
+ ({'op' : 'peer_remove' , 'user_ids' : [12 , 11 ]}, 35 , [1001 ]),
1708
+ ], ids = [
1709
+ 'users_subscribed_to_stream:ZFL34shouldbe35' ,
1710
+ 'users_subscribed_to_stream:ZFL35' ,
1711
+ 'users_unsubscribed_from_stream:ZFL34shouldbe35' ,
1712
+ 'users_unsubscribed_from_stream:ZFL35' ,
1713
+ ])
1714
+ def test__handle_subscription_event_subscribers_multiple_users_one_stream (
1715
+ self , model , mocker , stream_dict , event , feature_level ,
1716
+ expected_subscribers
1717
+ ):
1718
+ event ['type' ] = 'subscription'
1719
+ event ['stream_ids' ] = stream_ids = [2 ]
1720
+
1721
+ model .stream_dict = stream_dict
1722
+ model .server_feature_level = feature_level
1723
+
1724
+ model ._handle_subscription_event (event )
1725
+
1726
+ new_subscribers = model .stream_dict [stream_ids [0 ]]['subscribers' ]
1727
+ assert new_subscribers == expected_subscribers
1728
+
1729
+ # NOTE: This only applies to feature level 34/35+
1730
+ @pytest .mark .parametrize (['event' , 'feature_level' ,
1731
+ 'expected_subscribers' ], [
1732
+ ({'op' : 'peer_add' , 'user_ids' : [13 ]}, 34 , [1001 , 11 , 12 , 13 ]),
1733
+ ({'op' : 'peer_add' , 'user_ids' : [13 ]}, 35 , [1001 , 11 , 12 , 13 ]),
1734
+ ({'op' : 'peer_remove' , 'user_ids' : [12 ]}, 34 , [1001 , 11 ]),
1735
+ ({'op' : 'peer_remove' , 'user_ids' : [12 ]}, 35 , [1001 , 11 ]),
1736
+ ], ids = [
1737
+ 'user_subscribed_to_streams:ZFL34shouldbe35' ,
1738
+ 'user_subscribed_to_streams:ZFL35' ,
1739
+ 'user_unsubscribed_from_streams:ZFL34shouldbe35' ,
1740
+ 'user_unsubscribed_from_streams:ZFL35' ,
1741
+ ])
1742
+ def test__handle_subscription_event_subscribers_one_user_multiple_streams (
1743
+ self , model , mocker , stream_dict , event , feature_level ,
1744
+ expected_subscribers
1745
+ ):
1746
+ event ['type' ] = 'subscription'
1747
+ event ['stream_ids' ] = stream_ids = [1 , 2 ]
1748
+
1749
+ model .stream_dict = stream_dict
1750
+ model .server_feature_level = feature_level
1751
+
1752
+ model ._handle_subscription_event (event )
1753
+
1754
+ for stream_id in stream_ids :
1755
+ new_subscribers = model .stream_dict [stream_id ]['subscribers' ]
1756
+ assert new_subscribers == expected_subscribers
1757
+
1672
1758
@pytest .mark .parametrize ('muted_streams, stream_id, is_muted' , [
1673
1759
({1 }, 1 , True ),
1674
1760
({1 }, 2 , False ),
0 commit comments