Fix w/ tests for LP 844442 -- dash sidebar module loading respects different 'type' params for duplicate names.
This commit is contained in:
@@ -28,8 +28,8 @@ register = template.Library()
|
|||||||
def dash_sidebar_modules(request):
|
def dash_sidebar_modules(request):
|
||||||
signals_call = signals.dash_modules_detect()
|
signals_call = signals.dash_modules_detect()
|
||||||
if signals_call:
|
if signals_call:
|
||||||
if signals_call[0][1]['type'] == "dash":
|
return {'modules': [module[1] for module in signals_call
|
||||||
return {'modules': [module[1] for module in signals_call],
|
if module[1]['type'] == "dash"],
|
||||||
'request': request}
|
'request': request}
|
||||||
else:
|
else:
|
||||||
return {}
|
return {}
|
||||||
@@ -39,8 +39,8 @@ def dash_sidebar_modules(request):
|
|||||||
def syspanel_sidebar_modules(request):
|
def syspanel_sidebar_modules(request):
|
||||||
signals_call = signals.dash_modules_detect()
|
signals_call = signals.dash_modules_detect()
|
||||||
if signals_call:
|
if signals_call:
|
||||||
if signals_call[0][1]['type'] == "syspanel":
|
return {'modules': [module[1] for module in signals_call
|
||||||
return {'modules': [module[1] for module in signals_call],
|
if module[1]['type'] == "syspanel"],
|
||||||
'request': request}
|
'request': request}
|
||||||
else:
|
else:
|
||||||
return {}
|
return {}
|
||||||
|
|||||||
@@ -309,13 +309,13 @@ class ApiHelperTests(test.TestCase):
|
|||||||
GLANCE_URL = 'http://glance/glanceapi/'
|
GLANCE_URL = 'http://glance/glanceapi/'
|
||||||
NOVA_URL = 'http://nova/novapi/'
|
NOVA_URL = 'http://nova/novapi/'
|
||||||
|
|
||||||
url = api.url_for(self.request, 'glance')
|
url = api.url_for(self.request, 'image')
|
||||||
self.assertEqual(url, GLANCE_URL + 'internal')
|
self.assertEqual(url, GLANCE_URL + 'internal')
|
||||||
|
|
||||||
url = api.url_for(self.request, 'glance', admin=False)
|
url = api.url_for(self.request, 'image', admin=False)
|
||||||
self.assertEqual(url, GLANCE_URL + 'internal')
|
self.assertEqual(url, GLANCE_URL + 'internal')
|
||||||
|
|
||||||
url = api.url_for(self.request, 'glance', admin=True)
|
url = api.url_for(self.request, 'image', admin=True)
|
||||||
self.assertEqual(url, GLANCE_URL + 'admin')
|
self.assertEqual(url, GLANCE_URL + 'admin')
|
||||||
|
|
||||||
url = api.url_for(self.request, 'compute')
|
url = api.url_for(self.request, 'compute')
|
||||||
@@ -1238,7 +1238,7 @@ class GlanceApiTests(test.TestCase):
|
|||||||
client_instance.auth_tok = TEST_TOKEN
|
client_instance.auth_tok = TEST_TOKEN
|
||||||
|
|
||||||
self.mox.StubOutWithMock(api, 'url_for')
|
self.mox.StubOutWithMock(api, 'url_for')
|
||||||
api.url_for(IsA(http.HttpRequest), 'glance').AndReturn(TEST_URL)
|
api.url_for(IsA(http.HttpRequest), 'image').AndReturn(TEST_URL)
|
||||||
|
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
|
||||||
|
|||||||
62
django-openstack/django_openstack/tests/templatetag_tests.py
Normal file
62
django-openstack/django_openstack/tests/templatetag_tests.py
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
import re
|
||||||
|
|
||||||
|
from django import dispatch, http, template
|
||||||
|
from django.utils.text import normalize_newlines
|
||||||
|
|
||||||
|
from django_openstack import signals, test
|
||||||
|
|
||||||
|
def single_line(text):
|
||||||
|
''' Quick utility to make comparing template output easier. '''
|
||||||
|
return re.sub(' +', ' ', normalize_newlines(text).replace('\n', '')).strip()
|
||||||
|
|
||||||
|
|
||||||
|
class TemplateTagTests(test.TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
super(TemplateTagTests, self).setUp()
|
||||||
|
self._signal = self.mox.CreateMock(dispatch.Signal)
|
||||||
|
|
||||||
|
def test_sidebar_modules(self):
|
||||||
|
'''
|
||||||
|
Tests for the sidebar module registration mechanism.
|
||||||
|
|
||||||
|
The standard "ping" signal return value looks like this:
|
||||||
|
|
||||||
|
tuple(<dash_apps_ping>, {
|
||||||
|
'title': 'Nixon',
|
||||||
|
'links': [{'url':'/syspanel/nixon/google',
|
||||||
|
'text':'Google', 'active_text': 'google'}],
|
||||||
|
'type': 'syspanel',
|
||||||
|
})
|
||||||
|
'''
|
||||||
|
self.mox.StubOutWithMock(signals, 'dash_modules_detect')
|
||||||
|
signals_call= (
|
||||||
|
(self._signal, {
|
||||||
|
'title': 'Nixon',
|
||||||
|
'links': [{'url':'/dash/nixon/google',
|
||||||
|
'text':'Google', 'active_text': 'google'}],
|
||||||
|
'type': 'dash',
|
||||||
|
}),
|
||||||
|
(self._signal, {
|
||||||
|
'title': 'Nixon',
|
||||||
|
'links': [{'url':'/syspanel/nixon/google',
|
||||||
|
'text':'Google', 'active_text': 'google'}],
|
||||||
|
'type': 'syspanel',
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
signals.dash_modules_detect().AndReturn(signals_call)
|
||||||
|
signals.dash_modules_detect().AndReturn(signals_call)
|
||||||
|
self.mox.ReplayAll()
|
||||||
|
|
||||||
|
context = template.Context({'request': self.request})
|
||||||
|
|
||||||
|
# Dash module is rendered correctly, and only in dash sidebar
|
||||||
|
ttext = '{% load sidebar_modules %}{% dash_sidebar_modules request %}'
|
||||||
|
t = template.Template(ttext)
|
||||||
|
self.assertEqual(single_line(t.render(context)) , '<h3>Nixon</h3> <ul class="sub_nav"> <li><a href="/dash/nixon/google">Google</a></li> </ul>')
|
||||||
|
|
||||||
|
# Syspanel module is rendered correctly and only in syspanel sidebar
|
||||||
|
ttext = '{% load sidebar_modules %}{% syspanel_sidebar_modules request %}'
|
||||||
|
t = template.Template(ttext)
|
||||||
|
self.assertEqual(single_line(t.render(context)) , '<h3>Nixon</h3> <ul class="sub_nav"> <li><a href="/syspanel/nixon/google">Google</a></li> </ul>')
|
||||||
|
|
||||||
|
self.mox.VerifyAll()
|
||||||
Reference in New Issue
Block a user