import unittest
from slack_bot.utils.mrkdwn import SlackFormatter

class TestSlackFormatter(unittest.TestCase):
    def test_bold(self):
        self.assertEqual(SlackFormatter.convert("Analysis: **Critical**"), "Analysis: *Critical*")
        
    def test_links(self):
        self.assertEqual(SlackFormatter.convert("See [Google](https://google.com)"), "See <https://google.com|Google>")
        
    def test_headers(self):
        self.assertEqual(SlackFormatter.convert("### Headline"), "*Headline*")
        self.assertEqual(SlackFormatter.convert("# Top Level"), "*Top Level*")
        
    def test_code_blocks_preserved(self):
        text = "Check this:\n```python\nprint('**No Bold**')\n```"
        formatted = SlackFormatter.convert(text)
        self.assertIn("```python\nprint('**No Bold**')\n```", formatted)
        self.assertNotIn("*No Bold*", formatted.replace('**No Bold**', '')) # Should NOT contain *No Bold*
        
    def test_mixed(self):
        text = "Hello **World**, check [this](url) out."
        expected = "Hello *World*, check <url|this> out."
        self.assertEqual(SlackFormatter.convert(text), expected)

if __name__ == '__main__':
    unittest.main()
