def test_do_catch_up_users(self) -> None: stream = 'Verona' hamlet = self.example_user('hamlet') users = [ self.example_user('iago'), self.example_user('cordelia'), ] all_users = [*users, hamlet] for user in all_users: self.subscribe(user, stream) with mock.patch('logging.info'): do_soft_deactivate_users(users) for user in users: self.assertTrue(user.long_term_idle) message_id = self.send_stream_message(hamlet, stream, 'Hello world!') already_received = UserMessage.objects.filter( message_id=message_id).count() with mock.patch('logging.info'): do_catch_up_soft_deactivated_users(users) catch_up_received = UserMessage.objects.filter( message_id=message_id).count() self.assertEqual(already_received + len(users), catch_up_received) for user in users: user.refresh_from_db() self.assertTrue(user.long_term_idle) self.assertEqual(user.last_active_message_id, message_id)
def test_do_catch_up_users(self) -> None: stream = "Verona" hamlet = self.example_user("hamlet") users = [ self.example_user("iago"), self.example_user("cordelia"), ] all_users = [*users, hamlet] for user in all_users: self.subscribe(user, stream) with self.assertLogs(logger_string, level="INFO") as m: do_soft_deactivate_users(users) log_output = [] for user in users: log_output.append( f"INFO:{logger_string}:Soft deactivated user {user.id}") log_output.append( f"INFO:{logger_string}:Soft-deactivated batch of {len(users[:100])} users; {len(users[100:])} remain to process" ) self.assertEqual(m.output, log_output) for user in users: self.assertTrue(user.long_term_idle) message_id = self.send_stream_message(hamlet, stream, "Hello world!") already_received = UserMessage.objects.filter( message_id=message_id).count() with self.assertLogs(logger_string, level="INFO") as m: do_catch_up_soft_deactivated_users(users) self.assertEqual(m.output, [ f"INFO:{logger_string}:Caught up {len(users)} soft-deactivated users" ]) catch_up_received = UserMessage.objects.filter( message_id=message_id).count() self.assertEqual(already_received + len(users), catch_up_received) for user in users: user.refresh_from_db() self.assertTrue(user.long_term_idle) self.assertEqual(user.last_active_message_id, message_id)