[FIX] better test, add missing parentheses in query, return empty list in case of...
authorMartin Trigaux <mat@openerp.com>
Wed, 29 Jan 2014 12:34:04 +0000 (13:34 +0100)
committerMartin Trigaux <mat@openerp.com>
Wed, 29 Jan 2014 12:34:04 +0000 (13:34 +0100)
bzr revid: mat@openerp.com-20140129123404-8hs786n64briqyta

openerp/addons/base/res/res_partner.py
openerp/addons/base/tests/test_base.py

index d337b3c..d66c69d 100644 (file)
@@ -619,12 +619,12 @@ class res_partner(osv.osv, format_address):
             query = ('''SELECT res_partner.id FROM res_partner
                                           LEFT JOIN res_partner company
                                                ON res_partner.parent_id = company.id'''
-                        + where_str + ''' res_partner.email ''' + operator + ''' %s OR
+                        + where_str + ''' (res_partner.email ''' + operator + ''' %s OR
                               CASE
                                    WHEN company.id IS NULL OR res_partner.is_company
                                        THEN res_partner.name
                                    ELSE company.name || ', ' || res_partner.name
-                              END ''' + operator + ''' %s
+                              END ''' + operator + ''' %s)
                         ORDER BY
                               CASE
                                    WHEN company.id IS NULL OR res_partner.is_company
@@ -641,6 +641,8 @@ class res_partner(osv.osv, format_address):
 
             if ids:
                 return self.name_get(cr, uid, ids, context)
+            else:
+                return []
         return super(res_partner,self).name_search(cr, uid, name, args, operator=operator, context=context, limit=limit)
 
     def find_or_create(self, cr, uid, email, context=None):
index 02ce3b0..b1453b5 100644 (file)
@@ -41,12 +41,18 @@ class test_base(common.TransactionCase):
 
     def test_15_res_partner_name_search(self):
         cr,uid = self.cr, self.uid
-        for text, name, mail in self.samples:
-            partner_id, dummy = self.res_partner.name_create(cr, uid, text)
+        for name, active in [
+            ('"A Raoul Grosbedon" <raoul@chirurgiens-dentistes.fr>', False),
+            ('ryu+giga-Sushi@aizubange.fukushima.jp', True),
+            ('Raoul chirurgiens-dentistes.fr', True),
+            (" Raoul O'hara  <!@historicalsociety.museum>", True)
+        ]:
+            partner_id, dummy = self.res_partner.name_create(cr, uid, name, context={'default_active': active})
         partners = self.res_partner.name_search(cr, uid, 'Raoul')
-        self.assertEqual(len(partners), 3, 'Incorrect search number result for name_search')
+        self.assertEqual(len(partners), 2, 'Incorrect search number result for name_search')
         partners = self.res_partner.name_search(cr, uid, 'Raoul', limit=1)
         self.assertEqual(len(partners), 1, 'Incorrect search number result for name_search with a limit')
+        self.assertEqual(partners[0][1], 'Raoul chirurgiens-dentistes.fr', 'Incorrect partner returned, should be the first active')
 
     def test_20_res_partner_address_sync(self):
         cr, uid = self.cr, self.uid