")
def test_complex_custom_formatting():
class User(object):
def __init__(self, id, username):
self.id = id
self.username = username
def __html_format__(self, format_spec):
if format_spec == "link":
return Markup('{1}').format(
self.id, self.__html__()
)
elif format_spec:
raise ValueError("Invalid format spec")
return self.__html__()
def __html__(self):
return Markup("{0}").format(self.username)
user = User(1, "foo")
result = Markup("User: {0:link}").format(user)
expect = Markup('
User: foo')
assert result == expect
def test_formatting_with_objects():
class Stringable(object):
def __unicode__(self):
return u"строка"
if PY2:
def __str__(self):
return "some other value"
else:
__str__ = __unicode__
assert Markup("{s}").format(s=Stringable()) == Markup(u"строка")
def test_all_set():
import markupsafe as markup
for item in markup.__all__:
getattr(markup, item)
def test_escape_silent():
assert escape_silent(None) == Markup()
assert escape(None) == Markup(None)
assert escape_silent("") == Markup(u"<foo>")
def test_splitting():
expect = [Markup("a"), Markup("b")]
assert Markup("a b").split() == expect
assert Markup("a b").rsplit() == expect
assert Markup("a\nb").splitlines() == expect
def test_mul():
assert Markup("a") * 3 == Markup("aaa")
def test_escape_return_type():
assert isinstance(escape("a"), Markup)
assert isinstance(escape(Markup("a")), Markup)
class Foo:
def __html__(self):
return "Foo"
assert isinstance(escape(Foo()), Markup)