@@ -1154,7 +1154,7 @@ def test_update_reaction_remove_reaction(self, mocker, model, response,
11541154
11551155 def test_update_star_status_no_index (self , mocker , model ):
11561156 model .index = dict (messages = {}) # Not indexed
1157- event = dict (messages = [1 ], flag = 'starred' , all = False )
1157+ event = dict (messages = [1 ], flag = 'starred' , all = False , operation = 'add' )
11581158 mocker .patch ('zulipterminal.model.Model.update_rendered_view' )
11591159
11601160 model .update_message_flag_status (event )
@@ -1221,6 +1221,51 @@ def test_update_star_status(self, mocker, model, event_op,
12211221 assert (model .index ['messages' ][unchanged_id ]['flags' ] ==
12221222 flags_before )
12231223
1224+ @pytest .mark .parametrize ('event_message_ids, indexed_ids' , [
1225+ ([1 ], [1 ]),
1226+ ([1 , 2 ], [1 ]),
1227+ ([1 , 2 ], [1 , 2 ]),
1228+ ([1 ], [1 , 2 ]),
1229+ ([], [1 , 2 ]),
1230+ ([1 , 2 ], []),
1231+ ])
1232+ @pytest .mark .parametrize ('event_op, flags_before, flags_after' , [
1233+ ('add' , [], ['read' ]),
1234+ ('add' , ['read' ], ['read' ]),
1235+ ('add' , ['starred' ], ['starred' , 'read' ]),
1236+ ('add' , ['read' , 'starred' ], ['read' , 'starred' ]),
1237+ ])
1238+ def test_update_read_status (self , mocker , model , event_op ,
1239+ event_message_ids , indexed_ids ,
1240+ flags_before , flags_after ):
1241+ model .index = dict (messages = {msg_id : {'flags' : flags_before }
1242+ for msg_id in indexed_ids })
1243+ event = {
1244+ 'messages' : event_message_ids ,
1245+ 'type' : 'update_message_flags' ,
1246+ 'flag' : 'read' ,
1247+ 'operation' : 'add' ,
1248+ 'all' : False ,
1249+ }
1250+
1251+ mocker .patch ('zulipterminal.model.Model.update_rendered_view' )
1252+ set_count = mocker .patch ('zulipterminal.model.set_count' )
1253+
1254+ model .update_message_flag_status (event )
1255+
1256+ changed_ids = set (indexed_ids ) & set (event_message_ids )
1257+ for changed_id in changed_ids :
1258+ assert model .index ['messages' ][changed_id ]['flags' ] == flags_after
1259+ (model .update_rendered_view .
1260+ has_calls ([mocker .call (changed_id ) for changed_id in changed_ids ]))
1261+
1262+ for unchanged_id in (set (indexed_ids ) - set (event_message_ids )):
1263+ assert (model .index ['messages' ][unchanged_id ]['flags' ] ==
1264+ flags_before )
1265+
1266+ set_count .assert_called_once_with (list (changed_ids ),
1267+ self .controller , - 1 )
1268+
12241269 @pytest .mark .parametrize ('narrow, event, called' , [
12251270 # Not in PM Narrow
12261271 ([], {}, False ),
0 commit comments