From be9c02a12bdc726d73720d4209161f433fddeb17 Mon Sep 17 00:00:00 2001 From: Iacopo Spalletti Date: Tue, 10 Jun 2014 08:19:34 +0200 Subject: [PATCH] Add plugin tests --- runtests.py | 9 ++++++ tests/test_plugins.py | 72 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 tests/test_plugins.py diff --git a/runtests.py b/runtests.py index 40f8406..b76eb79 100644 --- a/runtests.py +++ b/runtests.py @@ -7,6 +7,8 @@ try: settings.configure( DEBUG=True, + THUMBNAIL_DEBUG=True, + TEMPLATE_DEBUG=True, USE_TZ=True, DATABASES={ 'default': { @@ -53,6 +55,7 @@ try: 'filer', 'parler', 'taggit', + 'easy_thumbnails', 'djangocms_text_ckeditor', 'cmsplugin_filer_image', 'django_select2', @@ -98,6 +101,12 @@ try: META_USE_OG_PROPERTIES=True, META_USE_TWITTER_PROPERTIES=True, META_USE_GOOGLEPLUS_PROPERTIES=True, + THUMBNAIL_PROCESSORS=( + 'easy_thumbnails.processors.colorspace', + 'easy_thumbnails.processors.autocrop', + 'filer.thumbnail_processors.scale_and_crop_with_subject_location', + 'easy_thumbnails.processors.filters', + ) ) from django_nose import NoseTestSuiteRunner diff --git a/tests/test_plugins.py b/tests/test_plugins.py new file mode 100644 index 0000000..07fd1ee --- /dev/null +++ b/tests/test_plugins.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +import re +from cms.api import add_plugin +from django.core.urlresolvers import reverse +from django.template import RequestContext +from taggit.models import Tag + +from . import BaseTest + + +class PluginTest(BaseTest): + + def test_plugin_latest(self): + page1, page2 = self.get_pages() + post_1 = self._get_post(self.data['en'][0]) + post_2 = self._get_post(self.data['en'][1]) + post_1.tags.add('tag 1') + post_1.publish = True + post_1.save() + ph = page1.placeholders.get(slot='placeholder') + plugin = add_plugin(ph, 'BlogLatestEntriesPlugin', language='en') + tag = Tag.objects.get(slug='tag-1') + plugin.tags.add(tag) + request = self.get_page_request(page1, self.user, r'/en/blog/', lang_code='en', edit=True) + context = RequestContext(request, {}) + rendered = plugin.render_plugin(context, ph) + self.assertTrue(rendered.find('cms_plugin-djangocms_blog-post-abstract-1') > -1) + self.assertTrue(rendered.find(reverse('djangocms_blog:posts-tagged', kwargs={'tag': tag.slug})) > -1) + self.assertTrue(rendered.find('

first line

') > -1) + self.assertTrue(rendered.find('
-1) + self.assertTrue(rendered.find(post_1.get_absolute_url()) > -1) + + def test_plugin_authors(self): + page1, page2 = self.get_pages() + post_1 = self._get_post(self.data['en'][0]) + post_2 = self._get_post(self.data['en'][1]) + post_1.publish = True + post_1.save() + post_2.publish = True + post_2.save() + ph = page1.placeholders.get(slot='placeholder') + plugin = add_plugin(ph, 'BlogAuthorPostsPlugin', language='en') + plugin.authors.add(self.user) + request = self.get_page_request(page1, self.user, r'/en/blog/', lang_code='en', edit=True) + context = RequestContext(request, {}) + rendered = plugin.render_plugin(context, ph) + self.assertTrue(rendered.find(reverse('djangocms_blog:posts-author', kwargs={'username': self.user.username})) > -1) + self.assertTrue(rendered.find('2 articles') > -1) + + def test_plugin_tags(self): + page1, page2 = self.get_pages() + post_1 = self._get_post(self.data['en'][0]) + post_2 = self._get_post(self.data['en'][1]) + post_1.tags.add('tag 1', 'tag 2', 'test tag') + post_1.publish = True + post_1.save() + post_2.tags.add('test tag', 'another tag') + post_2.publish = True + post_2.save() + ph = page1.placeholders.get(slot='placeholder') + plugin = add_plugin(ph, 'BlogTagsPlugin', language='en') + request = self.get_page_request(page1, self.user, r'/en/blog/', lang_code='en', edit=True) + context = RequestContext(request, {}) + rendered = plugin.render_plugin(context, ph).replace("\n", "") + for tag in Tag.objects.all(): + self.assertTrue(rendered.find(reverse('djangocms_blog:posts-tagged', kwargs={'tag': tag.slug})) > -1) + if tag.slug == 'test-tag': + rf = '\s+%s\s+\(\s+%s articles' % (tag.name, 2) + else: + rf = '\s+%s\s+\(\s+%s article' % (tag.name, 1) + rx = re.compile(rf) + self.assertEqual(len(rx.findall(rendered)), 1) \ No newline at end of file