mirror of
https://github.com/zulip/zulip.git
synced 2025-11-20 22:48:16 +00:00
In this we basically seed a single message for the user which will be soft deactivated by sending a stream message / group PM to ensure that is has at least one UserMessage row, since in real world every human user will always have at least one User Message row.
99 lines
3.1 KiB
Python
99 lines
3.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import absolute_import
|
|
|
|
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):
|
|
# type: () -> 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):
|
|
# type: () -> 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_message(users[0].email,
|
|
[user.email for user in users],
|
|
Recipient.HUDDLE)
|
|
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):
|
|
# type: () -> 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
|
|
)
|
|
realm = get_realm('zulip')
|
|
users_to_deactivate = get_users_for_soft_deactivation(realm, -1)
|
|
|
|
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):
|
|
# type: () -> None
|
|
users = [
|
|
self.example_user('hamlet'),
|
|
self.example_user('iago'),
|
|
self.example_user('cordelia'),
|
|
]
|
|
self.send_message(users[0].email,
|
|
[user.email for user in users],
|
|
Recipient.HUDDLE)
|
|
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)
|