summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/gamification/tests/__init__.py1
-rw-r--r--addons/gamification/tests/test_karma_tracking.py120
-rw-r--r--addons/gamification/tests/test_recompute_rank.py128
3 files changed, 120 insertions, 129 deletions
diff --git a/addons/gamification/tests/__init__.py b/addons/gamification/tests/__init__.py
index 963887eb670..0017420114f 100644
--- a/addons/gamification/tests/__init__.py
+++ b/addons/gamification/tests/__init__.py
@@ -2,5 +2,4 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import test_challenge
-from . import test_recompute_rank
from . import test_karma_tracking
diff --git a/addons/gamification/tests/test_karma_tracking.py b/addons/gamification/tests/test_karma_tracking.py
index 145b745b436..3bbd904a86b 100644
--- a/addons/gamification/tests/test_karma_tracking.py
+++ b/addons/gamification/tests/test_karma_tracking.py
@@ -193,3 +193,123 @@ class TestKarmaTrackingCommon(common.SavepointCase):
self.assertEqual(user.karma_tracking_ids[1].new_value, 60)
self.assertEqual(user.karma_tracking_ids[0].old_value, 0)
self.assertEqual(user.karma_tracking_ids[0].new_value, 32)
+
+
+class TestComputeRankCommon(common.SavepointCase):
+
+ @classmethod
+ def setUpClass(cls):
+ super(TestComputeRankCommon, cls).setUpClass()
+
+ def _patched_send_mail(*args, **kwargs):
+ pass
+
+ patch_email = patch('odoo.addons.mail.models.mail_template.MailTemplate.send_mail', _patched_send_mail)
+ patch_email.start()
+
+ cls.users = cls.env['res.users']
+ for k in range(-5, 1030, 30):
+ cls.users += cls.env['res.users'].with_context(no_reset_password=True, mail_create_nosubscribe=True).create({
+ 'name': str(k),
+ 'login': "test_recompute_rank_%s" % k,
+ 'karma': k,
+ })
+
+ cls.env['gamification.karma.rank'].search([]).unlink()
+
+ cls.rank_1 = cls.env['gamification.karma.rank'].create({
+ 'name': 'rank 1',
+ 'karma_min': 0,
+ })
+
+ cls.rank_2 = cls.env['gamification.karma.rank'].create({
+ 'name': 'rank 2',
+ 'karma_min': 250,
+ })
+
+ cls.rank_3 = cls.env['gamification.karma.rank'].create({
+ 'name': 'rank 3',
+ 'karma_min': 500,
+ })
+ cls.rank_4 = cls.env['gamification.karma.rank'].create({
+ 'name': 'rank 4',
+ 'karma_min': 1000,
+ })
+
+ patch_email.stop()
+
+ def test_00_initial_compute(self):
+
+ self.assertEqual(len(self.users), 35)
+
+ self.assertEqual(
+ len(self.rank_1.user_ids & self.users),
+ len([u for u in self.users if u.karma >= self.rank_1.karma_min and u.karma < self.rank_2.karma_min])
+ )
+ self.assertEqual(
+ len(self.rank_2.user_ids & self.users),
+ len([u for u in self.users if u.karma >= self.rank_2.karma_min and u.karma < self.rank_3.karma_min])
+ )
+ self.assertEqual(
+ len(self.rank_3.user_ids & self.users),
+ len([u for u in self.users if u.karma >= self.rank_3.karma_min and u.karma < self.rank_4.karma_min])
+ )
+ self.assertEqual(
+ len(self.rank_4.user_ids & self.users),
+ len([u for u in self.users if u.karma >= self.rank_4.karma_min])
+ )
+
+ def test_01_switch_rank(self):
+
+ self.assertEqual(len(self.users), 35)
+
+ self.rank_3.karma_min = 100
+ # rank_1 -> rank_3 -> rank_2 -> rank_4
+
+ self.assertEqual(
+ len(self.rank_1.user_ids & self.users),
+ len([u for u in self.users if u.karma >= self.rank_1.karma_min and u.karma < self.rank_3.karma_min])
+ )
+ self.assertEqual(
+ len(self.rank_3.user_ids & self.users),
+ len([u for u in self.users if u.karma >= self.rank_3.karma_min and u.karma < self.rank_2.karma_min])
+ )
+ self.assertEqual(
+ len(self.rank_2.user_ids & self.users),
+ len([u for u in self.users if u.karma >= self.rank_2.karma_min and u.karma < self.rank_4.karma_min])
+ )
+ self.assertEqual(
+ len(self.rank_4.user_ids & self.users),
+ len([u for u in self.users if u.karma >= self.rank_4.karma_min])
+ )
+
+ def test_02_update_rank_without_switch(self):
+ number_of_users = False
+
+ def _patched_recompute_rank(_self, *args, **kwargs):
+ nonlocal number_of_users
+ number_of_users = len(_self & self.users)
+
+ patch_bulk = patch('odoo.addons.gamification.models.res_users.Users._recompute_rank', _patched_recompute_rank)
+ patch_bulk.start()
+ self.rank_3.karma_min = 700
+ self.assertEqual(number_of_users, 7, "Should just recompute for the 7 users between 500 and 700")
+ patch_bulk.stop()
+
+ def test_03_test_bulk_call(self):
+ self.assertEqual(len(self.users), 35)
+
+ def _patched_check_in_bulk(*args, **kwargs):
+ raise
+
+ patch_bulk = patch('odoo.addons.gamification.models.res_users.Users._recompute_rank_bulk', _patched_check_in_bulk)
+ patch_bulk.start()
+
+ # call on 5 users should not trigger the bulk function
+ self.users[0:5]._recompute_rank()
+
+ # call on 50 users should trigger the bulk function
+ with self.assertRaises(Exception):
+ self.users[0:50]._recompute_rank()
+
+ patch_bulk.stop()
diff --git a/addons/gamification/tests/test_recompute_rank.py b/addons/gamification/tests/test_recompute_rank.py
deleted file mode 100644
index c82fb4759fd..00000000000
--- a/addons/gamification/tests/test_recompute_rank.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from odoo.tests import common
-from unittest.mock import patch
-
-
-class TestComputeRankCommon(common.TransactionCase):
-
- def setUp(self):
- super(TestComputeRankCommon, self).setUp()
-
- def _patched_send_mail(*args, **kwargs):
- pass
-
- self.User = self.env['res.users'].with_context(no_reset_password=True, mail_create_nosubscribe=True)
- self.users = self.User
-
- patch_email = patch('odoo.addons.mail.models.mail_template.MailTemplate.send_mail', _patched_send_mail)
- patch_email.start()
- for k in range(-5, 1030, 30):
- self.users += self.User.create({
- 'name': str(k),
- 'login': "test_recompute_rank_%s" % k,
- 'karma': k,
- })
-
- self.env['gamification.karma.rank'].search([]).unlink()
-
- self.rank_1 = self.env['gamification.karma.rank'].create({
- 'name': 'rank 1',
- 'karma_min': 0,
- })
-
- self.rank_2 = self.env['gamification.karma.rank'].create({
- 'name': 'rank 2',
- 'karma_min': 250,
- })
-
- self.rank_3 = self.env['gamification.karma.rank'].create({
- 'name': 'rank 3',
- 'karma_min': 500,
- })
- self.rank_4 = self.env['gamification.karma.rank'].create({
- 'name': 'rank 4',
- 'karma_min': 1000,
- })
-
- patch_email.stop()
-
-
-class test_recompute(TestComputeRankCommon):
-
- def test_00_initial_compute(self):
-
- self.assertEqual(len(self.users), 35)
-
- self.assertEqual(
- len(self.rank_1.user_ids & self.users),
- len([u for u in self.users if u.karma >= self.rank_1.karma_min and u.karma < self.rank_2.karma_min])
- )
- self.assertEqual(
- len(self.rank_2.user_ids & self.users),
- len([u for u in self.users if u.karma >= self.rank_2.karma_min and u.karma < self.rank_3.karma_min])
- )
- self.assertEqual(
- len(self.rank_3.user_ids & self.users),
- len([u for u in self.users if u.karma >= self.rank_3.karma_min and u.karma < self.rank_4.karma_min])
- )
- self.assertEqual(
- len(self.rank_4.user_ids & self.users),
- len([u for u in self.users if u.karma >= self.rank_4.karma_min])
- )
-
- def test_01_switch_rank(self):
-
- self.assertEqual(len(self.users), 35)
-
- self.rank_3.karma_min = 100
- # rank_1 -> rank_3 -> rank_2 -> rank_4
-
- self.assertEqual(
- len(self.rank_1.user_ids & self.users),
- len([u for u in self.users if u.karma >= self.rank_1.karma_min and u.karma < self.rank_3.karma_min])
- )
- self.assertEqual(
- len(self.rank_3.user_ids & self.users),
- len([u for u in self.users if u.karma >= self.rank_3.karma_min and u.karma < self.rank_2.karma_min])
- )
- self.assertEqual(
- len(self.rank_2.user_ids & self.users),
- len([u for u in self.users if u.karma >= self.rank_2.karma_min and u.karma < self.rank_4.karma_min])
- )
- self.assertEqual(
- len(self.rank_4.user_ids & self.users),
- len([u for u in self.users if u.karma >= self.rank_4.karma_min])
- )
-
- def test_02_update_rank_without_switch(self):
- number_of_users = False
-
- def _patched_recompute_rank(_self, *args, **kwargs):
- nonlocal number_of_users
- number_of_users = len(_self & self.users)
-
- patch_bulk = patch('odoo.addons.gamification.models.res_users.Users._recompute_rank', _patched_recompute_rank)
- patch_bulk.start()
- self.rank_3.karma_min = 700
- self.assertEqual(number_of_users, 7, "Should just recompute for the 7 users between 500 and 700")
- patch_bulk.stop()
-
- def test_03_test_bulk_call(self):
- self.assertEqual(len(self.users), 35)
-
- def _patched_check_in_bulk(*args, **kwargs):
- raise
-
- patch_bulk = patch('odoo.addons.gamification.models.res_users.Users._recompute_rank_bulk', _patched_check_in_bulk)
- patch_bulk.start()
-
- # call on 5 users should not trigger the bulk function
- self.users[0:5]._recompute_rank()
-
- # call on 50 users should trigger the bulk function
- with self.assertRaises(Exception):
- self.users[0:50]._recompute_rank()
-
- patch_bulk.stop()