# -*- coding: utf-8 -*- # © 2016 Grupo ESOC Ingeniería de Servicios, S.L.U. - Jairo Llopis # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from lxml import etree from openerp.tools.misc import mute_logger from openerp.tests.common import TransactionCase class ExtractorCase(TransactionCase): def setUp(self): super(ExtractorCase, self).setUp() # Shortcut self.text_from_html = self.env["ir.fields.converter"].text_from_html self.logger = 'openerp.addons.html_text.models.ir_fields_converter' def test_excerpts(self): """Text gets correctly extracted.""" html = u"""

I'm a title

I'm a paragraph

¡Pues yo soy español!
""" self.assertEqual( self.text_from_html(html), u"I'm a title I'm a paragraph ¡Pues yo soy español!") self.assertEqual( self.text_from_html(html, 8), u"I'm a title I'm a paragraph ¡Pues yo…") self.assertEqual( self.text_from_html(html, 8, 31), u"I'm a title I'm a paragraph ¡P…") self.assertEqual( self.text_from_html(html, 7, ellipsis=""), u"I'm a title I'm a paragraph ¡Pues") def test_empty_html(self): """Empty HTML handled correctly.""" with mute_logger(self.logger): self.assertEqual(self.text_from_html(""), "") with self.assertRaises(etree.XMLSyntaxError): with mute_logger(self.logger): self.text_from_html("", fail=True) def test_false_html(self): """``False`` HTML handled correctly.""" with mute_logger(self.logger): self.assertEqual(self.text_from_html(False), "") with self.assertRaises(TypeError): with mute_logger(self.logger): self.text_from_html(False, fail=True) def test_bad_html(self): """Bad HTML handled correctly. Newer versions of lxml parse this as '

<

' so the exception is not guaranteed and the result may vary. """ with mute_logger(self.logger): self.assertIn(self.text_from_html("<"), ("<", "")) try: with mute_logger(self.logger): res = self.text_from_html("<", fail=True) self.assertEqual(res, "<") except etree.ParserError: pass