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