62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
"""Tests of i18n/converter.py"""
|
|
|
|
from unittest import TestCase
|
|
|
|
import ddt
|
|
|
|
from i18n import converter
|
|
|
|
class UpcaseConverter(converter.Converter):
|
|
"""
|
|
Converts a string to uppercase. Just used for testing.
|
|
"""
|
|
def inner_convert_string(self, string):
|
|
return string.upper()
|
|
|
|
|
|
@ddt.ddt
|
|
class TestConverter(TestCase):
|
|
"""
|
|
Tests functionality of i18n/converter.py
|
|
"""
|
|
|
|
@ddt.data(
|
|
# no tags
|
|
('big bad wolf',
|
|
'BIG BAD WOLF'),
|
|
# one html tag
|
|
('big <strong>bad</strong> wolf',
|
|
'BIG <strong>BAD</strong> WOLF'),
|
|
# two html tags
|
|
('big <b>bad</b> gray <i>wolf</i>',
|
|
'BIG <b>BAD</b> GRAY <i>WOLF</i>'),
|
|
# html tags with attributes
|
|
('<a href="foo">bar</a> baz',
|
|
'<a href="foo">BAR</a> BAZ'),
|
|
("<a href='foo'>bar</a> baz",
|
|
"<a href='foo'>BAR</a> BAZ"),
|
|
# one python tag
|
|
('big %(adjective)s wolf',
|
|
'BIG %(adjective)s WOLF'),
|
|
# two python tags
|
|
('big %(adjective)s gray %(noun)s',
|
|
'BIG %(adjective)s GRAY %(noun)s'),
|
|
# both kinds of tags
|
|
('<strong>big</strong> %(adjective)s %(noun)s',
|
|
'<strong>BIG</strong> %(adjective)s %(noun)s'),
|
|
# .format-style tags
|
|
('The {0} barn is {1!r}.',
|
|
'THE {0} BARN IS {1!r}.'),
|
|
# HTML entities
|
|
('<b>© 2013 edX,  </b>',
|
|
'<b>© 2013 EDX,  </b>'),
|
|
)
|
|
def test_converter(self, data):
|
|
"""
|
|
Tests with a simple converter (converts strings to uppercase).
|
|
Assert that embedded HTML and python tags are not converted.
|
|
"""
|
|
source, expected = data
|
|
result = UpcaseConverter().convert(source)
|
|
self.assertEquals(result, expected)
|