From cf8577b9d0bbe6f02ed4e88e47ab3097683d519d Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 27 Sep 2017 15:53:30 +0200 Subject: [PATCH] [FIX] crm_partner_assign: safer geolocalization test Backport & adapt commits afd4b68acc1c60152776e0fffd99c4e567c6058f & 27787265ddcbc3383652129a69de362884a94ea6 As google starts to refuse to answer to our geocode requests, we need to mock results in tests. --- addons/crm_partner_assign/__init__.py | 1 + addons/crm_partner_assign/__openerp__.py | 1 - .../test/partner_assign.yml | 37 ------------ addons/crm_partner_assign/tests/__init__.py | 4 ++ .../tests/test_partner_assign.py | 56 +++++++++++++++++++ 5 files changed, 61 insertions(+), 38 deletions(-) delete mode 100644 addons/crm_partner_assign/test/partner_assign.yml create mode 100644 addons/crm_partner_assign/tests/__init__.py create mode 100644 addons/crm_partner_assign/tests/test_partner_assign.py diff --git a/addons/crm_partner_assign/__init__.py b/addons/crm_partner_assign/__init__.py index 6b1315cef07..398de4fdf97 100644 --- a/addons/crm_partner_assign/__init__.py +++ b/addons/crm_partner_assign/__init__.py @@ -23,5 +23,6 @@ import crm_partner_assign import crm_lead import wizard import report +from . import tests # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/crm_partner_assign/__openerp__.py b/addons/crm_partner_assign/__openerp__.py index a4f12c958fb..4c379d84a9f 100644 --- a/addons/crm_partner_assign/__openerp__.py +++ b/addons/crm_partner_assign/__openerp__.py @@ -51,7 +51,6 @@ to an appropriate local partner, based on the distance and the weight that was a 'res_partner_demo.xml', 'crm_lead_demo.xml' ], - 'test': ['test/partner_assign.yml'], 'installable': True, 'auto_install': False, } diff --git a/addons/crm_partner_assign/test/partner_assign.yml b/addons/crm_partner_assign/test/partner_assign.yml deleted file mode 100644 index 177c8b11a20..00000000000 --- a/addons/crm_partner_assign/test/partner_assign.yml +++ /dev/null @@ -1,37 +0,0 @@ -- - In order to test find nearest Partner functionality and assign to opportunity , -- - I Set Geo Lattitude and Longitude according to partner address. -- - !python {model: res.partner}: | - self.geo_localize(cr, uid, [ref('base.res_partner_2')], context) -- - I check Geo Latitude and Longitude of partner after set -- - !python {model: res.partner}: | - partner = self.browse(cr, uid, ref('base.res_partner_2')) - assert 50 < partner.partner_latitude < 51, "Latitude is wrong: 50 < %s < 51" % partner.partner_latitude - assert 3 < partner.partner_longitude < 5, "Longitude is wrong: 3 < %s < 5" % partner.partner_longitude -- - I assign nearest partner to opportunity. -- - !python {model: crm.lead}: | - self.assign_partner(cr, uid, [ref('crm.crm_case_19')], context=context) -- - I check assigned partner of opportunity who is nearest Geo Latitude and Longitude of opportunity. -- - !python {model: crm.lead}: | - lead = self.browse(cr, uid, ref('crm.crm_case_19')) - assert lead.partner_assigned_id.id == ref('base.res_partner_15') , "Opportuniy is not assigned nearest partner" - assert 50 < lead.partner_latitude < 55, "Latitude is wrong: 50 < %s < 55" % lead.partner_latitude - assert -4 < lead.partner_longitude < -1, "Longitude is wrong: -4 < %s < -1" % lead.partner_longitude -- - I forward this opportunity to its nearest partner. -- - !python {model: crm.lead.forward.to.partner}: | - context.update({'default_model': 'crm.lead', 'default_res_id': ref('crm.crm_case_19'), 'active_ids': [ref('crm.crm_case_19')]}) - forward_id = self.create(cr, uid, {}, context=context) - try: - self.action_forward(cr, uid, [forward_id], context=context) - except: - pass diff --git a/addons/crm_partner_assign/tests/__init__.py b/addons/crm_partner_assign/tests/__init__.py new file mode 100644 index 00000000000..c82b75c4994 --- /dev/null +++ b/addons/crm_partner_assign/tests/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import test_partner_assign diff --git a/addons/crm_partner_assign/tests/test_partner_assign.py b/addons/crm_partner_assign/tests/test_partner_assign.py new file mode 100644 index 00000000000..04a2b9082af --- /dev/null +++ b/addons/crm_partner_assign/tests/test_partner_assign.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from mock import patch + +from openerp.tests.common import TransactionCase + + +class TestPartnerAssign(TransactionCase): + + def setUp(self): + super(TestPartnerAssign, self).setUp() + + def geo_find(addr): + return { + u'69 rue de Namur, 1300 Wavre, Belgium': (50.7158956, 4.6128075), + u'L25 4RL Liverpool, United Kingdom': (53.3816319, -2.8737347), + }.get(addr) + + patcher = patch('openerp.addons.base_geolocalize.models.res_partner.geo_find', wraps=geo_find) + patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch('openerp.addons.crm_partner_assign.crm_partner_assign.geo_find', + wraps=geo_find) + patcher.start() + self.addCleanup(patcher.stop) + + def test_00_partner_assign(self): + partner2 = self.env.ref('base.res_partner_2') + lead = self.env.ref('crm.crm_case_19') + ''' + In order to test find nearest Partner functionality and assign to opportunity, + I Set Geo Lattitude and Longitude according to partner address. + ''' + partner2.geo_localize() + + # I check Geo Latitude and Longitude of partner after set + self.assertTrue(50 < partner2.partner_latitude < 51, "Latitude is wrong: 50 < %s < 51" % partner2.partner_latitude) + self.assertTrue(3 < partner2.partner_longitude < 5, "Longitude is wrong: 3 < %s < 5" % partner2.partner_longitude) + + # I assign nearest partner to opportunity. + lead.assign_partner() + + # I check assigned partner of opportunity who is nearest Geo Latitude and Longitude of opportunity. + self.assertEqual(lead.partner_assigned_id, self.env.ref('base.res_partner_15'), "Opportuniy is not assigned nearest partner") + self.assertTrue(50 < lead.partner_latitude < 55, "Latitude is wrong: 50 < %s < 55" % lead.partner_latitude) + self.assertTrue(-4 < lead.partner_longitude < -1, "Longitude is wrong: -4 < %s < -1" % lead.partner_longitude) + + # I forward this opportunity to its nearest partner. + context = dict(self.env.context, default_model='crm.lead', default_res_id=lead.id, active_ids=lead.ids) + lead_forwarded = self.env['crm.lead.forward.to.partner'].with_context(context).create({}) + try: + lead_forwarded.action_forward() + except Exception: + pass