Fix w/ tests for LP 844442 -- dash sidebar module loading respects different 'type' params for duplicate names.
This commit is contained in:
parent
00f8973dfb
commit
be64d2e02d
@ -1,6 +1,6 @@
|
||||
{% for module in modules %}
|
||||
<h3>{{module.title}}</h3>
|
||||
|
||||
|
||||
<ul class="sub_nav">
|
||||
{% for link in module.links %}
|
||||
<li><a {% if request.get_full_path == link.url %} class="active" {% endif %} href="{{link.url}}">{{link.text}}</a></li>
|
||||
|
@ -28,8 +28,8 @@ register = template.Library()
|
||||
def dash_sidebar_modules(request):
|
||||
signals_call = signals.dash_modules_detect()
|
||||
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}
|
||||
else:
|
||||
return {}
|
||||
@ -39,8 +39,8 @@ def dash_sidebar_modules(request):
|
||||
def syspanel_sidebar_modules(request):
|
||||
signals_call = signals.dash_modules_detect()
|
||||
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}
|
||||
else:
|
||||
return {}
|
||||
|
@ -309,13 +309,13 @@ class ApiHelperTests(test.TestCase):
|
||||
GLANCE_URL = 'http://glance/glanceapi/'
|
||||
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')
|
||||
|
||||
url = api.url_for(self.request, 'glance', admin=False)
|
||||
url = api.url_for(self.request, 'image', admin=False)
|
||||
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')
|
||||
|
||||
url = api.url_for(self.request, 'compute')
|
||||
@ -1238,7 +1238,7 @@ class GlanceApiTests(test.TestCase):
|
||||
client_instance.auth_tok = TEST_TOKEN
|
||||
|
||||
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()
|
||||
|
||||
|
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()
|
Loading…
x
Reference in New Issue
Block a user