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.

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