88 lines
2.8 KiB
Python
88 lines
2.8 KiB
Python
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") |