diff --git a/tests/test_toolbar.py b/tests/test_toolbar.py index 90b6ccb..e3bc069 100644 --- a/tests/test_toolbar.py +++ b/tests/test_toolbar.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import, print_function, unicode_literals -from cms.toolbar.items import ModalItem +from cms.toolbar.items import ButtonList, ModalItem from django.core.urlresolvers import reverse +from django.utils.encoding import force_text from djangocms_blog.models import BLOG_CURRENT_POST_IDENTIFIER @@ -20,9 +21,39 @@ class ToolbarTest(BaseTest): pages = self.get_pages() request = self.get_page_request(pages[0], self.user, r'/en/blog/', edit=True) setattr(request, BLOG_CURRENT_POST_IDENTIFIER, posts[0]) + + posts[0].publish = False + posts[0].save() toolbar = CMSToolbar(request) + toolbar.populate() + toolbar.post_template_populate() 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=(posts[0].pk,)))), 1) + + # Publish button only appears if current post is unpublished + right = toolbar.get_right_items() + buttons = sum([item.buttons for item in right if isinstance(item, ButtonList)], []) + self.assertTrue([button for button in buttons if force_text(button.name) == 'Publish Blog now']) + + # Publish button does not appears if current post is published + posts[0].publish = True + posts[0].save() + toolbar = CMSToolbar(request) + toolbar.populate() + toolbar.post_template_populate() + right = toolbar.get_right_items() + buttons = sum([item.buttons for item in right if isinstance(item, ButtonList)], []) + self.assertFalse([button for button in buttons if force_text(button.name) == 'Publish Blog now']) + + # Publish button does not appears if other posts but the current one are unpublished + posts[1].publish = True + posts[1].save() + toolbar = CMSToolbar(request) + toolbar.populate() + toolbar.post_template_populate() + right = toolbar.get_right_items() + buttons = sum([item.buttons for item in right if isinstance(item, ButtonList)], []) + self.assertFalse([button for button in buttons if force_text(button.name) == 'Publish Blog now'])