mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-19 11:12:02 +02:00
Initial commit: OCA Technical packages (595 packages)
This commit is contained in:
commit
2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions
|
|
@ -0,0 +1,93 @@
|
|||
# Copyright 2024 Akretion (http://www.akretion.com).
|
||||
# @author Florian Mounier <florian.mounier@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo.tests import common
|
||||
|
||||
from odoo.addons.queue_job.delay import Delayable
|
||||
|
||||
|
||||
class TestDelayableSplit(common.BaseCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
class FakeRecordSet(list):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self._name = "recordset"
|
||||
|
||||
def __getitem__(self, key):
|
||||
if isinstance(key, slice):
|
||||
return FakeRecordSet(super().__getitem__(key))
|
||||
return super().__getitem__(key)
|
||||
|
||||
def method(self, arg, kwarg=None):
|
||||
"""Method to be called"""
|
||||
return arg, kwarg
|
||||
|
||||
self.FakeRecordSet = FakeRecordSet
|
||||
|
||||
def test_delayable_split_no_method_call_beforehand(self):
|
||||
dl = Delayable(self.FakeRecordSet(range(20)))
|
||||
with self.assertRaises(ValueError):
|
||||
dl.split(3)
|
||||
|
||||
def test_delayable_split_10_3(self):
|
||||
dl = Delayable(self.FakeRecordSet(range(10)))
|
||||
dl.method("arg", kwarg="kwarg")
|
||||
group = dl.split(3)
|
||||
self.assertEqual(len(group._delayables), 4)
|
||||
delayables = sorted(list(group._delayables), key=lambda x: x.description)
|
||||
self.assertEqual(delayables[0].recordset, self.FakeRecordSet([0, 1, 2]))
|
||||
self.assertEqual(delayables[1].recordset, self.FakeRecordSet([3, 4, 5]))
|
||||
self.assertEqual(delayables[2].recordset, self.FakeRecordSet([6, 7, 8]))
|
||||
self.assertEqual(delayables[3].recordset, self.FakeRecordSet([9]))
|
||||
self.assertEqual(delayables[0].description, "Method to be called (split 1/4)")
|
||||
self.assertEqual(delayables[1].description, "Method to be called (split 2/4)")
|
||||
self.assertEqual(delayables[2].description, "Method to be called (split 3/4)")
|
||||
self.assertEqual(delayables[3].description, "Method to be called (split 4/4)")
|
||||
self.assertNotEqual(delayables[0]._job_method, dl._job_method)
|
||||
self.assertNotEqual(delayables[1]._job_method, dl._job_method)
|
||||
self.assertNotEqual(delayables[2]._job_method, dl._job_method)
|
||||
self.assertNotEqual(delayables[3]._job_method, dl._job_method)
|
||||
self.assertEqual(delayables[0]._job_method.__name__, dl._job_method.__name__)
|
||||
self.assertEqual(delayables[1]._job_method.__name__, dl._job_method.__name__)
|
||||
self.assertEqual(delayables[2]._job_method.__name__, dl._job_method.__name__)
|
||||
self.assertEqual(delayables[3]._job_method.__name__, dl._job_method.__name__)
|
||||
self.assertEqual(delayables[0]._job_args, ("arg",))
|
||||
self.assertEqual(delayables[1]._job_args, ("arg",))
|
||||
self.assertEqual(delayables[2]._job_args, ("arg",))
|
||||
self.assertEqual(delayables[3]._job_args, ("arg",))
|
||||
self.assertEqual(delayables[0]._job_kwargs, {"kwarg": "kwarg"})
|
||||
self.assertEqual(delayables[1]._job_kwargs, {"kwarg": "kwarg"})
|
||||
self.assertEqual(delayables[2]._job_kwargs, {"kwarg": "kwarg"})
|
||||
self.assertEqual(delayables[3]._job_kwargs, {"kwarg": "kwarg"})
|
||||
|
||||
def test_delayable_split_10_5(self):
|
||||
dl = Delayable(self.FakeRecordSet(range(10)))
|
||||
dl.method("arg", kwarg="kwarg")
|
||||
group = dl.split(5)
|
||||
self.assertEqual(len(group._delayables), 2)
|
||||
delayables = sorted(list(group._delayables), key=lambda x: x.description)
|
||||
self.assertEqual(delayables[0].recordset, self.FakeRecordSet([0, 1, 2, 3, 4]))
|
||||
self.assertEqual(delayables[1].recordset, self.FakeRecordSet([5, 6, 7, 8, 9]))
|
||||
self.assertEqual(delayables[0].description, "Method to be called (split 1/2)")
|
||||
self.assertEqual(delayables[1].description, "Method to be called (split 2/2)")
|
||||
|
||||
def test_delayable_split_10_10(self):
|
||||
dl = Delayable(self.FakeRecordSet(range(10)))
|
||||
dl.method("arg", kwarg="kwarg")
|
||||
group = dl.split(10)
|
||||
self.assertEqual(len(group._delayables), 1)
|
||||
delayables = sorted(list(group._delayables), key=lambda x: x.description)
|
||||
self.assertEqual(delayables[0].recordset, self.FakeRecordSet(range(10)))
|
||||
self.assertEqual(delayables[0].description, "Method to be called (split 1/1)")
|
||||
|
||||
def test_delayable_split_10_20(self):
|
||||
dl = Delayable(self.FakeRecordSet(range(10)))
|
||||
dl.method("arg", kwarg="kwarg")
|
||||
group = dl.split(20)
|
||||
self.assertEqual(len(group._delayables), 1)
|
||||
delayables = sorted(list(group._delayables), key=lambda x: x.description)
|
||||
self.assertEqual(delayables[0].recordset, self.FakeRecordSet(range(10)))
|
||||
self.assertEqual(delayables[0].description, "Method to be called (split 1/1)")
|
||||
Loading…
Add table
Add a link
Reference in a new issue