Skip to content

Commit 4db7635

Browse files
committed
[IMP] test_queue_job: add test for error_handler
1 parent 9d47e18 commit 4db7635

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

test_queue_job/data/queue_job_function_data.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<field name="model_id" ref="test_queue_job.model_test_queue_job" />
44
<field name="method">testing_method</field>
55
<field name="related_action" eval='{"func_name": "testing_related_method"}' />
6+
<field name="error_handler" eval='{"func_name": "testing_error_handler"}' />
67
</record>
78
<record
89
id="job_function_test_queue_job_job_with_retry_pattern"

test_queue_job/models/test_models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ def testing_related__url(self, **kwargs):
2929
"url": kwargs["url"].format(subject=subject),
3030
}
3131

32+
def testing_error_handler(self, **kwargs):
33+
return None
34+
3235

3336
class ModelTestQueueJob(models.Model):
3437

test_queue_job/tests/test_job.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@
22
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html)
33

44
import hashlib
5+
import logging
56
from datetime import datetime, timedelta
67
from unittest import mock
8+
from unittest.mock import patch
79

810
import odoo.tests.common as common
911

1012
from odoo.addons.queue_job import identity_exact
13+
from odoo.addons.queue_job.controllers.main import RunJobController
1114
from odoo.addons.queue_job.delay import DelayableGraph
1215
from odoo.addons.queue_job.exception import (
1316
FailedJobError,
@@ -25,9 +28,12 @@
2528
WAIT_DEPENDENCIES,
2629
Job,
2730
)
31+
from odoo.addons.queue_job.tests.common import trap_jobs
2832

2933
from .common import JobCommonCase
3034

35+
_logger = logging.getLogger(__name__)
36+
3137

3238
class TestJobsOnTestingMethod(JobCommonCase):
3339
"""Test Job"""
@@ -383,6 +389,25 @@ def test_job_identity_key_func_exact(self):
383389
job1 = Job.load(self.env, test_job_1.uuid)
384390
self.assertEqual(job1.identity_key, expected_key)
385391

392+
def test_failed_job_perform(self):
393+
with trap_jobs() as trap:
394+
model = self.env["test.queue.job"]
395+
job = model.with_delay(priority=1, max_retries=1).testing_method()
396+
trap.assert_jobs_count(1)
397+
with patch.object(type(job), "perform", side_effect=IOError), patch(
398+
"odoo.sql_db.Cursor.commit", return_value=None
399+
): # avoid odoo.sql_db: bad query: ROLLBACK TO SAVEPOINT test_0
400+
controller = RunJobController()
401+
try:
402+
controller._try_perform_job(self.env, job)
403+
with patch(
404+
"odoo.addons.test_queue_job.models.test_models.QueueJob"
405+
".testing_error_handler"
406+
) as patched:
407+
patched.assert_called_once()
408+
except Exception:
409+
_logger.info("Job fails")
410+
386411

387412
class TestJobs(JobCommonCase):
388413
"""Test jobs on other methods or with different job configuration"""

0 commit comments

Comments
 (0)