Phase 2: T-201 至 T-206 前台 MVP 全部实现(11 templates + CSS + 31 tests)

This commit is contained in:
ila
2026-07-06 22:57:08 +08:00
parent 5604e2cde5
commit cff3c64c19
20 changed files with 996 additions and 98 deletions
+53 -15
View File
@@ -5,6 +5,14 @@ from home.models import HomePage
from wagtail.models import Page, Site
from wagtail.test.utils import WagtailPageTestCase
from core.models import (
Language,
ScenarioPage,
SkeletonProjectPage,
ScenarioIndexPage,
ProjectIndexPage,
)
class Smoketest(TestCase):
def test_homepage_returns_200(self):
@@ -12,33 +20,63 @@ class Smoketest(TestCase):
self.assertEqual(response.status_code, 200)
class HomeSetUpTests(WagtailPageTestCase):
"""
Tests for basic page structure setup and HomePage creation.
"""
class HomepageContextTests(TestCase):
@classmethod
def setUpTestData(cls):
root = Page.get_first_root_node()
cls.home = HomePage.objects.get(slug="home")
scenario_index = ScenarioIndexPage(title="Scenarios", slug="scenarios")
cls.home.add_child(instance=scenario_index)
cls.scenario = ScenarioPage(title="Test Scenario", slug="test-scenario")
scenario_index.add_child(instance=cls.scenario)
project_index = ProjectIndexPage(title="Projects", slug="projects")
cls.home.add_child(instance=project_index)
lang = Language.objects.create(name="Python", slug="python")
project = SkeletonProjectPage(
title="Featured Project",
slug="featured-project",
summary="A featured test project",
github_url="https://github.com/test/featured",
maturity="stable",
recommended_for="Testing",
structure_score=4, docs_score=4, tests_score=3,
example_score=3, dependency_score=3, incremental_score=3,
is_featured=True,
)
project_index.add_child(instance=project)
project.languages.add(lang)
project.scenarios.add(cls.scenario)
project.save()
def test_homepage_contains_featured_project(self):
response = self.client.get("/")
self.assertEqual(response.status_code, 200)
self.assertContains(response, "Featured Project")
class HomeSetUpTests(WagtailPageTestCase):
def test_root_create(self):
root_page = Page.objects.get(pk=1)
self.assertIsNotNone(root_page)
def test_homepage_create(self):
root_page = Page.objects.get(pk=1)
homepage = HomePage(title="Home")
homepage = HomePage(title="Home Test")
root_page.add_child(instance=homepage)
self.assertTrue(HomePage.objects.filter(title="Home").exists())
self.assertTrue(HomePage.objects.filter(title="Home Test").exists())
class HomeTests(WagtailPageTestCase):
"""
Tests for homepage functionality and rendering.
"""
def setUp(self):
"""
Create a homepage instance for testing.
"""
root_page = Page.get_first_root_node()
Site.objects.create(hostname="testsite", root_page=root_page, is_default_site=True)
Site.objects.create(
hostname="testsite", root_page=root_page, is_default_site=True
)
self.homepage = HomePage(title="Home")
root_page.add_child(instance=self.homepage)
@@ -47,4 +85,4 @@ class HomeTests(WagtailPageTestCase):
def test_homepage_template_used(self):
response = self.client.get(self.homepage.url)
self.assertTemplateUsed(response, "home/home_page.html")
self.assertTemplateUsed(response, "home/home_page.html")