import unittest from markdownify import markdownify as md class BasicTests(unittest.TestCase): def test_single_tag(self): self.assertEqual(md('Hello'), 'Hello') def test_soup(self): self.assertEqual(md('
Hello
'), 'Hello') def test_whitespace(self): self.assertEqual(md(' a b \n\n c '), ' a b c ') class ArgTests(unittest.TestCase): def test_strip(self): self.assertEqual( md('Some Text', strip=['a']), 'Some Text') def test_do_not_strip(self): self.assertEqual( md('Some Text', strip=[]), '[Some Text](https://github.com/matthewwithanm)') def test_convert(self): self.assertEqual( md('Some Text', convert=['a']), '[Some Text](https://github.com/matthewwithanm)') def test_do_not_convert(self): self.assertEqual( md('Some Text', convert=[]), 'Some Text') class EscapeTests(unittest.TestCase): def test_underscore(self): self.assertEqual(md('_hey_dude_'), '\_hey\_dude\_') def test_xml_entities(self): self.assertEqual(md('&'), '&') def test_named_entities(self): self.assertEqual(md('»'), u'\xbb') def test_hexadecimal_entities(self): # This looks to be a bug in BeautifulSoup (fixed in bs4) that we have to work around. self.assertEqual(md('''), '\x27') def test_single_escaping_entities(self): self.assertEqual(md('&'), '&') class ConversionTests(unittest.TestCase): def test_a(self): self.assertEqual( md('Google'), '[Google](http://google.com)' ) def test_a_with_title(self): self.assertEqual( md('Google'), r'[Google](http://google.com "The \"Goog\"")' ) def test_b(self): self.assertEqual(md('Hello'), '**Hello**') def test_blockquote(self): self.assertEqual(md('
Hello
').strip(), '> Hello') def test_nested_blockquote(self): self.assertEqual( md('
And she was like
Hello
').strip(), '> And she was like \n> > Hello' ) def test_br(self): self.assertEqual(md('a
b
c'), 'a \nb \nc') def test_em(self): self.assertEqual(md('Hello'), '*Hello*') def test_h1(self): self.assertEqual(md('

Hello

'), 'Hello\n=====\n\n') def test_h2(self): self.assertEqual(md('

Hello

'), 'Hello\n-----\n\n') def test_hn(self): self.assertEqual(md('

Hello

'), '### Hello\n\n') self.assertEqual(md('
Hello
'), '###### Hello\n\n') def test_i(self): self.assertEqual(md('Hello'), '*Hello*') def test_ol(self): self.assertEqual(md('
  1. a
  2. b
'), '1. a\n2. b\n') def test_p(self): self.assertEqual(md('

hello

'), 'hello\n\n') def test_strong(self): self.assertEqual(md('Hello'), '**Hello**') def test_ul(self): self.assertEqual(md(''), '* a\n* b\n') class AdvancedTests(unittest.TestCase): def test_nested(self): self.assertEqual( md('

This is an example link.

'), 'This is an [example link](http://example.com/).\n\n' )