T-301: SEO 基础(meta description fallback + canonical + sitemap + 40 tests)

This commit is contained in:
ila
2026-07-06 23:28:52 +08:00
parent 7fea89216d
commit 6dd1711164
7 changed files with 241 additions and 11 deletions
+41 -1
View File
@@ -444,4 +444,44 @@ class ArticlePageTests(PageTreeMixin, TestCase):
article.related_projects.add(project)
self.assertEqual(article.related_projects.count(), 1)
self.assertEqual(article.related_projects.first().title, "Related Project")
self.assertEqual(article.related_projects.first().title, "Related Project")
class SEOTests(PageTreeMixin, TestCase):
@classmethod
def setUpTestData(cls):
cls.setUpPageTree()
cls.lang = Language.objects.create(name="Rust", slug="rust")
def test_homepage_meta_description(self):
resp = self.client.get("/")
self.assertContains(resp, '<meta name="description"')
def test_homepage_canonical(self):
resp = self.client.get("/")
self.assertContains(resp, 'rel="canonical"')
def test_project_detail_meta_description(self):
project = SkeletonProjectPage(
title="SEO Project",
slug="seo-project",
summary="An SEO test project with detailed description for testing meta tags.",
github_url="https://github.com/test/seo",
maturity="stable",
recommended_for="Testing meta tags",
structure_score=4, docs_score=4, tests_score=3,
example_score=3, dependency_score=3, incremental_score=3,
)
self.project_index.add_child(instance=project)
project.languages.add(self.lang)
project.scenarios.add(self.scenario)
project.save()
resp = self.client.get(project.url)
self.assertContains(resp, '<meta name="description"')
self.assertContains(resp, "SEO test project")
self.assertContains(resp, 'rel="canonical"')
def test_sitemap_returns_200(self):
resp = self.client.get("/sitemap.xml")
self.assertEqual(resp.status_code, 200)