Mercurial > public > sg101
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 ]) |