diff --git a/djangocms_blog/views.py b/djangocms_blog/views.py
index 21e49ab..913b5ed 100644
--- a/djangocms_blog/views.py
+++ b/djangocms_blog/views.py
@@ -17,7 +17,7 @@ class BaseBlogView(ViewUrlMixin):
def get_queryset(self):
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:
manager = manager.filter(publish=True)
return manager
diff --git a/runtests.py b/runtests.py
index b76eb79..d2e44b9 100644
--- a/runtests.py
+++ b/runtests.py
@@ -55,6 +55,8 @@ try:
'filer',
'parler',
'taggit',
+ 'meta',
+ 'meta_mixin',
'easy_thumbnails',
'djangocms_text_ckeditor',
'cmsplugin_filer_image',
diff --git a/tests/__init__.py b/tests/__init__.py
index 418473b..a311d6b 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -7,6 +7,7 @@ from cmsplugin_filer_image.models import ThumbnailOption
from django.contrib.auth.models import User
from django.http import SimpleCookie
from django.test import TestCase, RequestFactory
+from django.utils.translation import activate
from six import StringIO
from djangocms_blog.models import BlogCategory, Post
@@ -27,7 +28,7 @@ class BaseTest(TestCase):
'it': [
{'title': u'Primo post', 'abstract': u'
prima riga
',
'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'prima riga del secondo post
',
'description': u'Descrizione del secondo post', 'keywords': u'keyword3, keyword4',
'text': u'Testo del secondo post'},
@@ -50,10 +51,15 @@ class BaseTest(TestCase):
cls.user_normal = User.objects.create(username='normal')
def setUp(self):
+ activate('en')
super(BaseTest, self).setUp()
self.category_1 = BlogCategory.objects.create()
self.category_1.name = u'category 1'
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(
name='base', width=100, height=100, crop=True, upscale=False
)
diff --git a/tests/test_models.py b/tests/test_models.py
index 11212b4..8aa79d6 100644
--- a/tests/test_models.py
+++ b/tests/test_models.py
@@ -201,29 +201,3 @@ class ModelsTest(BaseTest):
copy_plugins_to(plugins, post_2.content)
new = downcast_plugins(post_2.content.cmsplugin_set.all())
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',"""
\ No newline at end of file
diff --git a/tests/test_utils/templates/base.html b/tests/test_utils/templates/base.html
new file mode 100644
index 0000000..7d7532c
--- /dev/null
+++ b/tests/test_utils/templates/base.html
@@ -0,0 +1,6 @@
+{% include "page.html" %}
+{% block content %}
+
+ {% block content_blog %}{% endblock %}
+
+{% endblock content %}
\ No newline at end of file
diff --git a/tests/test_utils/templates/page.html b/tests/test_utils/templates/page.html
index a536b92..1f1b1cf 100644
--- a/tests/test_utils/templates/page.html
+++ b/tests/test_utils/templates/page.html
@@ -1,6 +1,9 @@
{% load cms_tags sekizai_tags %}
{% render_block "css" %}
{% cms_toolbar %}
-{% placeholder "placeholder" %}
+
+{% block content %}
+ {% placeholder "placeholder" %}
+{% endblock content %}
{% render_block "js" %}
\ No newline at end of file
diff --git a/tests/test_views.py b/tests/test_views.py
new file mode 100644
index 0000000..86cba63
--- /dev/null
+++ b/tests/test_views.py
@@ -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))
\ No newline at end of file