1 from django
.conf
import settings
2 from django
.contrib
.sites
.models
import Site
, RequestSite
, get_current_site
3 from django
.core
.exceptions
import ObjectDoesNotExist
4 from django
.http
import HttpRequest
5 from django
.test
import TestCase
8 class SitesFrameworkTests(TestCase
):
11 Site(id=settings
.SITE_ID
, domain
="example.com", name
="example.com").save()
12 self
.old_Site_meta_installed
= Site
._meta
.installed
13 Site
._meta
.installed
= True
16 Site
._meta
.installed
= self
.old_Site_meta_installed
18 def test_site_manager(self
):
19 # Make sure that get_current() does not return a deleted Site object.
20 s
= Site
.objects
.get_current()
21 self
.assert_(isinstance(s
, Site
))
23 self
.assertRaises(ObjectDoesNotExist
, Site
.objects
.get_current
)
25 def test_site_cache(self
):
26 # After updating a Site object (e.g. via the admin), we shouldn't return a
27 # bogus value from the SITE_CACHE.
28 site
= Site
.objects
.get_current()
29 self
.assertEqual(u
"example.com", site
.name
)
30 s2
= Site
.objects
.get(id=settings
.SITE_ID
)
31 s2
.name
= "Example site"
33 site
= Site
.objects
.get_current()
34 self
.assertEqual(u
"Example site", site
.name
)
36 def test_get_current_site(self
):
37 # Test that the correct Site object is returned
38 request
= HttpRequest()
40 "SERVER_NAME": "example.com",
43 site
= get_current_site(request
)
44 self
.assert_(isinstance(site
, Site
))
45 self
.assertEqual(site
.id, settings
.SITE_ID
)
47 # Test that an exception is raised if the sites framework is installed
48 # but there is no matching Site
50 self
.assertRaises(ObjectDoesNotExist
, get_current_site
, request
)
52 # A RequestSite is returned if the sites framework is not installed
53 Site
._meta
.installed
= False
54 site
= get_current_site(request
)
55 self
.assert_(isinstance(site
, RequestSite
))
56 self
.assertEqual(site
.name
, u
"example.com")