mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 12:03:46 +00:00 
			
		
		
		
	Using user IDs instead of emails is more reliable since users can have arbitrarily complex emails that are hard to encode in a URL. This has led to NoReverseMatch exceptions in the past.
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from unittest import mock
 | |
| 
 | |
| from django.utils.timezone import now as timezone_now
 | |
| 
 | |
| from zerver.lib.test_classes import ZulipTestCase
 | |
| from zerver.lib.test_helpers import queries_captured
 | |
| from zerver.models import Client, UserActivity, UserProfile, flush_per_request_caches
 | |
| 
 | |
| 
 | |
| class ActivityTest(ZulipTestCase):
 | |
|     @mock.patch("stripe.Customer.list", return_value=[])
 | |
|     def test_activity(self, unused_mock: mock.Mock) -> None:
 | |
|         self.login("hamlet")
 | |
|         client, _ = Client.objects.get_or_create(name="website")
 | |
|         query = "/json/messages/flags"
 | |
|         last_visit = timezone_now()
 | |
|         count = 150
 | |
|         for activity_user_profile in UserProfile.objects.all():
 | |
|             UserActivity.objects.get_or_create(
 | |
|                 user_profile=activity_user_profile,
 | |
|                 client=client,
 | |
|                 query=query,
 | |
|                 count=count,
 | |
|                 last_visit=last_visit,
 | |
|             )
 | |
| 
 | |
|         # Fails when not staff
 | |
|         result = self.client_get("/activity")
 | |
|         self.assertEqual(result.status_code, 302)
 | |
| 
 | |
|         user_profile = self.example_user("hamlet")
 | |
|         user_profile.is_staff = True
 | |
|         user_profile.save(update_fields=["is_staff"])
 | |
| 
 | |
|         flush_per_request_caches()
 | |
|         with queries_captured() as queries:
 | |
|             result = self.client_get("/activity")
 | |
|             self.assertEqual(result.status_code, 200)
 | |
| 
 | |
|         self.assert_length(queries, 19)
 | |
| 
 | |
|         flush_per_request_caches()
 | |
|         with queries_captured() as queries:
 | |
|             result = self.client_get("/realm_activity/zulip/")
 | |
|             self.assertEqual(result.status_code, 200)
 | |
| 
 | |
|         self.assert_length(queries, 8)
 | |
| 
 | |
|         iago = self.example_user("iago")
 | |
|         flush_per_request_caches()
 | |
|         with queries_captured() as queries:
 | |
|             result = self.client_get(f"/user_activity/{iago.id}/")
 | |
|             self.assertEqual(result.status_code, 200)
 | |
| 
 | |
|         self.assert_length(queries, 5)
 |