Add tracked and freeform tag editing
Deploy production / deploy (push) Successful in 4s

This commit is contained in:
2026-08-13 15:56:02 -07:00
parent 841c213087
commit 6c762c3b33
8 changed files with 742 additions and 78 deletions
+19 -5
View File
@@ -54,11 +54,11 @@ class BlogEditorTests(unittest.TestCase):
values.update(overrides)
return values
def test_current_site_blog_records_and_controlled_tags_load(self) -> None:
def test_current_site_blog_records_and_tracked_tags_load(self) -> None:
repository = BlogRepository(Path(__file__).resolve().parents[1])
entries = repository.list_entries()
self.assertGreaterEqual(len(entries), 7)
self.assertGreaterEqual(len(repository.tags), 45)
self.assertGreaterEqual(len(repository.tags), 40)
self.assertTrue(all(entry.document.get("kicker") == "Blog" for entry in entries))
for entry in entries:
with self.subTest(slug=entry.slug):
@@ -126,9 +126,23 @@ class BlogEditorTests(unittest.TestCase):
self.repository.delete_entry(entry)
self.assertTrue(entry.path.is_file())
def test_unapproved_tag_is_rejected(self) -> None:
with self.assertRaisesRegex(BlogEditorError, "unapproved tag"):
self.repository.create_entry("test-entry", self.values(tags="invented"))
def test_freeform_tags_are_normalized_deduplicated_and_do_not_create_records(self) -> None:
entry = self.repository.create_entry(
"test-entry", self.values(tags="writing, Weird Experiment, weird-experiment")
)
self.assertEqual(entry.document.get("tags"), "writing, weird-experiment")
self.assertFalse((self.site_root / "content" / "tags" / "weird-experiment").exists())
def test_loading_and_saving_preserves_tracked_and_freeform_tags(self) -> None:
entry = self.repository.create_entry(
"test-entry", self.values(tags="writing, retrocomputing")
)
values = self.repository.values_for(entry.document)
values["summary"] = "Edited without changing tags."
saved = self.repository.save_entry(entry, values)
self.assertEqual(saved.document.get("tags"), "writing, retrocomputing")
def test_slug_suggestion_matches_repository_style(self) -> None:
self.assertEqual(suggest_slug("Were Testing: A GUI!"), "were-testing-a-gui")