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