bgneal@1213: """ bgneal@1213: Tests for accounts' stats module. bgneal@1213: bgneal@1213: """ bgneal@1213: from django.contrib.auth.models import User bgneal@1213: from django.test import TestCase bgneal@1213: from mock import call, patch, Mock bgneal@1213: bgneal@1213: import accounts.stats bgneal@1213: bgneal@1213: bgneal@1213: class AccountStatsTestCase(TestCase): bgneal@1213: fixtures = ['accounts.json'] bgneal@1213: bgneal@1213: @patch('accounts.tasks.user_stats_task') bgneal@1213: def test_on_user_save_created(self, task_mock): bgneal@1213: user = User.objects.get(pk=1) bgneal@1213: kwargs = { bgneal@1213: 'created': True, bgneal@1213: 'instance': user, bgneal@1213: } bgneal@1213: mock_sender = Mock() bgneal@1213: accounts.stats.on_user_save(mock_sender, **kwargs) bgneal@1213: self.assertEqual(task_mock.mock_calls, [ bgneal@1213: call.delay(1), bgneal@1213: ]) bgneal@1213: bgneal@1213: @patch('accounts.tasks.user_stats_task') bgneal@1213: def test_on_user_save_updated(self, task_mock): bgneal@1213: user = User.objects.get(pk=1) bgneal@1213: kwargs = { bgneal@1213: 'created': False, bgneal@1213: 'instance': user, bgneal@1213: } bgneal@1213: mock_sender = Mock() bgneal@1213: accounts.stats.on_user_save(mock_sender, **kwargs) bgneal@1213: self.assertEqual(task_mock.mock_calls, []) bgneal@1213: bgneal@1213: @patch('accounts.stats.get_redis_connection') bgneal@1213: def test_update_user_status(self, connection_mock): bgneal@1213: redis_mock = Mock() bgneal@1213: connection_mock.return_value = redis_mock bgneal@1213: redis_mock.incr.return_value = 1 bgneal@1213: accounts.stats.update_user_stats(1) bgneal@1213: self.assertEqual(redis_mock.mock_calls, [ bgneal@1213: call.incr('accounts:user_count'), bgneal@1213: call.set('accounts:user_count', 1), bgneal@1213: call.pipeline(), bgneal@1213: call.pipeline().lpush('accounts:new_users', u'Gremmie'), bgneal@1213: call.pipeline().ltrim('accounts:new_users', 0, 9), bgneal@1213: call.pipeline().execute(), bgneal@1213: ]) bgneal@1213: bgneal@1213: @patch('accounts.stats.get_redis_connection') bgneal@1213: def test_get_user_count(self, connection_mock): bgneal@1213: redis_mock = Mock() bgneal@1213: connection_mock.return_value = redis_mock bgneal@1213: redis_mock.get.return_value = 42 bgneal@1213: result = accounts.stats.get_user_count() bgneal@1213: self.assertEqual(result, 42) bgneal@1213: self.assertEqual(redis_mock.mock_calls, [ bgneal@1213: call.get('accounts:user_count'), bgneal@1213: ]) bgneal@1213: bgneal@1213: @patch('accounts.stats.get_redis_connection') bgneal@1213: def test_get_new_users(self, connection_mock): bgneal@1213: redis_mock = Mock() bgneal@1213: connection_mock.return_value = redis_mock bgneal@1213: redis_mock.lrange.return_value = ['Gremmie', 'pjmoto'] bgneal@1213: result = accounts.stats.get_new_users() bgneal@1213: self.assertEqual(result, ['Gremmie', 'pjmoto']) bgneal@1213: self.assertEqual(redis_mock.mock_calls, [ bgneal@1213: call.lrange('accounts:new_users', 0, -1), bgneal@1213: ]) bgneal@1213: bgneal@1213: @patch('accounts.stats.get_redis_connection') bgneal@1213: def test_get_new_users(self, connection_mock): bgneal@1213: redis_mock = Mock() bgneal@1213: connection_mock.return_value = redis_mock bgneal@1213: redis_mock.get.return_value = 42 bgneal@1213: redis_mock.lrange.return_value = ['Gremmie', 'pjmoto'] bgneal@1213: bgneal@1213: result = accounts.stats.get_user_stats() bgneal@1213: bgneal@1213: self.assertEqual(result, (42, ['Gremmie', 'pjmoto'])) bgneal@1213: self.assertEqual(redis_mock.mock_calls, [ bgneal@1213: call.get('accounts:user_count'), bgneal@1213: call.lrange('accounts:new_users', 0, -1), bgneal@1213: ])