diff --git a/queue_job/models/queue_job.py b/queue_job/models/queue_job.py index 2479ff374c..53a7070d57 100644 --- a/queue_job/models/queue_job.py +++ b/queue_job/models/queue_job.py @@ -304,8 +304,8 @@ class JobChannel(models.Model): @api.depends('name', 'parent_id.complete_name') def _compute_complete_name(self): for record in self: - # if not record.name: - # return # new record + if not record.name: + continue # new record channel = record parts = [channel.name] while channel.parent_id: diff --git a/queue_job/readme/HISTORY.rst b/queue_job/readme/HISTORY.rst index 41776196e3..ac9ae92a43 100644 --- a/queue_job/readme/HISTORY.rst +++ b/queue_job/readme/HISTORY.rst @@ -14,6 +14,8 @@ Next * [ADD] Default "related action" for jobs, opening a form or list view (when the job is linked to respectively one record on several). (`#46 `_) +* [FIX] Error when creating a job channel manually + (`#96 `_) 11.0.1.1.0 (2018-05-25) ~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/queue_job/tests/__init__.py b/queue_job/tests/__init__.py index 5b16170b28..75f3a5536c 100644 --- a/queue_job/tests/__init__.py +++ b/queue_job/tests/__init__.py @@ -1,3 +1,4 @@ from . import test_runner_channels from . import test_runner_runner from . import test_json_field +from . import test_model_job_channel diff --git a/queue_job/tests/test_model_job_channel.py b/queue_job/tests/test_model_job_channel.py new file mode 100644 index 0000000000..522fe84b33 --- /dev/null +++ b/queue_job/tests/test_model_job_channel.py @@ -0,0 +1,59 @@ +# copyright 2018 Camptocamp +# license agpl-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +from psycopg2 import IntegrityError + +import odoo + +from odoo.tests import common + + +class TestJobChannel(common.TransactionCase): + + def setUp(self): + super(TestJobChannel, self).setUp() + self.Channel = self.env['queue.job.channel'] + self.root_channel = self.Channel.search( + [('name', '=', 'root')] + ) + + def test_channel_new(self): + channel = self.Channel.new() + self.assertFalse(channel.name) + self.assertFalse(channel.complete_name) + + def test_channel_create(self): + channel = self.Channel.create({ + 'name': 'sub', + 'parent_id': self.root_channel.id, + }) + self.assertEqual(channel.name, 'sub') + self.assertEqual(channel.complete_name, 'root.sub') + channel2 = self.Channel.create({ + 'name': 'sub', + 'parent_id': channel.id, + }) + self.assertEqual(channel2.name, 'sub') + self.assertEqual(channel2.complete_name, 'root.sub.sub') + + @odoo.tools.mute_logger('odoo.sql_db') + def test_channel_complete_name_uniq(self): + channel = self.Channel.create({ + 'name': 'sub', + 'parent_id': self.root_channel.id, + }) + self.assertEqual(channel.name, 'sub') + self.assertEqual(channel.complete_name, 'root.sub') + + with self.assertRaises(IntegrityError): + self.Channel.create({ + 'name': 'sub', + 'parent_id': self.root_channel.id, + }) + + def test_channel_name_get(self): + channel = self.Channel.create({ + 'name': 'sub', + 'parent_id': self.root_channel.id, + }) + self.assertEqual(channel.name_get(), [(channel.id, 'root.sub')])