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.

76 lines
2.8 KiB

  1. # -*- coding: utf-8 -*-
  2. #
  3. #
  4. # Authors: Guewen Baconnier
  5. # Copyright 2015 Camptocamp SA
  6. #
  7. # This program is free software: you can redistribute it and/or modify
  8. # it under the terms of the GNU Affero General Public License as
  9. # published by the Free Software Foundation, either version 3 of the
  10. # License, or (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # GNU Affero General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU Affero General Public License
  18. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  19. #
  20. #
  21. from openerp.tests import common
  22. class TestChangesetFieldRule(common.TransactionCase):
  23. def setUp(self):
  24. super(TestChangesetFieldRule, self).setUp()
  25. self.partner_model_id = self.env.ref('base.model_res_partner').id
  26. self.field_name = self.env.ref('base.field_res_partner_name')
  27. self.field_street = self.env.ref('base.field_res_partner_street')
  28. def test_get_rules(self):
  29. ChangesetFieldRule = self.env['changeset.field.rule']
  30. ChangesetFieldRule.search([]).unlink()
  31. rule1 = ChangesetFieldRule.create({
  32. 'model_id': self.partner_model_id,
  33. 'field_id': self.field_name.id,
  34. 'action': 'validate',
  35. })
  36. rule2 = ChangesetFieldRule.create({
  37. 'model_id': self.partner_model_id,
  38. 'field_id': self.field_street.id,
  39. 'action': 'never',
  40. })
  41. get_rules = ChangesetFieldRule.get_rules('res.partner')
  42. self.assertEqual(get_rules, {'name': rule1, 'street': rule2})
  43. def test_get_rules_cache(self):
  44. ChangesetFieldRule = self.env['changeset.field.rule']
  45. ChangesetFieldRule.search([]).unlink()
  46. rule = ChangesetFieldRule.create({
  47. 'model_id': self.partner_model_id,
  48. 'field_id': self.field_name.id,
  49. 'action': 'validate',
  50. })
  51. self.assertEqual(
  52. ChangesetFieldRule.get_rules('res.partner')['name'].action,
  53. 'validate',
  54. )
  55. # Write on cursor to bypass the cache invalidation for the
  56. # matter of the test
  57. self.env.cr.execute("UPDATE changeset_field_rule "
  58. "SET action = 'never' "
  59. "WHERE id = %s", (rule.id,))
  60. self.assertEqual(
  61. ChangesetFieldRule.get_rules('res.partner')['name'].action,
  62. 'validate',
  63. )
  64. rule.action = 'auto'
  65. self.assertEqual(
  66. ChangesetFieldRule.get_rules('res.partner')['name'].action,
  67. 'auto',
  68. )
  69. rule.unlink()
  70. self.assertFalse(ChangesetFieldRule.get_rules('res.partner'))