Add support for apphook config
This commit is contained in:
parent
78d612a387
commit
f6e8e27687
23 changed files with 1308 additions and 428 deletions
|
|
@ -2,10 +2,11 @@
|
|||
from __future__ import absolute_import, print_function, unicode_literals
|
||||
|
||||
import copy
|
||||
from aldryn_apphooks_config.utils import get_app_instance
|
||||
|
||||
from django.utils.translation import activate
|
||||
from menus.menu_pool import menu_pool
|
||||
from parler.utils.context import switch_language
|
||||
from parler.utils.context import switch_language, smart_override
|
||||
|
||||
from djangocms_blog.views import CategoryEntriesView, PostDetailView
|
||||
|
||||
|
|
@ -13,13 +14,15 @@ from . import BaseTest
|
|||
|
||||
|
||||
class MenuTest(BaseTest):
|
||||
cats = []
|
||||
|
||||
def setUp(self):
|
||||
super(MenuTest, self).setUp()
|
||||
self.cats = [self.category_1]
|
||||
for i, cat_data in enumerate(self.cat_data['en']):
|
||||
cat = self._get_category(cat_data)
|
||||
if i < len(self.cat_data['it']):
|
||||
cat = self._get_category(self.cat_data['it'][i], cat, 'it')
|
||||
for i, lang_data in enumerate(self._categories_data):
|
||||
cat = self._get_category(lang_data['en'])
|
||||
if 'it' in lang_data:
|
||||
cat = self._get_category(lang_data['it'], cat, 'it')
|
||||
self.cats.append(cat)
|
||||
|
||||
activate('en')
|
||||
|
|
@ -32,54 +35,46 @@ class MenuTest(BaseTest):
|
|||
"""
|
||||
Tests if all categories are present in the menu
|
||||
"""
|
||||
self.get_posts()
|
||||
self.get_pages()
|
||||
|
||||
for lang in ('en', 'it'):
|
||||
request = self.get_page_request(None, self.user,
|
||||
r'/%s/blog/' % lang, edit=False)
|
||||
activate(lang)
|
||||
nodes = menu_pool.get_nodes(request, namespace='BlogCategoryMenu')
|
||||
nodes_copy = copy.deepcopy(nodes)
|
||||
for cat in self.cats:
|
||||
if not cat.has_translation(lang):
|
||||
continue
|
||||
with switch_language(cat, lang):
|
||||
# find in node list
|
||||
found = None
|
||||
for node in nodes_copy:
|
||||
if node.url == cat.get_absolute_url():
|
||||
found = node
|
||||
break
|
||||
self.assertIsNotNone(found)
|
||||
nodes_copy.remove(found)
|
||||
self.assertEqual(node.id, cat.id)
|
||||
self.assertEqual(node.title, cat.name)
|
||||
# check that all categories were found in menu
|
||||
self.assertEqual(len(nodes_copy), 0)
|
||||
request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang)
|
||||
with smart_override(lang):
|
||||
nodes = menu_pool.get_nodes(request, namespace='BlogCategoryMenu')
|
||||
nodes_url = set([node.url for node in nodes])
|
||||
cats_url = set([cat.get_absolute_url() for cat in self.cats if cat.has_translation(lang)])
|
||||
self.assertTrue(cats_url.issubset(nodes_url))
|
||||
|
||||
def test_modifier(self):
|
||||
"""
|
||||
Tests if correct category is selected in the menu
|
||||
according to context (view object)
|
||||
"""
|
||||
post1, post2 = self.get_posts()
|
||||
posts = self.get_posts()
|
||||
pages = self.get_pages()
|
||||
|
||||
tests = (
|
||||
# view class, view kwarg, view object, category
|
||||
(PostDetailView, 'slug', post1, post1.categories.first()),
|
||||
(PostDetailView, 'slug', posts[0], posts[0].categories.first()),
|
||||
(CategoryEntriesView, 'category', self.cats[2], self.cats[2])
|
||||
)
|
||||
for view_cls, kwarg, obj, cat in tests:
|
||||
request = self.get_page_request(None, self.user, r'/en/blog/', edit=False)
|
||||
activate('en')
|
||||
with switch_language(obj, 'en'):
|
||||
view_obj = view_cls()
|
||||
view_obj.request = request
|
||||
view_obj.kwargs = {kwarg: obj.slug}
|
||||
view_obj.get(request)
|
||||
# check if selected menu node points to cat
|
||||
nodes = menu_pool.get_nodes(request, namespace='BlogCategoryMenu')
|
||||
found = False
|
||||
for node in nodes:
|
||||
if node.selected:
|
||||
self.assertEqual(node.url, cat.get_absolute_url())
|
||||
found = True
|
||||
break
|
||||
self.assertTrue(found)
|
||||
request = self.get_page_request(pages[1], self.user, path=obj.get_absolute_url())
|
||||
with smart_override('en'):
|
||||
with switch_language(obj, 'en'):
|
||||
view_obj = view_cls()
|
||||
view_obj.request = request
|
||||
view_obj.namespace, view_obj.config = get_app_instance(request)
|
||||
view_obj.app_config = self.app_config_1
|
||||
view_obj.kwargs = {kwarg: obj.slug}
|
||||
view_obj.get(request)
|
||||
# check if selected menu node points to cat
|
||||
nodes = menu_pool.get_nodes(request, namespace='BlogCategoryMenu')
|
||||
found = False
|
||||
for node in nodes:
|
||||
if node.selected:
|
||||
self.assertEqual(node.url, obj.get_absolute_url())
|
||||
found = True
|
||||
break
|
||||
self.assertTrue(found)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue