"""Test functions for wqflask/api/markdown.py""" import unittest from unittest import mock from dataclasses import dataclass from gn2.wqflask.api.markdown import render_markdown @dataclass class MockRequests404: status_code: int = 404 @dataclass class MockRequests200: status_code: int = 200 content: str = b""" # Glossary This is some content ## Sub-heading This is another sub-heading""" class TestMarkdownRoutesFunctions(unittest.TestCase): """Test cases for functions in markdown""" @mock.patch('gn2.wqflask.api.markdown.requests.get') def test_render_markdown_when_fetching_locally(self, requests_mock): requests_mock.return_value = MockRequests404() markdown_content = render_markdown("general/glossary/glossary.md") requests_mock.assert_called_with( "https://raw.githubusercontent.com" "/genenetwork/gn-docs/" "master/general/" "glossary/glossary.md") self.assertRegex(markdown_content, "Content for general/glossary/glossary.md not available.") @mock.patch('gn2.wqflask.api.markdown.requests.get') def test_render_markdown_when_fetching_remotely(self, requests_mock): requests_mock.return_value = MockRequests200() markdown_content = render_markdown("general/glossary/glossary.md") requests_mock.assert_called_with( "https://raw.githubusercontent.com" "/genenetwork/gn-docs/" "master/general/" "glossary/glossary.md") self.assertEqual("""<h1>Glossary</h1> <p>This is some content</p> <h2>Sub-heading</h2> <p>This is another sub-heading</p>""", markdown_content)