""" Test the functions in the `xhtml` module """ import pytest import xml import poezio.xhtml from poezio.xhtml import (poezio_colors_to_html, xhtml_to_poezio_colors, _parse_css as parse_css, clean_text) class ConfigShim(object): def __init__(self): self.value = True def get(self, *args, **kwargs): return self.value config = ConfigShim() poezio.xhtml.config = config def test_clean_text(): example_string = '\x191}Toto \x192,-1}titi\x19b Tata' assert clean_text(example_string) == 'Toto titi Tata' clean_string = 'toto titi tata' assert clean_text(clean_string) == clean_string def test_poezio_colors_to_html(): base = "

" end = "

" text = '\x191}coucou' assert poezio_colors_to_html(text) == base + 'coucou' + end text = '\x19bcoucou\x19o toto \x194}titi' assert poezio_colors_to_html(text) == base + 'coucou toto titi' + end text = '\x19icoucou' assert poezio_colors_to_html(text) == base + 'coucou' + end def test_xhtml_to_poezio_colors(): start = b'

' end = b'

' xhtml = start + b'test' + end assert xhtml_to_poezio_colors(xhtml) == 'test' xhtml = start + b'salut' + end assert xhtml_to_poezio_colors(xhtml) == '\x19usalut\x19o (http://perdu.com)' xhtml = start + b'http://perdu.com' + end assert xhtml_to_poezio_colors(xhtml) == '\x19uhttp://perdu.com\x19o' xhtml = start + b'Test' + end assert xhtml_to_poezio_colors(xhtml) == '\x19iTest\x19o' xhtml = b'
Allo
test
test2
' assert xhtml_to_poezio_colors(xhtml, force=True) == '\x19bAllo \x19196}test \x1921}test2\x19o' xhtml = (b'
' b'
Allo
' b'test
test2
') assert xhtml_to_poezio_colors(xhtml, force=True) == '\x1921}Allo \x19196}test \x1921}test2\x19o' with pytest.raises(xml.sax._exceptions.SAXParseException): xhtml_to_poezio_colors(b'

Invalid xml') def test_xhtml_to_poezio_colors_disabled(): config.value = False start = b'

' end = b'

' xhtml = start + b'test' + end assert xhtml_to_poezio_colors(xhtml) == 'test' xhtml = start + b'salut' + end assert xhtml_to_poezio_colors(xhtml) == '\x19usalut\x19o (http://perdu.com)' xhtml = start + b'http://perdu.com' + end assert xhtml_to_poezio_colors(xhtml) == '\x19uhttp://perdu.com\x19o' xhtml = b'
Allo
test
test2
' assert xhtml_to_poezio_colors(xhtml, force=True) == 'Allo test test2' xhtml = (b'
' b'
Allo
' b'test
test2
') assert xhtml_to_poezio_colors(xhtml, force=True) == 'Allo test test2' config.value = True def test_parse_css(): example_css = 'text-decoration: underline; color: red;' assert parse_css(example_css) == '\x19u\x19196}' example_css = 'text-decoration: underline coucou color: red;' assert parse_css(example_css) == ''