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.

70 lines
2.6 KiB

8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
  1. # -*- coding: utf-8 -*-
  2. # © 2017 Sunflower IT <http://sunflowerweb.nl>
  3. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  4. from openerp.tests.common import TransactionCase
  5. class PartnerMergeTestCase(TransactionCase):
  6. """Tests for Partner Merge"""
  7. def setUp(self):
  8. super(PartnerMergeTestCase, self).setUp()
  9. self.partner = self.env['res.partner']
  10. self.merge_wizard = \
  11. self.env['base.partner.merge.automatic.wizard']
  12. self.donald_domain = [('name', '=', 'Donald Duck')]
  13. self.mickey_domain = [('name', '=', 'Mickey Mouse')]
  14. def _unlink_all(self):
  15. self.partner.search(self.donald_domain).unlink()
  16. self.partner.search(self.mickey_domain).unlink()
  17. def _count_donalds_mickeys(self, donalds, mickeys):
  18. self.assertEquals(
  19. len(self.partner.search(self.donald_domain)), donalds)
  20. self.assertEquals(
  21. len(self.partner.search(self.mickey_domain)), mickeys)
  22. def _create_duplicates(self, field1, value1, field2, values2):
  23. for value2 in values2:
  24. self.partner.create({
  25. field1: value1,
  26. field2: value2,
  27. })
  28. def test_10_name_merge(self):
  29. """ Merge users with duplicate names """
  30. self._unlink_all()
  31. self._create_duplicates('name', 'Donald Duck',
  32. 'email', ['donald@therp.nl', 'donald@sunflowerweb.nl'])
  33. self._create_duplicates('name', 'Mickey Mouse',
  34. 'email', ['mickey@therp.nl', 'mickey@sunflowerweb.nl'])
  35. self._count_donalds_mickeys(2, 2)
  36. # Merge all names that start with 'D',
  37. self.partner.deduplicate_on_fields(['name'],
  38. domain=[('name', 'like', 'D%')])
  39. self._count_donalds_mickeys(1, 2)
  40. def test_20_ref_merge(self):
  41. """ Merge users with duplicate references """
  42. self._unlink_all()
  43. self._create_duplicates('ref', 'DD123',
  44. 'name', ['Donald Duck', 'Mickey Mouse'])
  45. # Merge on reference, leaving out guys that have no ref
  46. self.partner.deduplicate_on_fields(['ref'],
  47. domain=[('ref', '!=', False)])
  48. # Test if only one remains after
  49. partners = self.partner.search([('ref', '=', 'DD123')])
  50. self.assertEquals(len(partners), 1)
  51. def test_30_ref_merge(self):
  52. """ Fringe case: three guys, two to merge """
  53. self._unlink_all()
  54. self._create_duplicates('ref', 'DD123',
  55. 'name', ['Donald Duck', 'Donald Duck', 'Mickey Mouse'])
  56. self.partner.deduplicate_on_fields(['ref'],
  57. domain=[('name', '=', 'Donald Duck')])
  58. self._count_donalds_mickeys(1, 1)