diff options
Diffstat (limited to 'addons/website/tests/test_qweb.py')
| -rw-r--r-- | addons/website/tests/test_qweb.py | 53 |
1 files changed, 8 insertions, 45 deletions
diff --git a/addons/website/tests/test_qweb.py b/addons/website/tests/test_qweb.py index 8cba2d150c0..b752d641f40 100644 --- a/addons/website/tests/test_qweb.py +++ b/addons/website/tests/test_qweb.py @@ -2,10 +2,9 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. import re -import werkzeug -import odoo from odoo import tools +from odoo.addons.website.tools import MockRequest from odoo.modules.module import get_module_resource from odoo.tests.common import TransactionCase @@ -66,42 +65,6 @@ class TestQweb(TransactionCase): "user_id": demo.id, }).encode('utf8')) -class MockObject(object): - _log_call = [] - def __init__(self, *args, **kwargs): - self.__dict__ = kwargs - def __call__(self, *args, **kwargs): - self._log_call.append((args, kwargs)) - return self - def __getitem__(self, index): - return self - -def werkzeugRaiseNotFound(*args, **kwargs): - raise werkzeug.exceptions.NotFound() - -class MockRequest(object): - """ Class with context manager mocking odoo.http.request for tests """ - def __init__(self, env, website=None, context=None, multilang=True, routing=True): - app = MockObject(routing={ - 'type': 'http', - 'website': True, - 'multilang': multilang, - }) - app.get_db_router = app.bind = app.match = app - if not routing: - app.match = werkzeugRaiseNotFound - self.request = MockObject( - env=env, context=context or {}, db=None, debug=False, - website=website, httprequest=MockObject( - path='/hello/', - app=app - ) - ) - odoo.http._request_stack.push(self.request) - def __enter__(self): - return self.request - def __exit__(self, exc_type, exc_value, traceback): - odoo.http._request_stack.pop() class TestQwebProcessAtt(TransactionCase): def setUp(self): @@ -128,7 +91,7 @@ class TestQwebProcessAtt(TransactionCase): self._test_att('/a', {'href': '/a'}) def test_process_att_no_website(self): - with MockRequest(self.env) as request: + with MockRequest(self.env): # no website so URL rewriting self._test_att('/', {'href': '/'}) self._test_att('/en_US/', {'href': '/en_US/'}) @@ -137,7 +100,7 @@ class TestQwebProcessAtt(TransactionCase): self._test_att('/a', {'href': '/a'}) def test_process_att_monolang_route(self): - with MockRequest(self.env, website=self.website, multilang=False) as request: + with MockRequest(self.env, website=self.website, multilang=False): # lang not changed in URL but CDN enabled self._test_att('/a', {'href': 'http://test.cdn/a'}) self._test_att('/en_US/a', {'href': 'http://test.cdn/en_US/a'}) @@ -145,19 +108,19 @@ class TestQwebProcessAtt(TransactionCase): self._test_att('/en_US/b', {'href': '/en_US/b'}) def test_process_att_no_request_lang(self): - with MockRequest(self.env, self.website) as request: + with MockRequest(self.env, website=self.website): self._test_att('/', {'href': '/'}) self._test_att('/en_US/', {'href': '/'}) self._test_att('/fr_FR/', {'href': '/fr_FR/'}) def test_process_att_with_request_lang(self): - with MockRequest(self.env, self.website, context={'lang': 'fr_FR'}) as request: + with MockRequest(self.env, website=self.website, context={'lang': 'fr_FR'}): self._test_att('/', {'href': '/fr_FR/'}) self._test_att('/en_US/', {'href': '/'}) self._test_att('/fr_FR/', {'href': '/fr_FR/'}) def test_process_att_matching_cdn_and_lang(self): - with MockRequest(self.env, self.website) as request: + with MockRequest(self.env, website=self.website): # lang prefix is added before CDN self._test_att('/a', {'href': 'http://test.cdn/a'}) self._test_att('/en_US/a', {'href': 'http://test.cdn/a'}) @@ -167,13 +130,13 @@ class TestQwebProcessAtt(TransactionCase): self._test_att('/fr_FR/b', {'href': '/fr_FR/b'}) def test_process_att_no_route(self): - with MockRequest(self.env, self.website, context={'lang': 'fr_FR'}, routing=False) as request: + with MockRequest(self.env, website=self.website, context={'lang': 'fr_FR'}, routing=False): # default on multilang=True if route is not /{module}/static/ self._test_att('/web/static/hi', {'href': '/web/static/hi'}) self._test_att('/my-page', {'href': '/fr_FR/my-page'}) def test_process_att_url_crap(self): - with MockRequest(self.env, self.website) as request: + with MockRequest(self.env, website=self.website) as request: # #{fragment} is stripped from URL when testing route self._test_att('/x#y?z', {'href': '/x#y?z'}) self.assertEqual( |
