Skip to content

Commit

Permalink
Add unittests for get_placeholder_data_view(), fixed in 1.1.10
Browse files Browse the repository at this point in the history
  • Loading branch information
vdboor committed Dec 15, 2016
1 parent fb8c38d commit 4014e13
Showing 1 changed file with 32 additions and 5 deletions.
37 changes: 32 additions & 5 deletions fluent_contents/tests/test_admin.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
from pprint import pformat
from django.contrib.admin import AdminSite
from django.contrib.admin.templatetags.admin_urls import admin_urlname
from django.contrib.auth.models import User
from django.contrib.messages.middleware import MessageMiddleware
from django.core.urlresolvers import reverse
from django.test import RequestFactory
from django.test.utils import override_settings # import location for Django 1.6-
from fluent_contents.models import Placeholder
from fluent_contents.tests import factories
from fluent_contents.tests.testapp.admin import PlaceholderFieldTestPageAdmin
from fluent_contents.tests.testapp.models import PlaceholderFieldTestPage, RawHtmlTestItem
from fluent_contents.tests.utils import AppTestCase
Expand Down Expand Up @@ -87,17 +89,42 @@ def test_add_page(self):
rawhtmltestitem = placeholder.contentitems.all()[0]
self.assertEqual(rawhtmltestitem.html, u'<b>foo</b>')

def test_copy_language_backend(self):
"""
Testing how the copy button works.
It calls the ``get_placeholder_data_view`` function.
"""
self.admin_site.register(PlaceholderFieldTestPage, PlaceholderFieldTestPageAdmin)
modeladmin = self.admin_site._registry[PlaceholderFieldTestPage]

page = factories.create_page()
placeholder = factories.create_placeholder(page=page)
item1 = factories.create_content_item(RawHtmlTestItem, placeholder=placeholder, html='AA')
item2 = factories.create_content_item(RawHtmlTestItem, placeholder=placeholder, html='BB')

request = self._get_request(admin_urlname(page._meta, 'get_placeholder_data'))
data = modeladmin.get_placeholder_data_view(request, page.pk).jsondata
self.assertEqual(len(data['formset_forms']), 2)
self.assertEqual(data['formset_forms'][0]['model'], 'RawHtmlTestItem')
self.assertEqual(data['formset_forms'][0]['contentitem_id'], item1.pk)
self.assertEqual(data['formset_forms'][1]['contentitem_id'], item2.pk)
self.assertTrue('AA' in data['formset_forms'][0]['html'])

def _get_request(self, url, data=None):
request = self.factory.post(url, data=data)
request.csrf_processing_done = True
request.session = {}
request.user = self.admin_user
MessageMiddleware().process_request(request)
return request

def _post_add(self, modeladmin, formdata):
opts = modeladmin.opts
url = reverse('admin:{0}_{1}_add'.format(*_get_url_format(opts)))

# Build request
# Add properties which middleware would typically do
request = self.factory.post(url, data=formdata)
request.csrf_processing_done = True
request.session = {}
request.user = self.admin_user
MessageMiddleware().process_request(request)
request = self._get_request(url, data=formdata)

# Make a direct call, circumvents login page.
return modeladmin.add_view(request)
Expand Down

0 comments on commit 4014e13

Please sign in to comment.