View tests

This commit is contained in:
Iacopo Spalletti 2014-06-11 01:06:57 +02:00
parent b2a8f28fe1
commit 58a9c41a21
7 changed files with 137 additions and 29 deletions

View file

@ -17,7 +17,7 @@ class BaseBlogView(ViewUrlMixin):
def get_queryset(self): def get_queryset(self):
language = get_language() language = get_language()
manager = self.model._default_manager.language(language) manager = self.model._default_manager.active_translations(language_code=language)
if not self.request.user.is_staff: if not self.request.user.is_staff:
manager = manager.filter(publish=True) manager = manager.filter(publish=True)
return manager return manager

View file

@ -55,6 +55,8 @@ try:
'filer', 'filer',
'parler', 'parler',
'taggit', 'taggit',
'meta',
'meta_mixin',
'easy_thumbnails', 'easy_thumbnails',
'djangocms_text_ckeditor', 'djangocms_text_ckeditor',
'cmsplugin_filer_image', 'cmsplugin_filer_image',

View file

@ -7,6 +7,7 @@ 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 django.utils.translation import activate
from six import StringIO from six import StringIO
from djangocms_blog.models import BlogCategory, Post from djangocms_blog.models import BlogCategory, Post
@ -27,7 +28,7 @@ class BaseTest(TestCase):
'it': [ 'it': [
{'title': u'Primo post', 'abstract': u'<p>prima riga</p>', {'title': u'Primo post', 'abstract': u'<p>prima riga</p>',
'description': u'Questa è la descrizione', 'keywords': u'keyword1, keyword2', 'description': u'Questa è la descrizione', 'keywords': u'keyword1, keyword2',
'text': u'Testo del post'}, 'text': u'Testo del post',},
{'title': u'Secondo post', 'abstract': u'<p>prima riga del secondo post</p>', {'title': u'Secondo post', 'abstract': u'<p>prima riga del secondo post</p>',
'description': u'Descrizione del secondo post', 'keywords': u'keyword3, keyword4', 'description': u'Descrizione del secondo post', 'keywords': u'keyword3, keyword4',
'text': u'Testo del secondo post'}, 'text': u'Testo del secondo post'},
@ -50,10 +51,15 @@ class BaseTest(TestCase):
cls.user_normal = User.objects.create(username='normal') cls.user_normal = User.objects.create(username='normal')
def setUp(self): def setUp(self):
activate('en')
super(BaseTest, self).setUp() super(BaseTest, self).setUp()
self.category_1 = BlogCategory.objects.create() self.category_1 = BlogCategory.objects.create()
self.category_1.name = u'category 1' self.category_1.name = u'category 1'
self.category_1.save() self.category_1.save()
self.category_1.set_current_language('it')
self.category_1.name = u'categoria 1'
self.category_1.save()
self.category_1.set_current_language('en')
self.thumb_1 = ThumbnailOption.objects.create( self.thumb_1 = ThumbnailOption.objects.create(
name='base', width=100, height=100, crop=True, upscale=False name='base', width=100, height=100, crop=True, upscale=False
) )

View file

@ -201,29 +201,3 @@ class ModelsTest(BaseTest):
copy_plugins_to(plugins, post_2.content) copy_plugins_to(plugins, post_2.content)
new = downcast_plugins(post_2.content.cmsplugin_set.all()) new = downcast_plugins(post_2.content.cmsplugin_set.all())
self.assertEqual(set(new[0].authors.all()), set([self.user])) self.assertEqual(set(new[0].authors.all()), set([self.user]))
"""
'title': 'title',
'description': 'get_description',
'og_description': 'get_description',
'twitter_description': 'get_description',
'gplus_description': 'get_description',
'keywords': 'get_keywords',
'locale': None,
'image': 'get_image_url',
'object_type': settings.BLOG_TYPE,
'og_type': settings.BLOG_FB_TYPE,
'og_app_id': settings.BLOG_FB_APPID,
'og_profile_id': settings.BLOG_FB_PROFILE_ID,
'og_publisher': settings.BLOG_FB_PUBLISHER,
'og_author_url': settings.BLOG_FB_AUTHOR_URL,
'twitter_type': settings.BLOG_TWITTER_TYPE,
'twitter_site': settings.BLOG_TWITTER_SITE,
'twitter_author': settings.BLOG_TWITTER_AUTHOR,
'gplus_type': settings.BLOG_GPLUS_TYPE,
'gplus_author': settings.BLOG_GPLUS_AUTHOR,
'published_time': 'date_published',
'modified_time': 'date_modified',
'expiration_time': 'date_published_end',
'tag': 'get_tags',
'url': 'get_absolute_url',"""

View file

@ -0,0 +1,6 @@
{% include "page.html" %}
{% block content %}
<div class="app app-blog span8">
{% block content_blog %}{% endblock %}
</div>
{% endblock content %}

View file

@ -1,6 +1,9 @@
{% load cms_tags sekizai_tags %} {% load cms_tags sekizai_tags %}
{% render_block "css" %} {% render_block "css" %}
{% cms_toolbar %} {% cms_toolbar %}
{% placeholder "placeholder" %}
{% block content %}
{% placeholder "placeholder" %}
{% endblock content %}
{% render_block "js" %} {% render_block "js" %}

117
tests/test_views.py Normal file
View file

@ -0,0 +1,117 @@
# -*- coding: utf-8 -*-
from datetime import date
from django.contrib.auth.models import AnonymousUser
from django.http import Http404
from django.utils.translation import activate
from djangocms_blog.views import PostListView, PostDetailView, PostArchiveView
from . import BaseTest
class ViewTest(BaseTest):
def test_post_list_view(self):
page1, page2 = self.get_pages()
post_1 = self._get_post(self.data['en'][0])
post_1 = self._get_post(self.data['it'][0], post_1, 'it')
post_1.publish = True
post_1.save()
post_1.set_current_language('en')
post_2 = self._get_post(self.data['en'][1])
post_2 = self._get_post(self.data['it'][1], post_2, 'it')
post_2.set_current_language('en')
request = self.get_page_request(page1, AnonymousUser(), r'/en/blog/', edit=False)
activate('en')
view_obj = PostListView()
view_obj.request = request
self.assertEqual(list(view_obj.get_queryset()), [post_1])
request = self.get_page_request(page1, self.user, r'/en/blog/', edit=False)
view_obj.request = request
self.assertEqual(set(view_obj.get_queryset()), set([post_1, post_2]))
view_obj.kwargs = {}
view_obj.object_list = view_obj.get_queryset()
view_obj.paginate_by = 1
context = view_obj.get_context_data()
self.assertTrue(context['is_paginated'])
self.assertEqual(list(context['post_list']), [post_2])
self.assertEqual(context['paginator'].count, 2)
self.assertEqual(context['post_list'][0].title, 'Second post')
response = view_obj.render_to_response(context)
self.assertContains(response, context['post_list'][0].get_absolute_url())
request = self.get_page_request(page1, self.user, r'/it/blog/', lang_code='it', edit=False)
activate('it')
view_obj.request = request
view_obj.object_list = view_obj.get_queryset()
context = view_obj.get_context_data()
self.assertEqual(context['post_list'][0].title, 'Secondo post')
response = view_obj.render_to_response(context)
self.assertContains(response, context['post_list'][0].get_absolute_url())
def test_post_detail_view(self):
page1, page2 = self.get_pages()
post_1 = self._get_post(self.data['en'][0])
post_1 = self._get_post(self.data['it'][0], post_1, 'it')
post_1.publish = True
post_1.save()
post_1.set_current_language('en')
post_2 = self._get_post(self.data['en'][1])
post_2 = self._get_post(self.data['it'][1], post_2, 'it')
post_2.set_current_language('en')
request = self.get_page_request(page1, AnonymousUser(), r'/en/blog/', edit=False)
activate('en')
view_obj = PostDetailView()
view_obj.request = request
with self.assertRaises(Http404):
view_obj.kwargs = {'slug': 'not-existing'}
post_obj = view_obj.get_object()
view_obj.kwargs = {'slug': post_1.slug}
post_obj = view_obj.get_object()
self.assertEqual(post_obj, post_1)
self.assertEqual(post_obj.language_code, 'en')
request = self.get_page_request(page1, AnonymousUser(), r'/it/blog/', lang_code='it', edit=False)
activate('it')
view_obj.request = request
post_obj = view_obj.get_object()
self.assertEqual(post_obj, post_1)
self.assertEqual(post_obj.language_code, 'it')
view_obj.object = post_obj
context = view_obj.get_context_data()
self.assertEqual(context['post'], post_1)
self.assertEqual(context['post'].language_code, 'it')
self.assertTrue(context['meta'])
def test_post_archive_view(self):
page1, page2 = self.get_pages()
post_1 = self._get_post(self.data['en'][0])
post_1 = self._get_post(self.data['it'][0], post_1, 'it')
post_1.publish = True
post_1.save()
post_1.set_current_language('en')
post_2 = self._get_post(self.data['en'][1])
post_2 = self._get_post(self.data['it'][1], post_2, 'it')
post_2.set_current_language('en')
request = self.get_page_request(page1, AnonymousUser(), r'/en/blog/', edit=False)
activate('en')
view_obj = PostArchiveView()
view_obj.request = request
view_obj.kwargs = {'year': date.today().year, 'month': date.today().month}
# One post only, anonymous request
qs = view_obj.get_queryset()
self.assertEqual(qs.count(), 1)
self.assertEqual(list(qs), [post_1])
view_obj.object_list = qs
context = view_obj.get_context_data()
self.assertEqual(context['archive_date'], date(year=date.today().year, month=date.today().month, day=1))