You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
3.1 KiB

  1. # Copyright 2016-2017 LasLabs Inc.
  2. # Copyright 2019 Eficent Business and IT Consulting Services S.L.
  3. # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
  4. from odoo import api, models
  5. from odoo.tests.common import TransactionCase
  6. class BaseKanbanAbstractTester(models.Model):
  7. _name = 'base.kanban.abstract.tester'
  8. _inherit = 'base.kanban.abstract'
  9. class TestBaseKanbanAbstract(TransactionCase):
  10. def _init_test_model(self, model_cls):
  11. model_cls._build_model(self.registry, self.cr)
  12. model = self.env[model_cls._name]
  13. # setup_models():
  14. model._prepare_setup()
  15. model._setup_base()
  16. model._setup_fields()
  17. # init_models():
  18. model._setup_complete()
  19. model._auto_init()
  20. model.init()
  21. while self.registry._post_init_queue:
  22. func = self.registry._post_init_queue.popleft()
  23. func()
  24. return model
  25. def setUp(self):
  26. super(TestBaseKanbanAbstract, self).setUp()
  27. self.registry.enter_test_mode(self.cr)
  28. self.old_cursor = self.cr
  29. self.cr = self.registry.cursor()
  30. self.env = api.Environment(self.cr, self.uid, {})
  31. self.test_model = self._init_test_model(BaseKanbanAbstractTester)
  32. test_model_record = self.env['ir.model'].search([
  33. ('name', '=', self.test_model._name),
  34. ], limit=1)
  35. self.test_stage = self.env['base.kanban.stage'].create({
  36. 'name': 'Test Stage',
  37. 'res_model_id': test_model_record.id,
  38. 'sequence': 2,
  39. })
  40. self.test_stage_2 = self.env['base.kanban.stage'].create({
  41. 'name': 'Test Stage 2',
  42. 'res_model_id': test_model_record.id,
  43. 'sequence': 1,
  44. })
  45. def tearDown(self):
  46. self.registry.leave_test_mode()
  47. self.registry[self.test_model._name]._abstract = True
  48. self.registry[self.test_model._name]._auto = False
  49. self.cr = self.old_cursor
  50. self.env = api.Environment(self.cr, self.uid, {})
  51. super(TestBaseKanbanAbstract, self).tearDown()
  52. def test_default_stage_id_no_stages(self):
  53. """It should return empty recordset when model has no stages"""
  54. self.env['base.kanban.stage'].search([
  55. ('res_model_id.model', '=', self.test_model._name),
  56. ]).unlink()
  57. result = self.test_model._default_stage_id()
  58. self.assertEqual(result, self.env['base.kanban.stage'])
  59. def test_default_stage_id_available_stages(self):
  60. """It should return lowest sequence stage when model has stages"""
  61. result = self.test_model._default_stage_id()
  62. self.assertEqual(result, self.test_stage_2)
  63. def test_read_group_stage_ids(self):
  64. """It should return all corresponding stages in requested sort order"""
  65. result = self.test_model._read_group_stage_ids(
  66. self.env['base.kanban.stage'], None, 'id'
  67. )
  68. expected = self.env['base.kanban.stage'].search(
  69. [('res_model_id.model', '=', self.test_model._name)],
  70. order='id',
  71. )
  72. self.assertEqual(result[0], expected[0])
  73. self.assertEqual(result[1], expected[1])