forked from OCA/queue
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_run_rob_controller.py
More file actions
51 lines (42 loc) · 1.87 KB
/
Copy pathtest_run_rob_controller.py
File metadata and controls
51 lines (42 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from unittest.mock import patch
from odoo.tests.common import TransactionCase
from odoo.tools import mute_logger
from ..controllers.main import RunJobController
from ..exception import JobError
from ..job import Job
class TestRunJobController(TransactionCase):
def setUp(cls):
super().setUp()
def _clean_queue_job():
cls.env["queue.job"].search([]).unlink()
cls.addCleanup(_clean_queue_job)
def test_get_failure_values(self):
method = self.env["res.users"].mapped
job = Job(method)
ctrl = RunJobController()
rslt = ctrl._get_failure_values(job, "info", Exception("zero", "one"))
self.assertEqual(
rslt, {"exc_info": "info", "exc_name": "Exception", "exc_message": "zero"}
)
def test_runjob_success(self):
job = self.env["queue.job"].with_delay()._test_job()
RunJobController._runjob(self.env, job)
self.assertEqual(job.state, "done")
self.assertEqual(job.db_record().state, "done")
def test_runjob_on_fail(self):
function = self.env.ref("queue_job.job_function_queue_job__test_job")
function.on_fail_method = "_test_on_fail"
job = self.env["queue.job"].with_delay()._test_job(failure_rate=1)
with (
self.assertRaises(JobError),
patch(
"odoo.addons.queue_job.models.queue_job.QueueJob._test_on_fail"
) as mocked_hook,
patch("odoo.addons.queue_job.job.Job.in_temporary_env") as mocked_temp_env,
mute_logger("odoo.addons.queue_job.controllers.main"),
):
mocked_temp_env.return_value.__enter__.return_value = self.env
RunJobController._runjob(self.env, job)
self.assertEqual(job.state, "failed")
self.assertEqual(mocked_hook.call_count, 1)