mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# -*- coding: utf-8 -*-
 | 
						|
 | 
						|
from django.utils.timezone import now as timezone_now
 | 
						|
 | 
						|
from zerver.lib.soft_deactivation import (
 | 
						|
    do_soft_deactivate_user,
 | 
						|
    do_soft_deactivate_users,
 | 
						|
    get_users_for_soft_deactivation,
 | 
						|
    do_soft_activate_users
 | 
						|
)
 | 
						|
from zerver.lib.test_classes import ZulipTestCase
 | 
						|
from zerver.models import (
 | 
						|
    Client, UserProfile, UserActivity, get_realm, Recipient
 | 
						|
)
 | 
						|
 | 
						|
class UserSoftDeactivationTests(ZulipTestCase):
 | 
						|
 | 
						|
    def test_do_soft_deactivate_user(self) -> None:
 | 
						|
        user = self.example_user('hamlet')
 | 
						|
        self.assertFalse(user.long_term_idle)
 | 
						|
 | 
						|
        do_soft_deactivate_user(user)
 | 
						|
 | 
						|
        user.refresh_from_db()
 | 
						|
        self.assertTrue(user.long_term_idle)
 | 
						|
 | 
						|
    def test_do_soft_deactivate_users(self) -> None:
 | 
						|
        users = [
 | 
						|
            self.example_user('hamlet'),
 | 
						|
            self.example_user('iago'),
 | 
						|
            self.example_user('cordelia'),
 | 
						|
        ]
 | 
						|
        for user in users:
 | 
						|
            self.assertFalse(user.long_term_idle)
 | 
						|
 | 
						|
        # We are sending this message to ensure that users have at least
 | 
						|
        # one UserMessage row.
 | 
						|
        self.send_huddle_message(users[0].email,
 | 
						|
                                 [user.email for user in users])
 | 
						|
        do_soft_deactivate_users(users)
 | 
						|
 | 
						|
        for user in users:
 | 
						|
            user.refresh_from_db()
 | 
						|
            self.assertTrue(user.long_term_idle)
 | 
						|
 | 
						|
    def test_get_users_for_soft_deactivation(self) -> None:
 | 
						|
        users = [
 | 
						|
            self.example_user('hamlet'),
 | 
						|
            self.example_user('iago'),
 | 
						|
            self.example_user('cordelia'),
 | 
						|
            self.example_user('ZOE'),
 | 
						|
            self.example_user('othello'),
 | 
						|
            self.example_user('prospero'),
 | 
						|
            self.example_user('aaron'),
 | 
						|
        ]
 | 
						|
        client, _ = Client.objects.get_or_create(name='website')
 | 
						|
        query = '/json/users/me/pointer'
 | 
						|
        last_visit = timezone_now()
 | 
						|
        count = 150
 | 
						|
        for user_profile in UserProfile.objects.all():
 | 
						|
            UserActivity.objects.get_or_create(
 | 
						|
                user_profile=user_profile,
 | 
						|
                client=client,
 | 
						|
                query=query,
 | 
						|
                count=count,
 | 
						|
                last_visit=last_visit
 | 
						|
            )
 | 
						|
        filter_kwargs = dict(user_profile__realm=get_realm('zulip'))
 | 
						|
        users_to_deactivate = get_users_for_soft_deactivation(-1, filter_kwargs)
 | 
						|
 | 
						|
        self.assert_length(users_to_deactivate, 7)
 | 
						|
        for user in users_to_deactivate:
 | 
						|
            self.assertTrue(user in users)
 | 
						|
 | 
						|
    def test_do_soft_activate_users(self) -> None:
 | 
						|
        users = [
 | 
						|
            self.example_user('hamlet'),
 | 
						|
            self.example_user('iago'),
 | 
						|
            self.example_user('cordelia'),
 | 
						|
        ]
 | 
						|
        self.send_huddle_message(users[0].email,
 | 
						|
                                 [user.email for user in users])
 | 
						|
        do_soft_deactivate_users(users)
 | 
						|
        for user in users:
 | 
						|
            self.assertTrue(user.long_term_idle)
 | 
						|
 | 
						|
        do_soft_activate_users(users)
 | 
						|
 | 
						|
        for user in users:
 | 
						|
            user.refresh_from_db()
 | 
						|
            self.assertFalse(user.long_term_idle)
 |