Add tests for admin
This commit is contained in:
parent
eabc809e72
commit
150817a041
4 changed files with 51 additions and 23 deletions
|
|
@ -7,7 +7,6 @@ from django.conf import settings
|
||||||
from parler.admin import TranslatableAdmin
|
from parler.admin import TranslatableAdmin
|
||||||
|
|
||||||
from .models import Post, BlogCategory
|
from .models import Post, BlogCategory
|
||||||
from .settings import BLOG_USE_PLACEHOLDER, BLOG_MULTISITE
|
|
||||||
|
|
||||||
|
|
||||||
class BlogCategoryAdmin(EnhancedModelAdminMixin, TranslatableAdmin):
|
class BlogCategoryAdmin(EnhancedModelAdminMixin, TranslatableAdmin):
|
||||||
|
|
@ -48,6 +47,7 @@ class PostAdmin(EnhancedModelAdminMixin, FrontendEditableAdmin,
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_fieldsets(self, request, obj=None):
|
def get_fieldsets(self, request, obj=None):
|
||||||
|
from .settings import BLOG_USE_PLACEHOLDER, BLOG_MULTISITE
|
||||||
fsets = deepcopy(self._fieldsets)
|
fsets = deepcopy(self._fieldsets)
|
||||||
if not BLOG_USE_PLACEHOLDER:
|
if not BLOG_USE_PLACEHOLDER:
|
||||||
fsets[0][1]['fields'].append('post_text')
|
fsets[0][1]['fields'].append('post_text')
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ class GenericDateTaggedManager(TaggedFilterItem, TranslationManager):
|
||||||
def get_queryset(self, *args, **kwargs):
|
def get_queryset(self, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
return super(GenericDateTaggedManager, self).get_queryset(*args, **kwargs)
|
return super(GenericDateTaggedManager, self).get_queryset(*args, **kwargs)
|
||||||
except AttributeError:
|
except AttributeError: # pragma: no cover
|
||||||
return super(GenericDateTaggedManager, self).get_query_set(*args, **kwargs)
|
return super(GenericDateTaggedManager, self).get_query_set(*args, **kwargs)
|
||||||
if django.VERSION < (1, 8):
|
if django.VERSION < (1, 8):
|
||||||
get_query_set = get_queryset
|
get_query_set = get_queryset
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ from django.contrib.sites.models import Site
|
||||||
from django.core.files import File as DjangoFile
|
from django.core.files import File as DjangoFile
|
||||||
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, override
|
from django.utils.translation import activate
|
||||||
from filer.models import File, Image
|
from filer.models import File, Image
|
||||||
from PIL import Image as PilImage, ImageDraw
|
from PIL import Image as PilImage, ImageDraw
|
||||||
from six import StringIO
|
from six import StringIO
|
||||||
|
|
@ -164,16 +164,15 @@ class BaseTest(TestCase):
|
||||||
return request
|
return request
|
||||||
|
|
||||||
def get_posts(self, sites=None):
|
def get_posts(self, sites=None):
|
||||||
with override('en'):
|
post1 = self._get_post(self.data['en'][0], sites=sites)
|
||||||
post1 = self._get_post(self.data['en'][0], sites=sites)
|
post1 = self._get_post(self.data['it'][0], post1, 'it')
|
||||||
post1 = self._get_post(self.data['it'][0], post1, 'it')
|
post1.publish = True
|
||||||
post1.publish = True
|
post1.main_image = self.img
|
||||||
post1.main_image = self.img
|
post1.save()
|
||||||
post1.save()
|
post2 = self._get_post(self.data['en'][1], sites=sites)
|
||||||
post2 = self._get_post(self.data['en'][1], sites=sites)
|
post2 = self._get_post(self.data['it'][1], post2, 'it')
|
||||||
post2 = self._get_post(self.data['it'][1], post2, 'it')
|
post2.main_image = self.img
|
||||||
post2.main_image = self.img
|
post2.save()
|
||||||
post2.save()
|
|
||||||
return post1, post2
|
return post1, post2
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
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 django.contrib import admin
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
|
|
@ -16,6 +17,33 @@ from djangocms_blog import settings
|
||||||
from . import BaseTest
|
from . import BaseTest
|
||||||
|
|
||||||
|
|
||||||
|
class AdminTest(BaseTest):
|
||||||
|
|
||||||
|
def test_admin_fieldsets(self):
|
||||||
|
request = self.get_page_request('/', self.user_staff, r'/en/blog/', edit=False)
|
||||||
|
post_admin = admin.site._registry[Post]
|
||||||
|
|
||||||
|
settings.BLOG_USE_PLACEHOLDER = True
|
||||||
|
fsets = post_admin.get_fieldsets(request)
|
||||||
|
self.assertFalse('post_text' in fsets[0][1]['fields'])
|
||||||
|
settings.BLOG_USE_PLACEHOLDER = False
|
||||||
|
fsets = post_admin.get_fieldsets(request)
|
||||||
|
self.assertTrue('post_text' in fsets[0][1]['fields'])
|
||||||
|
settings.BLOG_USE_PLACEHOLDER = True
|
||||||
|
|
||||||
|
settings.BLOG_MULTISITE = True
|
||||||
|
fsets = post_admin.get_fieldsets(request)
|
||||||
|
self.assertTrue('sites' in fsets[1][1]['fields'][0])
|
||||||
|
settings.BLOG_MULTISITE = False
|
||||||
|
fsets = post_admin.get_fieldsets(request)
|
||||||
|
self.assertFalse('sites' in fsets[1][1]['fields'][0])
|
||||||
|
settings.BLOG_MULTISITE = True
|
||||||
|
|
||||||
|
request = self.get_page_request('/', self.user, r'/en/blog/', edit=False)
|
||||||
|
fsets = post_admin.get_fieldsets(request)
|
||||||
|
self.assertTrue('author' in fsets[1][1]['fields'][0])
|
||||||
|
|
||||||
|
|
||||||
class ModelsTest(BaseTest):
|
class ModelsTest(BaseTest):
|
||||||
|
|
||||||
def test_model_attributes(self):
|
def test_model_attributes(self):
|
||||||
|
|
@ -219,14 +247,15 @@ class ModelsTest(BaseTest):
|
||||||
self.assertEqual(set(new[0].authors.all()), set([self.user]))
|
self.assertEqual(set(new[0].authors.all()), set([self.user]))
|
||||||
|
|
||||||
def test_multisite(self):
|
def test_multisite(self):
|
||||||
post1 = self._get_post(self.data['en'][0], sites=(self.site_1,))
|
with override('en'):
|
||||||
post2 = self._get_post(self.data['en'][1], sites=(self.site_2,))
|
post1 = self._get_post(self.data['en'][0], sites=(self.site_1,))
|
||||||
post3 = self._get_post(self.data['en'][2], sites=(self.site_2, self.site_1))
|
post2 = self._get_post(self.data['en'][1], sites=(self.site_2,))
|
||||||
|
post3 = self._get_post(self.data['en'][2], sites=(self.site_2, self.site_1))
|
||||||
|
|
||||||
self.assertEqual(len(Post.objects.all()), 3)
|
self.assertEqual(len(Post.objects.all()), 3)
|
||||||
with self.settings(**{'SITE_ID': 1}):
|
with self.settings(**{'SITE_ID': self.site_1.pk}):
|
||||||
self.assertEqual(len(Post.objects.all().on_site()), 2)
|
self.assertEqual(len(Post.objects.all().on_site()), 2)
|
||||||
self.assertEqual(set(list(Post.objects.all().on_site())), set([post1, post3]))
|
self.assertEqual(set(list(Post.objects.all().on_site())), set([post1, post3]))
|
||||||
with self.settings(**{'SITE_ID': 2}):
|
with self.settings(**{'SITE_ID': self.site_2.pk}):
|
||||||
self.assertEqual(len(Post.objects.all().on_site()), 2)
|
self.assertEqual(len(Post.objects.all().on_site()), 2)
|
||||||
self.assertEqual(set(list(Post.objects.all().on_site())), set([post2, post3]))
|
self.assertEqual(set(list(Post.objects.all().on_site())), set([post2, post3]))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue