Skip to content

Commit

Permalink
use api.create_page instead of client.post
Browse files Browse the repository at this point in the history
  • Loading branch information
benjaoming committed Jan 20, 2013
1 parent 0c0ffa7 commit 70824ce
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 25 deletions.
33 changes: 31 additions & 2 deletions cms/test_utils/testcases.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ def get_staff_user_with_no_permissions(self):
staff.set_password("staff")
staff.save()
return staff

def get_new_page_data(self, parent_id=''):
page_data = {
'title': 'test page %d' % self.counter,
Expand All @@ -121,7 +121,36 @@ def get_new_page_data(self, parent_id=''):
page_data['pagepermission_set-2-MAX_NUM_FORMS'] = 0
self.counter = self.counter + 1
return page_data


def get_new_page_data_dbfields(self, parent=None, site=None,
language=None,
template='nav_playground.html',):
page_data = {
'title': 'test page %d' % self.counter,
'slug': 'test-page-%d' % self.counter,
'language': settings.LANGUAGES[0][0] if not language else language,
'template': template,
'parent': parent if parent else None,
'site': site if site else Site.objects.get_current(),
}
self.counter = self.counter + 1
return page_data

def get_pagedata_from_dbfields(self, page_data):
"""Converts data created by get_new_page_data_dbfields to data
created from get_new_page_data so you can switch between test cases
in api.create_page and client.post"""
page_data['site'] = page_data['site'].id
page_data['parent'] = page_data['parent'].id if page_data['parent'] else ''
# required only if user haves can_change_permission
page_data['pagepermission_set-TOTAL_FORMS'] = 0
page_data['pagepermission_set-INITIAL_FORMS'] = 0
page_data['pagepermission_set-MAX_NUM_FORMS'] = 0
page_data['pagepermission_set-2-TOTAL_FORMS'] = 0
page_data['pagepermission_set-2-INITIAL_FORMS'] = 0
page_data['pagepermission_set-2-MAX_NUM_FORMS'] = 0
return page_data

def print_page_structure(self, qs):
"""Just a helper to see the page struct.
"""
Expand Down
59 changes: 36 additions & 23 deletions cms/tests/multilingual.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from django.contrib.sites.models import Site
from django.conf import settings
import urllib
from cms import api


class MultilingualTestCase(CMSTestCase):
Expand Down Expand Up @@ -96,43 +97,55 @@ def test_create_page(self):
"""

site = Site.objects.get_current()
# Change site for this session
page_data = self.get_new_page_data()

# Create a new page, default language
page_data = self.get_new_page_data()
page_data['site'] = site.pk
page_data['title'] = 'changed title'
TESTLANG = settings.CMS_SITE_LANGUAGES[site.pk][0]
page_data['language'] = TESTLANG
page_data = self.get_new_page_data_dbfields(
site=site,
language=TESTLANG
)

page = api.create_page(**page_data)
title = page.get_title_obj()

# A title is set?
self.assertNotEqual(title, None)

# Publish and unpublish the page
page.published = True
page.save()
page.published = False
page.save()

# Has correct title and slug after calling save()?
self.assertEqual(page.get_title(), page_data['title'])
self.assertEqual(page.get_slug(), page_data['slug'])
self.assertEqual(page.placeholders.all().count(), 2)

# Were public instances created?
title = Title.objects.drafts().get(slug=page_data['slug'])

# Test that it's the default language
self.assertEqual(title.language, TESTLANG,
"not the same language as specified in settings.CMS_LANGUAGES")

# Do stuff using admin pages
superuser = self.get_superuser()
with self.login_user_context(superuser):
response = self.client.post(URL_CMS_PAGE_ADD, page_data)
self.assertRedirects(response, URL_CMS_PAGE)
title = Title.objects.get(slug=page_data['slug'])
self.assertNotEqual(title, None)
page = title.page
page.published = True
page.save()
self.assertEqual(page.get_title(), page_data['title'])
self.assertEqual(page.get_slug(), page_data['slug'])
self.assertEqual(page.placeholders.all().count(), 2)

# were public instances created?
title = Title.objects.drafts().get(slug=page_data['slug'])

# Test that it's the default language
self.assertEqual(title.language, TESTLANG,
"not the same language as specified in settings.CMS_LANGUAGES")
page_data = self.get_pagedata_from_dbfields(page_data)

# Publish the old page version
# Publish page using the admin
page_data['published'] = True
response = self.client.post(URL_CMS_PAGE_CHANGE_LANGUAGE % (page.pk, TESTLANG),
page_data)

page = page.reload()
self.assertTrue(page.published)

# Create a different language using the edit admin page
# This test case is bound in actual experience...
# pull#1604
page_data2 = page_data.copy()
page_data2['title'] = 'ein Titel'
page_data2['slug'] = 'ein-slug'
Expand Down

0 comments on commit 70824ce

Please sign in to comment.