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.

85 lines
3.0 KiB

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