Toolbar tests
This commit is contained in:
parent
123692c0f4
commit
1acc78cb31
5 changed files with 87 additions and 56 deletions
|
|
@ -13,7 +13,7 @@ class BlogToolbar(CMSToolbar):
|
||||||
|
|
||||||
def populate(self):
|
def populate(self):
|
||||||
if not (self.is_current_app and self.request.user.has_perm('djangocms_blog.add_post')):
|
if not (self.is_current_app and self.request.user.has_perm('djangocms_blog.add_post')):
|
||||||
return
|
return # pragma: no cover
|
||||||
admin_menu = self.toolbar.get_or_create_menu("djangocms_blog", _('Blog'))
|
admin_menu = self.toolbar.get_or_create_menu("djangocms_blog", _('Blog'))
|
||||||
url = reverse('admin:djangocms_blog_post_changelist')
|
url = reverse('admin:djangocms_blog_post_changelist')
|
||||||
admin_menu.add_modal_item(_('Post list'), url=url)
|
admin_menu.add_modal_item(_('Post list'), url=url)
|
||||||
|
|
@ -21,7 +21,7 @@ class BlogToolbar(CMSToolbar):
|
||||||
admin_menu.add_modal_item(_('Add post'), url=url)
|
admin_menu.add_modal_item(_('Add post'), url=url)
|
||||||
|
|
||||||
current_post = getattr(self.request, BLOG_CURRENT_POST_IDENTIFIER, None)
|
current_post = getattr(self.request, BLOG_CURRENT_POST_IDENTIFIER, None)
|
||||||
if current_post and self.request.user.has_perm('djangocms_blog.change_post'):
|
if current_post and self.request.user.has_perm('djangocms_blog.change_post'): # pragma: no cover
|
||||||
admin_menu.add_modal_item(_('Edit Post'),reverse(
|
admin_menu.add_modal_item(_('Edit Post'),reverse(
|
||||||
'admin:djangocms_blog_post_change', args=(current_post.pk,)),
|
'admin:djangocms_blog_post_change', args=(current_post.pk,)),
|
||||||
active=True)
|
active=True)
|
||||||
|
|
@ -3,12 +3,14 @@
|
||||||
Tests for `djangocms_blog` module.
|
Tests for `djangocms_blog` module.
|
||||||
"""
|
"""
|
||||||
from cms.utils.i18n import get_language_list
|
from cms.utils.i18n import get_language_list
|
||||||
|
from cmsplugin_filer_image.models import ThumbnailOption
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.http import SimpleCookie
|
from django.http import SimpleCookie
|
||||||
from django.test import TestCase, RequestFactory
|
from django.test import TestCase, RequestFactory
|
||||||
from six import StringIO
|
from six import StringIO
|
||||||
|
|
||||||
|
from djangocms_blog.models import BlogCategory, Post
|
||||||
|
|
||||||
|
|
||||||
class BaseTest(TestCase):
|
class BaseTest(TestCase):
|
||||||
"""
|
"""
|
||||||
|
|
@ -17,6 +19,28 @@ class BaseTest(TestCase):
|
||||||
request_factory = None
|
request_factory = None
|
||||||
user = None
|
user = None
|
||||||
languages = get_language_list()
|
languages = get_language_list()
|
||||||
|
category_1 = None
|
||||||
|
thumb_1 = None
|
||||||
|
thumb_2 = None
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'it': [
|
||||||
|
{'title': u'Primo post', 'abstract': u'<p>prima riga</p>',
|
||||||
|
'description': u'Questa è la descrizione', 'keywords': u'keyword1, keyword2',
|
||||||
|
'text': u'Testo del post'},
|
||||||
|
{'title': u'Secondo post', 'abstract': u'<p>prima riga del secondo post</p>',
|
||||||
|
'description': u'Descrizione del secondo post', 'keywords': u'keyword3, keyword4',
|
||||||
|
'text': u'Testo del secondo post'},
|
||||||
|
],
|
||||||
|
'en': [
|
||||||
|
{'title': u'First post', 'abstract': u'<p>first line</p>',
|
||||||
|
'description': u'This is the description', 'keywords': u'keyword1, keyword2',
|
||||||
|
'text': u'Post text'},
|
||||||
|
{'title': u'Second post', 'abstract': u'<p>second post first line</p>',
|
||||||
|
'description': u'Second post description', 'keywords': u'keyword3, keyword4',
|
||||||
|
'text': u'Second post text'}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
|
|
@ -25,6 +49,37 @@ class BaseTest(TestCase):
|
||||||
cls.user_staff = User.objects.create(username='staff', is_staff=True)
|
cls.user_staff = User.objects.create(username='staff', is_staff=True)
|
||||||
cls.user_normal = User.objects.create(username='normal')
|
cls.user_normal = User.objects.create(username='normal')
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(BaseTest, self).setUp()
|
||||||
|
self.category_1 = BlogCategory.objects.create()
|
||||||
|
self.category_1.name = u'category 1'
|
||||||
|
self.category_1.save()
|
||||||
|
self.thumb_1 = ThumbnailOption.objects.create(
|
||||||
|
name='base', width=100, height=100, crop=True, upscale=False
|
||||||
|
)
|
||||||
|
self.thumb_2 = ThumbnailOption.objects.create(
|
||||||
|
name='main', width=200, height=200, crop=False, upscale=False
|
||||||
|
)
|
||||||
|
|
||||||
|
def _get_post(self, data, post=None, lang='en'):
|
||||||
|
if not post:
|
||||||
|
post = Post()
|
||||||
|
post.set_current_language(lang)
|
||||||
|
post.author = self.user
|
||||||
|
post.title = data['title']
|
||||||
|
post.abstract = data['abstract']
|
||||||
|
post.meta_description = data['description']
|
||||||
|
post.meta_keywords = data['keywords']
|
||||||
|
post.save()
|
||||||
|
post.categories.add(self.category_1)
|
||||||
|
post.save()
|
||||||
|
return post
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def tearDownClass(cls):
|
||||||
|
User.objects.all().delete()
|
||||||
|
|
||||||
def get_pages(self):
|
def get_pages(self):
|
||||||
from cms.api import create_page, create_title
|
from cms.api import create_page, create_title
|
||||||
page = create_page(u'page one', 'page.html', language='en')
|
page = create_page(u'page one', 'page.html', language='en')
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,12 @@
|
||||||
from cms.api import add_plugin
|
from cms.api import add_plugin
|
||||||
from cms.utils.copy_plugins import copy_plugins_to
|
from cms.utils.copy_plugins import copy_plugins_to
|
||||||
from cms.utils.plugins import downcast_plugins
|
from cms.utils.plugins import downcast_plugins
|
||||||
from cmsplugin_filer_image.models import ThumbnailOption
|
|
||||||
from datetime import date
|
from datetime import date
|
||||||
from django.conf import settings as dj_settings
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
import parler
|
import parler
|
||||||
from taggit.models import Tag
|
from taggit.models import Tag
|
||||||
|
|
||||||
from djangocms_blog.models import BlogCategory, Post
|
from djangocms_blog.models import Post
|
||||||
from djangocms_blog import settings
|
from djangocms_blog import settings
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -18,51 +16,6 @@ from . import BaseTest
|
||||||
|
|
||||||
class ModelsTest(BaseTest):
|
class ModelsTest(BaseTest):
|
||||||
|
|
||||||
data = {
|
|
||||||
'it': [
|
|
||||||
{'title': u'Primo post', 'abstract': u'<p>prima riga</p>',
|
|
||||||
'description': u'Questa è la descrizione', 'keywords': u'keyword1, keyword2',
|
|
||||||
'text': u'Testo del post'},
|
|
||||||
{'title': u'Secondo post', 'abstract': u'<p>prima riga del secondo post</p>',
|
|
||||||
'description': u'Descrizione del secondo post', 'keywords': u'keyword3, keyword4',
|
|
||||||
'text': u'Testo del secondo post'},
|
|
||||||
],
|
|
||||||
'en': [
|
|
||||||
{'title': u'First post', 'abstract': u'<p>first line</p>',
|
|
||||||
'description': u'This is the description', 'keywords': u'keyword1, keyword2',
|
|
||||||
'text': u'Post text'},
|
|
||||||
{'title': u'Second post', 'abstract': u'<p>second post first line</p>',
|
|
||||||
'description': u'Second post description', 'keywords': u'keyword3, keyword4',
|
|
||||||
'text': u'Second post text'}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
super(ModelsTest, self).setUp()
|
|
||||||
self.category_1 = BlogCategory.objects.create()
|
|
||||||
self.category_1.name = u'category 1'
|
|
||||||
self.category_1.save()
|
|
||||||
self.thumb_1 = ThumbnailOption.objects.create(
|
|
||||||
name='base', width=100, height=100, crop=True, upscale=False
|
|
||||||
)
|
|
||||||
self.thumb_2 = ThumbnailOption.objects.create(
|
|
||||||
name='main', width=200, height=200, crop=False, upscale=False
|
|
||||||
)
|
|
||||||
|
|
||||||
def _get_post(self, data, post=None, lang='en'):
|
|
||||||
if not post:
|
|
||||||
post = Post()
|
|
||||||
post.set_current_language(lang)
|
|
||||||
post.author = self.user
|
|
||||||
post.title = data['title']
|
|
||||||
post.abstract = data['abstract']
|
|
||||||
post.meta_description = data['description']
|
|
||||||
post.meta_keywords = data['keywords']
|
|
||||||
post.save()
|
|
||||||
post.categories.add(self.category_1)
|
|
||||||
post.save()
|
|
||||||
return post
|
|
||||||
|
|
||||||
def test_model_attributes(self):
|
def test_model_attributes(self):
|
||||||
post = self._get_post(self.data['en'][0])
|
post = self._get_post(self.data['en'][0])
|
||||||
post = self._get_post(self.data['it'][0], post, 'it')
|
post = self._get_post(self.data['it'][0], post, 'it')
|
||||||
|
|
|
||||||
27
tests/test_toolbar.py
Normal file
27
tests/test_toolbar.py
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from cms.toolbar.items import ModalItem
|
||||||
|
from django.core.urlresolvers import reverse
|
||||||
|
from djangocms_blog.models import BLOG_CURRENT_POST_IDENTIFIER
|
||||||
|
|
||||||
|
|
||||||
|
from . import BaseTest
|
||||||
|
|
||||||
|
|
||||||
|
class ToolbarTest(BaseTest):
|
||||||
|
|
||||||
|
def test_toolbar_with_items(self):
|
||||||
|
"""
|
||||||
|
Test that Blog toolbar is present and contains all items
|
||||||
|
"""
|
||||||
|
from cms.toolbar.toolbar import CMSToolbar
|
||||||
|
post = self._get_post(self.data['en'][0])
|
||||||
|
page1, page2 = self.get_pages()
|
||||||
|
request = self.get_page_request(page1, self.user, r'/en/blog/', edit=True)
|
||||||
|
setattr(request, BLOG_CURRENT_POST_IDENTIFIER, post)
|
||||||
|
toolbar = CMSToolbar(request)
|
||||||
|
toolbar.get_left_items()
|
||||||
|
blog_menu = toolbar.menus['djangocms_blog']
|
||||||
|
self.assertEqual(len(blog_menu.find_items(ModalItem, url=reverse('admin:djangocms_blog_post_changelist'))), 1)
|
||||||
|
self.assertEqual(len(blog_menu.find_items(ModalItem, url=reverse('admin:djangocms_blog_post_add'))), 1)
|
||||||
|
self.assertEqual(len(blog_menu.find_items(ModalItem, url=reverse('admin:djangocms_blog_post_change', args=(post.pk,)))), 1)
|
||||||
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
{% load cms_tags sekizai_tags page_tags %}
|
{% load cms_tags sekizai_tags %}
|
||||||
{% render_block "css" %}
|
{% render_block "css" %}
|
||||||
{% cms_toolbar %}
|
{% cms_toolbar %}
|
||||||
{% placeholder "placeholder" %}
|
{% placeholder "placeholder" %}
|
||||||
|
|
||||||
{% page_tags request.current_page as ptags_list %}
|
|
||||||
{% title_tags request.current_page as ttags_list %}
|
|
||||||
{% include_page_tags request.current_page %}
|
|
||||||
{% include_title_tags request.current_page %}
|
|
||||||
{% render_block "js" %}
|
{% render_block "js" %}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue