from collections.abc import Callable from flask_day_54.domain.decorators import ( make_bold, make_emphasis, make_underlined, plain_hello, say_hello, ) def test_make_bold_wraps_text_in_b_tags() -> None: assert make_bold(plain_hello)() == "Hello, World!" def test_make_emphasis_wraps_text_in_em_tags() -> None: assert make_emphasis(plain_hello)() == "Hello, World!" def test_make_underlined_wraps_text_in_u_tags() -> None: assert make_underlined(plain_hello)() == "Hello, World!" def test_say_hello_applies_stacked_decorators_nearest_first() -> None: assert say_hello() == "Hello, World!" def test_plain_hello_is_not_decorated() -> None: assert plain_hello() == "Hello, World!" def test_decorator_keeps_name_and_docstring_of_wrapped_function() -> None: assert say_hello.__name__ == "say_hello" assert say_hello.__doc__ == "Return the greeting." def test_decorator_wraps_function_returning_another_string() -> None: def goodbye() -> str: return "Bye" decorated: Callable[[], str] = make_bold(goodbye) assert decorated() == "Bye"