diff --git a/wagtail/wagtailcore/tests.py b/wagtail/wagtailcore/tests.py
index ccf7fa1c3..d08bf8ddd 100644
--- a/wagtail/wagtailcore/tests.py
+++ b/wagtail/wagtailcore/tests.py
@@ -1,4 +1,4 @@
-from django.test import TestCase
+from django.test import TestCase, Client
from django.http import HttpRequest, Http404
from wagtail.wagtailcore.models import Page, Site
@@ -78,9 +78,6 @@ class TestRouting(TestCase):
used_template = response.resolve_template(response.template_name)
self.assertEqual(used_template.name, 'tests/event_page.html')
- self.assertContains(response, '
Christmas
')
- self.assertContains(response, 'Event
')
-
def test_route_to_unknown_page_returns_404(self):
homepage = Page.objects.get(url_path='/home/')
@@ -96,3 +93,48 @@ class TestRouting(TestCase):
request.path = '/events/tentative-unpublished-event/'
with self.assertRaises(Http404):
homepage.route(request, ['events', 'tentative-unpublished-event'])
+
+
+class TestServeView(TestCase):
+ fixtures = ['test.json']
+
+ def test_serve(self):
+ c = Client()
+ response = c.get('/events/christmas/')
+
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.templates[0].name, 'tests/event_page.html')
+ christmas_page = EventPage.objects.get(url_path='/home/events/christmas/')
+ self.assertEqual(response.context['self'], christmas_page)
+
+ self.assertContains(response, 'Christmas
')
+ self.assertContains(response, 'Event
')
+
+ def test_serve_unknown_page_returns_404(self):
+ c = Client()
+ response = c.get('/events/quinquagesima/')
+ self.assertEqual(response.status_code, 404)
+
+ def test_serve_unpublished_page_returns_404(self):
+ c = Client()
+ response = c.get('/events/tentative-unpublished-event/')
+ self.assertEqual(response.status_code, 404)
+
+ def test_serve_with_multiple_sites(self):
+ events_page = Page.objects.get(url_path='/home/events/')
+ events_site = Site.objects.create(hostname='events.example.com', root_page=events_page)
+
+ c = Client()
+ response = c.get('/christmas/', HTTP_HOST='events.example.com')
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.templates[0].name, 'tests/event_page.html')
+ christmas_page = EventPage.objects.get(url_path='/home/events/christmas/')
+ self.assertEqual(response.context['self'], christmas_page)
+
+ self.assertContains(response, 'Christmas
')
+ self.assertContains(response, 'Event
')
+
+ # same request to the default host should return a 404
+ c = Client()
+ response = c.get('/christmas/', HTTP_HOST='localhost')
+ self.assertEqual(response.status_code, 404)