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.

86 lines
3.0 KiB

  1. # -*- coding: utf-8 -*-
  2. # Copyright 2016-2017 LasLabs Inc.
  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].with_context(todo=[])
  13. model._prepare_setup()
  14. model._setup_base(partial=False)
  15. model._setup_fields(partial=False)
  16. model._setup_complete()
  17. model._auto_init()
  18. model.init()
  19. model._auto_end()
  20. return model
  21. def setUp(self):
  22. super(TestBaseKanbanAbstract, self).setUp()
  23. self.registry.enter_test_mode()
  24. self.old_cursor = self.cr
  25. self.cr = self.registry.cursor()
  26. self.env = api.Environment(self.cr, self.uid, {})
  27. self.test_model = self._init_test_model(BaseKanbanAbstractTester)
  28. test_model_record = self.env['ir.model'].search([
  29. ('name', '=', self.test_model._name),
  30. ])
  31. self.test_stage = self.env['base.kanban.stage'].create({
  32. 'name': 'Test Stage',
  33. 'res_model_id': test_model_record.id,
  34. 'sequence': 2,
  35. })
  36. self.test_stage_2 = self.env['base.kanban.stage'].create({
  37. 'name': 'Test Stage 2',
  38. 'res_model_id': test_model_record.id,
  39. 'sequence': 1,
  40. })
  41. def tearDown(self):
  42. self.registry.leave_test_mode()
  43. self.registry[self.test_model._name]._abstract = True
  44. self.registry[self.test_model._name]._auto = False
  45. self.cr = self.old_cursor
  46. self.env = api.Environment(self.cr, self.uid, {})
  47. super(TestBaseKanbanAbstract, self).tearDown()
  48. def test_default_stage_id_no_stages(self):
  49. """It should return empty recordset when model has no stages"""
  50. self.env['base.kanban.stage'].search([
  51. ('res_model_id.model', '=', self.test_model._name),
  52. ]).unlink()
  53. result = self.test_model._default_stage_id()
  54. self.assertEqual(result, self.env['base.kanban.stage'])
  55. def test_default_stage_id_available_stages(self):
  56. """It should return lowest sequence stage when model has stages"""
  57. result = self.test_model._default_stage_id()
  58. self.assertEqual(result, self.test_stage_2)
  59. def test_read_group_stage_ids(self):
  60. """It should return all corresponding stages in requested sort order"""
  61. result = self.test_model._read_group_stage_ids(
  62. self.env['base.kanban.stage'], None, 'id'
  63. )
  64. expected = self.env['base.kanban.stage'].search(
  65. [('res_model_id.model', '=', self.test_model._name)],
  66. order='id',
  67. )
  68. self.assertEqual(result[0], expected[0])
  69. self.assertEqual(result[1], expected[1])