29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
import unittest
|
|
|
|
import app as application
|
|
|
|
|
|
class CodeSnippetTestCase(unittest.TestCase):
|
|
def test_fenced_code_is_parsed_with_its_language(self):
|
|
blocks = application.article_blocks('Intro\n```python\nprint("hi")\n```\nEnd', [])
|
|
|
|
self.assertEqual(blocks[0], ("text", "Intro\n"))
|
|
self.assertEqual(blocks[1], ("code", {"language": "python", "content": 'print("hi")'}))
|
|
self.assertEqual(blocks[2], ("text", "\nEnd"))
|
|
|
|
def test_code_fence_keeps_image_marker_as_literal_code(self):
|
|
image = {"filename": "step.webp"}
|
|
blocks = application.article_blocks("```\n[[image:1]]\n```\n[[image:1]]", [image])
|
|
|
|
self.assertEqual(blocks[0], ("code", {"language": "text", "content": "[[image:1]]"}))
|
|
self.assertEqual(blocks[1], ("text", "\n"))
|
|
self.assertEqual(blocks[2], ("image", image))
|
|
|
|
def test_unterminated_fence_is_plain_text(self):
|
|
body = "```python\nprint('not closed')"
|
|
|
|
self.assertEqual(application.article_blocks(body, []), [("text", body)])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main() |