From f6c7ead35994a321a4df1ed090060428a1ec441b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Voet=20=28ryv=29?= Date: Thu, 3 Nov 2022 12:48:42 +0000 Subject: [PATCH] [IMP] tests: `RecordCapturer` now keep the order of record creation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes odoo/odoo#104838 Related: odoo/enterprise#33562 Signed-off-by: Rémy Voet Co-authored-by: Julien Castiaux --- addons/base_import/tests/test_base_import.py | 34 +++++++++---------- .../tests/test_website_hr_recruitment.py | 4 +-- odoo/tests/common.py | 6 ++-- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/addons/base_import/tests/test_base_import.py b/addons/base_import/tests/test_base_import.py index b1bce09d6fc..5fc50d33a79 100644 --- a/addons/base_import/tests/test_base_import.py +++ b/addons/base_import/tests/test_base_import.py @@ -6,7 +6,7 @@ import io import pprint import unittest -from odoo.tests.common import TransactionCase, can_import +from odoo.tests.common import TransactionCase, can_import, RecordCapturer from odoo.modules.module import get_module_resource from odoo.tools import mute_logger, pycompat from odoo.addons.base_import.models.base_import import ImportValidationError @@ -727,28 +727,26 @@ foo3,US,0,persons\n""", ['Joel', 'US', 'Portal', '', 'tag1', 'tag3'], ] - existing_partners = self.env['res.partner'].search_read([], ['id']) - import_wizard = self.env['base_import.import'].create({ - 'res_model': 'res.partner', - 'file': '\n'.join([';'.join(partner_values) for partner_values in file_partner_values]), - 'file_type': 'text/csv', - }) + with RecordCapturer(self.env['res.partner'], []) as capture: + import_wizard = self.env['base_import.import'].create({ + 'res_model': 'res.partner', + 'file': '\n'.join([';'.join(partner_values) for partner_values in file_partner_values]), + 'file_type': 'text/csv', + }) - results = import_wizard.execute_import( - ['name', 'country_id', 'name', 'name', 'category_id', 'category_id'], - [], - { - 'quoting': '"', - 'separator': ';', - }, - ) + results = import_wizard.execute_import( + ['name', 'country_id', 'name', 'name', 'category_id', 'category_id'], + [], + { + 'quoting': '"', + 'separator': ';', + }, + ) # if result is empty, no import error self.assertItemsEqual(results['messages'], []) - partners = self.env['res.partner'].search([ - ('id', 'not in', [existing_partner['id'] for existing_partner in existing_partners]) - ], order='id asc') + partners = capture.records self.assertEqual(3, len(partners)) self.assertEqual('Mitchel Admin The Admin User', partners[0].name) diff --git a/addons/website_hr_recruitment/tests/test_website_hr_recruitment.py b/addons/website_hr_recruitment/tests/test_website_hr_recruitment.py index 3ec2fdd719a..8790aa70402 100644 --- a/addons/website_hr_recruitment/tests/test_website_hr_recruitment.py +++ b/addons/website_hr_recruitment/tests/test_website_hr_recruitment.py @@ -24,14 +24,14 @@ class TestWebsiteHrRecruitmentForm(odoo.tests.HttpCase): # check result self.assertEqual(len(capt.records), 2) - guru_applicant = capt.records[1] + guru_applicant = capt.records[0] self.assertEqual(guru_applicant.partner_name, 'John Smith') self.assertEqual(guru_applicant.email_from, 'john@smith.com') self.assertEqual(guru_applicant.partner_mobile, '118.218') self.assertEqual(html2plaintext(guru_applicant.description), '### [GURU] HR RECRUITMENT TEST DATA ###') self.assertEqual(guru_applicant.job_id, job_guru) - internship_applicant = capt.records[0] + internship_applicant = capt.records[1] self.assertEqual(internship_applicant.partner_name, 'Jack Doe') self.assertEqual(internship_applicant.email_from, 'jack@doe.com') self.assertEqual(internship_applicant.partner_mobile, '118.712') diff --git a/odoo/tests/common.py b/odoo/tests/common.py index c47bf0ab214..fa380f52db9 100644 --- a/odoo/tests/common.py +++ b/odoo/tests/common.py @@ -173,18 +173,18 @@ class RecordCapturer: self._domain = domain def __enter__(self): - self._before = self._model.search(self._domain) + self._before = self._model.search(self._domain, order='id') self._after = None return self def __exit__(self, exc_type, exc_value, exc_traceback): if exc_type is None: - self._after = self._model.search(self._domain) - self._before + self._after = self._model.search(self._domain, order='id') - self._before @property def records(self): if self._after is None: - return self._model.search(self._domain) - self._before + return self._model.search(self._domain, order='id') - self._before return self._after # ------------------------------------------------------------