This commit is contained in:
GitHub Merge Button 2011-06-28 22:13:31 -07:00
commit 3d81244a3b
3 changed files with 62 additions and 23 deletions

View file

@ -11,9 +11,31 @@ from django.template import Context
from analytical.templatetags.chartbeat import ChartbeatTopNode, \
ChartbeatBottomNode
from analytical.tests.utils import TagTestCase
from analytical.tests.utils import TagTestCase, override_settings
from analytical.utils import AnalyticalException
@override_settings(INSTALLED_APPS=[
a for a in settings.INSTALLED_APPS if a != 'django.contrib.sites'])
class ChartbeatTagTestCaseNoSites(TagTestCase):
def test_rendering_setup_no_site(self):
r = ChartbeatBottomNode().render(Context())
self.assertTrue('var _sf_async_config={"uid": "12345"};' in r, r)
class ChartbeatTagTestCaseWithSites(TagTestCase):
def test_rendering_setup_site(self):
site = Site.objects.create(domain="test.com", name="test")
with override_settings(SITE_ID=site.id, CHARTBEAT_USER_ID="12345"):
r = ChartbeatBottomNode().render(Context())
self.assertTrue(re.search(
'var _sf_async_config={.*"uid": "12345".*};', r), r)
self.assertTrue(re.search(
'var _sf_async_config={.*"domain": "test.com".*};', r), r)
# Ensure django.contrib.sites is in INSTALLED_APPS
if "django.contrib.sites" not in settings.INSTALLED_APPS:
installed_apps = list(settings.INSTALLED_APPS)
installed_apps.append("django.contrib.sites")
ChartbeatTagTestCaseWithSites = override_settings(INSTALLED_APPS=installed_apps)(ChartbeatTagTestCaseWithSites)
class ChartbeatTagTestCase(TagTestCase):
"""
@ -58,25 +80,6 @@ class ChartbeatTagTestCase(TagTestCase):
self.settings_manager.set(CHARTBEAT_USER_ID='123abc')
self.assertRaises(AnalyticalException, ChartbeatBottomNode)
def test_rendering_setup_no_site(self):
installed_apps = [a for a in settings.INSTALLED_APPS
if a != 'django.contrib.sites']
self.settings_manager.set(INSTALLED_APPS=installed_apps)
r = ChartbeatBottomNode().render(Context())
self.assertTrue('var _sf_async_config={"uid": "12345"};' in r, r)
def test_rendering_setup_site(self):
installed_apps = list(settings.INSTALLED_APPS)
installed_apps.append('django.contrib.sites')
self.settings_manager.set(INSTALLED_APPS=installed_apps)
site = Site.objects.create(domain="test.com", name="test")
self.settings_manager.set(SITE_ID=site.id)
r = ChartbeatBottomNode().render(Context())
self.assertTrue(re.search(
'var _sf_async_config={.*"uid": "12345".*};', r), r)
self.assertTrue(re.search(
'var _sf_async_config={.*"domain": "test.com".*};', r), r)
def test_render_internal_ip(self):
self.settings_manager.set(ANALYTICAL_INTERNAL_IPS=['1.1.1.1'])
req = HttpRequest()

View file

@ -24,13 +24,13 @@ class ClickyTagTestCase(TagTestCase):
def test_tag(self):
r = self.render_tag('clicky', 'clicky')
self.assertTrue('var clicky_site_id = 12345678;' in r, r)
self.assertTrue('clicky_site_ids.push(12345678);' in r, r)
self.assertTrue('src="//in.getclicky.com/12345678ns.gif"' in r,
r)
def test_node(self):
r = ClickyNode().render(Context({}))
self.assertTrue('var clicky_site_id = 12345678;' in r, r)
self.assertTrue('clicky_site_ids.push(12345678);' in r, r)
self.assertTrue('src="//in.getclicky.com/12345678ns.gif"' in r,
r)

View file

@ -2,13 +2,49 @@
Testing utilities.
"""
from django.conf import settings
from __future__ import with_statement
from django.conf import settings, UserSettingsHolder
from django.core.management import call_command
from django.db.models import loading
from django.template import Template, Context, RequestContext
from django.test.simple import run_tests as django_run_tests
from django.test.testcases import TestCase as DjangoTestCase
from django.utils.functional import wraps
class override_settings(object):
"""
Acts as either a decorator, or a context manager. If it's a decorator it
takes a function and returns a wrapped function. If it's a contextmanager
it's used with the ``with`` statement. In either event entering/exiting
are called before and after, respectively, the function/block is executed.
Via: http://djangosnippets.org/snippets/2437/
"""
def __init__(self, **kwargs):
self.options = kwargs
self.wrapped = settings._wrapped
def __enter__(self):
self.enable()
def __exit__(self, exc_type, exc_value, traceback):
self.disable()
def __call__(self, func):
@wraps(func)
def inner(*args, **kwargs):
with self:
return func(*args, **kwargs)
return inner
def enable(self):
override = UserSettingsHolder(settings._wrapped)
for key, new_value in self.options.items():
setattr(override, key, new_value)
settings._wrapped = override
def disable(self):
settings._wrapped = self.wrapped
def run_tests(labels=()):
"""