from django.test import TestCase 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): response = self.client.get("/") self.assertEqual(response.status_code, 200) 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 Test") root_page.add_child(instance=homepage) self.assertTrue(HomePage.objects.filter(title="Home Test").exists()) class HomeTests(WagtailPageTestCase): def setUp(self): root_page = Page.get_first_root_node() 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) def test_homepage_is_renderable(self): self.assertPageIsRenderable(self.homepage) def test_homepage_template_used(self): response = self.client.get(self.homepage.url) self.assertTemplateUsed(response, "home/home_page.html")