1# -*- coding: utf-8 -*- 2# Part of Odoo. See LICENSE file for full copyright and licensing details. 3 4from odoo.tests.common import HttpCase, tagged 5from odoo.tools import mute_logger, logging 6from unittest.mock import patch 7 8@tagged('-at_install', 'post_install') 9class TestHttpCase(HttpCase): 10 11 def test_console_error_string(self): 12 with self.assertRaises(AssertionError) as error_catcher: 13 code = "console.error('test error','message')" 14 with patch('odoo.tests.common.ChromeBrowser.take_screenshot', return_value=None): 15 self.browser_js(url_path='about:blank', code=code) 16 # second line must contains error message 17 self.assertEqual(error_catcher.exception.args[0].splitlines()[1], "test error message") 18 19 def test_console_error_object(self): 20 with self.assertRaises(AssertionError) as error_catcher: 21 code = "console.error(TypeError('test error message'))" 22 with patch('odoo.tests.common.ChromeBrowser.take_screenshot', return_value=None): 23 self.browser_js(url_path='about:blank', code=code) 24 # second line must contains error message 25 self.assertEqual(error_catcher.exception.args[0].splitlines()[1:3], 26 ['TypeError: test error message', ' at <anonymous>:1:15']) 27 28 def test_console_log_object(self): 29 logger = logging.getLogger('odoo') 30 level = logger.level 31 logger.setLevel(logging.INFO) 32 self.addCleanup(logger.setLevel, level) 33 34 with self.assertLogs() as log_catcher: 35 code = "console.log({custom:{1:'test', 2:'a'}, value:1, description:'dummy'});console.log('test successful');" 36 self.browser_js(url_path='about:blank', code=code) 37 console_log_count = 0 38 for log in log_catcher.output: 39 if '.browser:' in log: 40 text = log.split('.browser:', 1)[1] 41 if text == 'test successful': 42 continue 43 self.assertEqual(text, "Object(custom=Object, value=1, description='dummy')") 44 console_log_count +=1 45 self.assertEqual(console_log_count, 1) 46