comparison accounts/tests/test_stats.py @ 1213:5e898f91fe36 modernize

Add more unit tests for accounts app.
author Brian Neal <bgneal@gmail.com>
date Sun, 09 Feb 2025 14:31:35 -0600
parents
children
comparison
equal deleted inserted replaced
1212:d18db8bfe17a 1213:5e898f91fe36
1 """
2 Tests for accounts' stats module.
3
4 """
5 from django.contrib.auth.models import User
6 from django.test import TestCase
7 from mock import call, patch, Mock
8
9 import accounts.stats
10
11
12 class AccountStatsTestCase(TestCase):
13 fixtures = ['accounts.json']
14
15 @patch('accounts.tasks.user_stats_task')
16 def test_on_user_save_created(self, task_mock):
17 user = User.objects.get(pk=1)
18 kwargs = {
19 'created': True,
20 'instance': user,
21 }
22 mock_sender = Mock()
23 accounts.stats.on_user_save(mock_sender, **kwargs)
24 self.assertEqual(task_mock.mock_calls, [
25 call.delay(1),
26 ])
27
28 @patch('accounts.tasks.user_stats_task')
29 def test_on_user_save_updated(self, task_mock):
30 user = User.objects.get(pk=1)
31 kwargs = {
32 'created': False,
33 'instance': user,
34 }
35 mock_sender = Mock()
36 accounts.stats.on_user_save(mock_sender, **kwargs)
37 self.assertEqual(task_mock.mock_calls, [])
38
39 @patch('accounts.stats.get_redis_connection')
40 def test_update_user_status(self, connection_mock):
41 redis_mock = Mock()
42 connection_mock.return_value = redis_mock
43 redis_mock.incr.return_value = 1
44 accounts.stats.update_user_stats(1)
45 self.assertEqual(redis_mock.mock_calls, [
46 call.incr('accounts:user_count'),
47 call.set('accounts:user_count', 1),
48 call.pipeline(),
49 call.pipeline().lpush('accounts:new_users', u'Gremmie'),
50 call.pipeline().ltrim('accounts:new_users', 0, 9),
51 call.pipeline().execute(),
52 ])
53
54 @patch('accounts.stats.get_redis_connection')
55 def test_get_user_count(self, connection_mock):
56 redis_mock = Mock()
57 connection_mock.return_value = redis_mock
58 redis_mock.get.return_value = 42
59 result = accounts.stats.get_user_count()
60 self.assertEqual(result, 42)
61 self.assertEqual(redis_mock.mock_calls, [
62 call.get('accounts:user_count'),
63 ])
64
65 @patch('accounts.stats.get_redis_connection')
66 def test_get_new_users(self, connection_mock):
67 redis_mock = Mock()
68 connection_mock.return_value = redis_mock
69 redis_mock.lrange.return_value = ['Gremmie', 'pjmoto']
70 result = accounts.stats.get_new_users()
71 self.assertEqual(result, ['Gremmie', 'pjmoto'])
72 self.assertEqual(redis_mock.mock_calls, [
73 call.lrange('accounts:new_users', 0, -1),
74 ])
75
76 @patch('accounts.stats.get_redis_connection')
77 def test_get_new_users(self, connection_mock):
78 redis_mock = Mock()
79 connection_mock.return_value = redis_mock
80 redis_mock.get.return_value = 42
81 redis_mock.lrange.return_value = ['Gremmie', 'pjmoto']
82
83 result = accounts.stats.get_user_stats()
84
85 self.assertEqual(result, (42, ['Gremmie', 'pjmoto']))
86 self.assertEqual(redis_mock.mock_calls, [
87 call.get('accounts:user_count'),
88 call.lrange('accounts:new_users', 0, -1),
89 ])