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.

109 lines
4.0 KiB

  1. # Copyright 2017-2018 Camptocamp - Simone Orsi
  2. # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
  3. from odoo.tests.common import SavepointCase
  4. class SubtypesCase(SavepointCase):
  5. @classmethod
  6. def setUpClass(cls):
  7. super(SubtypesCase, cls).setUpClass()
  8. user_model = cls.env['res.users'].with_context(
  9. no_reset_password=True, tracking_disable=True)
  10. cls.user1 = user_model.create({
  11. 'name': 'User 1',
  12. 'login': 'testuser1',
  13. 'email': 'testuser1@email.com',
  14. })
  15. cls.user2 = user_model.create({
  16. 'name': 'User 2',
  17. 'login': 'testuser2',
  18. 'email': 'testuser2@email.com',
  19. })
  20. subtype_model = cls.env['mail.message.subtype']
  21. cls.subtype1 = subtype_model.create({'name': 'Type 1'})
  22. cls.subtype2 = subtype_model.create({'name': 'Type 2'})
  23. cls.subtype3 = subtype_model.create({'name': 'Type 3'})
  24. cls.subtype4 = subtype_model.create({'name': 'Type 4'})
  25. def _test_subtypes_rel(self):
  26. # setup:
  27. # t1, t2 enabled
  28. # t3 disabled
  29. # t4 no conf
  30. # enable t1 t2
  31. self.user1._notify_enable_subtype(self.subtype1)
  32. self.user1._notify_enable_subtype(self.subtype2)
  33. # disable t3
  34. self.user1._notify_disable_subtype(self.subtype3)
  35. def test_user_computed_subtype(self):
  36. self._test_subtypes_rel()
  37. # check computed fields
  38. self.assertIn(
  39. self.subtype1, self.user1.enabled_notify_subtype_ids)
  40. self.assertNotIn(
  41. self.subtype1, self.user1.disabled_notify_subtype_ids)
  42. self.assertIn(
  43. self.subtype2, self.user1.enabled_notify_subtype_ids)
  44. self.assertNotIn(
  45. self.subtype2, self.user1.disabled_notify_subtype_ids)
  46. self.assertIn(
  47. self.subtype3, self.user1.disabled_notify_subtype_ids)
  48. self.assertNotIn(
  49. self.subtype3, self.user1.enabled_notify_subtype_ids)
  50. self.assertNotIn(
  51. self.subtype4,
  52. self.user1.enabled_notify_subtype_ids)
  53. self.assertNotIn(
  54. self.subtype4,
  55. self.user1.disabled_notify_subtype_ids)
  56. def test_find_user_by_subtype_incl(self):
  57. self._test_subtypes_rel()
  58. domain = [(
  59. 'enabled_notify_subtype_ids',
  60. 'in', (self.subtype1.id, self.subtype2.id),
  61. )]
  62. self.assertIn(self.user1, self.env['res.users'].search(domain))
  63. domain = [(
  64. 'disabled_notify_subtype_ids', 'in', self.subtype3.id,
  65. )]
  66. self.assertIn(self.user1, self.env['res.users'].search(domain))
  67. domain = [(
  68. 'enabled_notify_subtype_ids', 'in', (self.subtype3.id, ),
  69. )]
  70. self.assertNotIn(self.user1, self.env['res.users'].search(domain))
  71. domain = [(
  72. 'enabled_notify_subtype_ids', 'in', (self.subtype4.id, ),
  73. )]
  74. self.assertNotIn(self.user1, self.env['res.users'].search(domain))
  75. domain = [(
  76. 'disabled_notify_subtype_ids', 'in', (self.subtype4.id, ),
  77. )]
  78. self.assertNotIn(self.user1, self.env['res.users'].search(domain))
  79. def test_find_user_by_subtype_escl(self):
  80. self._test_subtypes_rel()
  81. domain = [(
  82. 'enabled_notify_subtype_ids',
  83. 'not in', (self.subtype4.id, ),
  84. )]
  85. self.assertIn(self.user1, self.env['res.users'].search(domain))
  86. domain = [(
  87. 'disabled_notify_subtype_ids',
  88. 'not in', (self.subtype4.id, ),
  89. )]
  90. self.assertIn(self.user1, self.env['res.users'].search(domain))
  91. domain = [(
  92. 'enabled_notify_subtype_ids',
  93. 'not in', (self.subtype3.id, ),
  94. )]
  95. self.assertIn(self.user1, self.env['res.users'].search(domain))
  96. domain = [(
  97. 'disabled_notify_subtype_ids',
  98. 'not in', (self.subtype1.id, self.subtype2.id),
  99. )]
  100. self.assertIn(self.user1, self.env['res.users'].search(domain))