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.

137 lines
4.4 KiB

  1. # -*- coding: utf-8 -*-
  2. # Copyright 2017 Simone Orsi <simone.orsi@camptocamp.com>
  3. # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
  4. from odoo.tests.common import SavepointCase
  5. class SubtypesCase(SavepointCase):
  6. @classmethod
  7. def setUpClass(cls):
  8. super(SubtypesCase, cls).setUpClass()
  9. cls.partner_model = cls.env['res.partner']
  10. cls.message_model = cls.env['mail.message']
  11. cls.subtype_model = cls.env['mail.message.subtype']
  12. cls.partner1 = cls.partner_model.with_context(
  13. tracking_disable=1).create({
  14. 'name': 'Partner 1!',
  15. 'email': 'partner1@test.foo.com',
  16. })
  17. cls.partner2 = cls.partner_model.with_context(
  18. tracking_disable=1).create({
  19. 'name': 'Partner 2!',
  20. 'email': 'partner2@test.foo.com',
  21. })
  22. cls.subtype1 = cls.subtype_model.create({'name': 'Type 1'})
  23. cls.subtype2 = cls.subtype_model.create({'name': 'Type 2'})
  24. def _test_subtypes_rel(self):
  25. # setup:
  26. # t1, t2 enabled
  27. # t3 disabled
  28. # t4 no conf
  29. self.subtype3 = self.subtype_model.create({'name': 'Type 3'})
  30. self.subtype4 = self.subtype_model.create({'name': 'Type 4'})
  31. # enable t1 t2
  32. self.partner1._notify_enable_subtype(self.subtype1)
  33. self.partner1._notify_enable_subtype(self.subtype2)
  34. # disable t3
  35. self.partner1._notify_disable_subtype(self.subtype3)
  36. def test_partner_computed_subtype(self):
  37. self._test_subtypes_rel()
  38. # check computed fields
  39. self.assertIn(
  40. self.subtype1, self.partner1.enabled_notify_subtype_ids)
  41. self.assertNotIn(
  42. self.subtype1, self.partner1.disabled_notify_subtype_ids)
  43. self.assertIn(
  44. self.subtype2, self.partner1.enabled_notify_subtype_ids)
  45. self.assertNotIn(
  46. self.subtype2, self.partner1.disabled_notify_subtype_ids)
  47. self.assertIn(
  48. self.subtype3, self.partner1.disabled_notify_subtype_ids)
  49. self.assertNotIn(
  50. self.subtype3, self.partner1.enabled_notify_subtype_ids)
  51. self.assertNotIn(
  52. self.subtype4,
  53. self.partner1.enabled_notify_subtype_ids)
  54. self.assertNotIn(
  55. self.subtype4,
  56. self.partner1.disabled_notify_subtype_ids)
  57. def test_partner_find_by_subtype_incl(self):
  58. self._test_subtypes_rel()
  59. domain = [(
  60. 'enabled_notify_subtype_ids',
  61. 'in', (self.subtype1.id, self.subtype2.id),
  62. )]
  63. self.assertIn(
  64. self.partner1,
  65. self.partner_model.search(domain)
  66. )
  67. domain = [(
  68. 'disabled_notify_subtype_ids', 'in', self.subtype3.id,
  69. )]
  70. self.assertIn(
  71. self.partner1,
  72. self.partner_model.search(domain)
  73. )
  74. domain = [(
  75. 'enabled_notify_subtype_ids', 'in', (self.subtype3.id, ),
  76. )]
  77. self.assertNotIn(
  78. self.partner1,
  79. self.partner_model.search(domain)
  80. )
  81. domain = [(
  82. 'enabled_notify_subtype_ids', 'in', (self.subtype4.id, ),
  83. )]
  84. self.assertNotIn(
  85. self.partner1,
  86. self.partner_model.search(domain)
  87. )
  88. domain = [(
  89. 'disabled_notify_subtype_ids', 'in', (self.subtype4.id, ),
  90. )]
  91. self.assertNotIn(
  92. self.partner1,
  93. self.partner_model.search(domain)
  94. )
  95. def test_partner_find_by_subtype_escl(self):
  96. self._test_subtypes_rel()
  97. domain = [(
  98. 'enabled_notify_subtype_ids',
  99. 'not in', (self.subtype4.id, ),
  100. )]
  101. self.assertIn(
  102. self.partner1,
  103. self.partner_model.search(domain)
  104. )
  105. domain = [(
  106. 'disabled_notify_subtype_ids',
  107. 'not in', (self.subtype4.id, ),
  108. )]
  109. self.assertIn(
  110. self.partner1,
  111. self.partner_model.search(domain)
  112. )
  113. domain = [(
  114. 'enabled_notify_subtype_ids',
  115. 'not in', (self.subtype3.id, ),
  116. )]
  117. self.assertIn(
  118. self.partner1,
  119. self.partner_model.search(domain)
  120. )
  121. domain = [(
  122. 'disabled_notify_subtype_ids',
  123. 'not in', (self.subtype1.id, self.subtype2.id),
  124. )]
  125. self.assertIn(
  126. self.partner1,
  127. self.partner_model.search(domain)
  128. )