Skip to content

Commit

Permalink
test case for adding new language versions of existing pages
Browse files Browse the repository at this point in the history
  • Loading branch information
benjaoming committed Jan 19, 2013
1 parent fed691c commit 921eb7b
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 3 deletions.
1 change: 1 addition & 0 deletions cms/test_utils/testcases.py
Expand Up @@ -19,6 +19,7 @@
URL_CMS_PAGE = "/en/admin/cms/page/"
URL_CMS_PAGE_ADD = urljoin(URL_CMS_PAGE, "add/")
URL_CMS_PAGE_CHANGE = urljoin(URL_CMS_PAGE, "%d/")
URL_CMS_PAGE_CHANGE_LANGUAGE = URL_CMS_PAGE_CHANGE + "?language=%s"
URL_CMS_PAGE_DELETE = urljoin(URL_CMS_PAGE_CHANGE, "delete/")
URL_CMS_PLUGIN_ADD = urljoin(URL_CMS_PAGE_CHANGE, "add-plugin/")
URL_CMS_PLUGIN_EDIT = urljoin(URL_CMS_PAGE_CHANGE, "edit-plugin/")
Expand Down
84 changes: 83 additions & 1 deletion cms/tests/multilingual.py
@@ -1,10 +1,15 @@
# -*- coding: utf-8 -*-
from cms.api import create_page, create_title, publish_page, add_plugin
from cms.middleware.multilingual import patch_response
from cms.test_utils.testcases import CMSTestCase
from cms.models import Title
from cms.test_utils.testcases import (CMSTestCase, URL_CMS_PAGE_ADD,
URL_CMS_PAGE, URL_CMS_PAGE_CHANGE,
URL_CMS_PAGE_CHANGE_LANGUAGE)
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.test.client import Client
from django.contrib.sites.models import Site
from django.conf import settings
import urllib


Expand Down Expand Up @@ -81,3 +86,80 @@ def test_no_unnecessary_language_cookie(self):
response = client.get('/')
self.assertNotIn('django_language', response.cookies)
self.assertNotIn('sessionid', response.cookies)


def test_create_page(self):
"""
Test that a page can be created via the admin
and that a new language can be created afterwards
"""

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

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")

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

# Create a different language using the edit admin page
page_data2 = page_data.copy()
page_data2['title'] = 'ein Titel'
page_data2['slug'] = 'ein-slug'
TESTLANG2 = 'de'
page_data2['language'] = TESTLANG2

# Ensure that the language version is not returned
# since it does not exist
try:
title_obj = page.get_title_obj(language=TESTLANG2, fallback=False)
does_not_exist_raised = False
except Title.DoesNotExist:
does_not_exist_raised = True
self.assertTrue(does_not_exist_raised, "DoesNotExist should have been raised")

# Now create it
response = self.client.post(URL_CMS_PAGE_CHANGE_LANGUAGE % (page.pk, TESTLANG2),
page_data2)

page = page.reload()

# Test the new language version
self.assertEqual(page.get_title(language=TESTLANG2), page_data2['title'])
self.assertEqual(page.get_slug(language=TESTLANG2), page_data2['slug'])

# Test the default language version (TESTLANG)
self.assertEqual(page.get_slug(language=TESTLANG, fallback=False), page_data['slug'])
self.assertEqual(page.get_title(language=TESTLANG, fallback=False), page_data['title'])
self.assertEqual(page.get_slug(fallback=False), page_data['slug'])
self.assertEqual(page.get_title(fallback=False), page_data['title'])

4 changes: 2 additions & 2 deletions cms/tests/page.py
Expand Up @@ -61,7 +61,7 @@ def test_create_page(self):
self.assertEqual(page.get_slug(), page_data['slug'])
self.assertEqual(page.placeholders.all().count(), 2)

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


Expand Down Expand Up @@ -404,7 +404,7 @@ def test_edit_page_other_site_and_language(self):
with self.login_user_context(superuser):
response = self.client.post(URL_CMS_PAGE_ADD, page_data)
self.assertRedirects(response, URL_CMS_PAGE)
page = Page.objects.get(title_set__slug=page_data['slug'])
page = Page.objects.get(title_set__slug=page_data['slug'])
with LanguageOverride(TESTLANG):
self.assertEqual(page.get_title(), 'changed title')

Expand Down

0 comments on commit 921eb7b

Please sign in to comment.