def test_escape_markdown_v2_monospaced(self):

        test_str = r"mono/pre: `abc` \int (`\some \`stuff)"
        expected_str = "mono/pre: \\`abc\\` \\\\int (\\`\\\\some \\\\\\`stuff)"

        assert expected_str == helpers.escape_markdown(
            test_str, version=2, entity_type=MessageEntity.PRE)
        assert expected_str == helpers.escape_markdown(
            test_str, version=2, entity_type=MessageEntity.CODE)
    def test_escape_markdown_v2_text_link(self):

        test_str = "https://url.containing/funny)cha)\\ra\\)cter\\s"
        expected_str = "https://url.containing/funny\\)cha\\)\\\\ra\\\\\\)cter\\\\s"

        assert expected_str == helpers.escape_markdown(
            test_str, version=2, entity_type=MessageEntity.TEXT_LINK)
    async def test_send_video_default_parse_mode_3(self, default_bot, chat_id, video):
        test_markdown_string = "_Italic_ *Bold* `Code`"

        message = await default_bot.send_video(
            chat_id, video, caption=test_markdown_string, parse_mode="HTML"
        )
        assert message.caption == test_markdown_string
        assert message.caption_markdown == escape_markdown(test_markdown_string)
    async def test_send_document_default_parse_mode_2(self, default_bot, chat_id, document):
        test_markdown_string = "_Italic_ *Bold* `Code`"

        message = await default_bot.send_document(
            chat_id, document, caption=test_markdown_string, parse_mode=None
        )
        assert message.caption == test_markdown_string
        assert message.caption_markdown == escape_markdown(test_markdown_string)
    async def test_mention_markdown_v2(self, user):
        user.first_name = "first{name"
        user.last_name = "last_name"

        expected = "[{}](tg://user?id={})"

        assert user.mention_markdown_v2() == expected.format(
            escape_markdown(user.full_name, version=2), user.id)
        assert user.mention_markdown_v2("the{name>\u2022") == expected.format(
            "the\\{name\\>\u2022", user.id)
        assert user.mention_markdown_v2(user.username) == expected.format(
            user.username, user.id)
 def test_markdown_invalid_version(self):
     with pytest.raises(ValueError):
         helpers.escape_markdown("abc", version=-1)
    def test_escape_markdown_v2(self):
        test_str = r"a_b*c[d]e (fg) h~I`>JK#L+MN -O=|p{qr}s.t!\ \u"
        expected_str = r"a\_b\*c\[d\]e \(fg\) h\~I\`\>JK\#L\+MN \-O\=\|p\{qr\}s\.t\!\\ \\u"

        assert expected_str == helpers.escape_markdown(test_str, version=2)
    def test_escape_markdown(self):
        test_str = "*bold*, _italic_, `code`, [text_link](http://github.com/)"
        expected_str = r"\*bold\*, \_italic\_, \`code\`, \[text\_link](http://github.com/)"

        assert expected_str == helpers.escape_markdown(test_str)