"""Run with: python -m unittest discover -s tests -v.""" import os from pathlib import Path import tempfile from types import SimpleNamespace import unittest from unittest.mock import patch import middleMan class FormState(dict): """Blank form fixture; named fields are supplied by each test.""" def __missing__(self, key): return "" def __getattr__(self, key): return self[key] class MarkdownRenderingTests(unittest.TestCase): def render(self, **values): state = FormState(markdown_upload="language_model_template1.md", model_name="Example model") state.update(values) with patch.object(middleMan, "st", SimpleNamespace(session_state=state)): return middleMan.parse_into_jinja_markdown() def test_imported_markdown_preserves_literal_template_syntax(self): markdown = "# My card\n\n{{ 7 * 7 }}\n{% include 'README.md' %}\n" self.assertEqual(self.render(uploaded_markdown=markdown), markdown) def test_empty_import_is_not_replaced_with_a_default_template(self): self.assertEqual(self.render(uploaded_markdown=""), "") def test_imported_markdown_is_not_shared_with_another_session(self): marker = "SESSION_A_ONLY" self.assertEqual(self.render(uploaded_markdown=marker), marker) self.assertNotIn(marker, self.render()) def test_only_built_in_templates_can_be_loaded(self): for filename in ["README.md", "../language_model_template1.md", "/tmp/card.md"]: with self.subTest(filename=filename), self.assertRaises(ValueError): self.render(markdown_upload=filename) def test_built_in_templates_still_render_form_fields(self): for filename in ["language_model_template1.md", "current_card.md"]: with self.subTest(filename=filename): content = self.render(markdown_upload=filename) self.assertIn("Example model", content) self.assertNotIn("{{ model_id }}", content) def test_form_values_are_data_even_for_built_in_templates(self): self.assertIn("{{ 7 * 7 }}", self.render(model_name="{{ 7 * 7 }}")) def test_working_directory_cannot_shadow_built_in_templates(self): original_directory = Path.cwd() with tempfile.TemporaryDirectory() as directory: Path(directory, "language_model_template1.md").write_text("SHADOW_TEMPLATE") try: os.chdir(directory) content = self.render() finally: os.chdir(original_directory) self.assertNotIn("SHADOW_TEMPLATE", content) self.assertIn("Example model", content) if __name__ == "__main__": unittest.main()