# -*- coding: utf-8 -*- import odoo.tests from odoo.addons.base.tests.test_translate import SPECIAL_CHARACTERS @odoo.tests.tagged('post_install', '-at_install') class TestIndexedTranslation(odoo.tests.TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() cls.env['res.lang']._activate_lang('fr_FR') def test_search_ilike(self): record_en = self.env['test_new_api.indexed_translation'].with_context(lang='en_US').create({}) record_fr = record_en.with_context(lang='fr_FR') record_en.name = '
hello
\n
' record_fr.name = '
%bonjour\\
\a
' self.assertEqual(record_en.name, '
hello
\n
') self.assertEqual(record_fr.name, '
%bonjour\\
\a
') # matching double quotes self.assertEqual(record_en.search([('name', 'ilike', 'class="my_class')]), record_en) # escaped and unescaped PG wildcards self.assertEqual(record_en.search([('name', 'ilike', 'class%class')]), record_en) self.assertEqual(record_en.search([('name', 'ilike', r'class="m_\_class')]), record_en) self.assertEqual(record_en.search([('name', 'ilike', 'bonjour')]), record_en.browse()) self.assertEqual(record_en.search([('name', 'ilike', '
\n
')]), record_en) self.assertEqual(record_fr.search([('name', 'ilike', '
\a
')]), record_fr) self.assertEqual(record_fr.search([('name', 'ilike', r'\%bonjour\\')]), record_fr) self.assertEqual( record_en.search([('name', '=', '
hello
\n
')]), record_en, ) self.assertEqual( record_fr.search([('name', '=', '
%bonjour\\
\a
')]), record_fr, ) def test_search_special_characters(self): name_en = f'{SPECIAL_CHARACTERS}_en' name_fr = f'{SPECIAL_CHARACTERS}_fr' record_en = self.env['test_new_api.indexed_translation'].with_context(lang='en_US').create({}) record_fr = record_en.with_context(lang='fr_FR') record_en.name = name_en record_fr.name = name_fr self.assertEqual(record_en.search([('name', 'ilike', name_en)]), record_en) self.assertEqual(record_en.search([('name', '=', name_en)]), record_en) self.assertEqual(record_en.search([('name', 'in', [name_en])]), record_en) self.assertEqual(record_fr.search([('name', 'ilike', name_fr)]), record_en) self.assertEqual(record_fr.search([('name', '=', name_fr)]), record_en) self.assertEqual(record_fr.search([('name', 'in', [name_fr])]), record_en) self.assertFalse(record_fr.search([('name', 'ilike', name_en)])) self.assertFalse(record_fr.search([('name', '=', name_en)])) self.assertFalse(record_fr.search([('name', 'in', [name_en])])) self.assertFalse(record_en.search([('name', 'ilike', name_fr)])) self.assertFalse(record_en.search([('name', '=', name_fr)])) self.assertFalse(record_en.search([('name', 'in', [name_fr])]))