Skip to content

Commit 9e59ca0

Browse files
committed
✅ fix tests for versioning
1 parent 3018221 commit 9e59ca0

File tree

7 files changed

+74
-50
lines changed

7 files changed

+74
-50
lines changed

changes/1234.feature

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fix toolbar page content

cms_helper.py

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def gettext(s):
1919
"taggit",
2020
"taggit_autosuggest",
2121
"meta",
22+
"djangocms_versioning",
2223
# "djangocms_page_tags",
2324
"tests.test_utils",
2425
],

djangocms_page_meta/utils.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from cms.models import PageContent
12
from django.template.loader import render_to_string
23
from django.utils.safestring import mark_safe
34
from django.utils.translation import get_language_from_request
@@ -39,7 +40,7 @@ def get_page_meta(page, language):
3940
meta = cache.get(meta_key)
4041
if not meta:
4142
meta = Meta()
42-
title = page.get_content_obj(language)
43+
title = PageContent.admin_manager.filter(page=page, language=language).current_content().get()
4344
default_meta_image = DefaultMetaImage.objects.first().image
4445
meta.extra_custom_props = []
4546

tests/base.py

+8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from app_helper.base_test import CreateTestDataMixin
55
from cms.api import create_page, create_page_content
6+
from cms.models import PageContent
67
from cms.test_utils.testcases import CMSTestCase
78
from django.contrib.auth.models import Permission
89
from django.core.cache import cache
@@ -90,12 +91,14 @@ def create_pages(self):
9091

9192
main_data = deepcopy(page_data[self.language])
9293
main_data["language"] = self.language
94+
main_data["created_by"] = self.superuser
9395
page = create_page(**main_data)
9496

9597
for lang in self.languages[1:]:
9698
context_data = deepcopy(page_data[lang])
9799
context_data["language"] = lang
98100
context_data["page"] = page
101+
context_data["created_by"] = self.superuser
99102
create_page_content(**context_data)
100103

101104
if not home_set:
@@ -118,3 +121,8 @@ def _add_default_permissions(self, user):
118121
def create_filer_image_object(self):
119122
self.filer_image = self.create_filer_image(self.staff_user, self.image_name)
120123
return self.filer_image
124+
125+
def publish_page(self, page, language):
126+
content = PageContent.admin_manager.get(page=page, language=language)
127+
version = content.versions.first()
128+
version.publish(self.superuser)

tests/test_general.py

+37-28
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
from cms.models import PageContent
12
from django.conf import settings
23
from django.core.cache import cache
34
from django.template.base import Parser
45
from django.test import override_settings
56
from django.utils.functional import SimpleLazyObject
7+
from djangocms_versioning.constants import INDICATOR_DESCRIPTIONS
68

79
from djangocms_page_meta import models
810
from djangocms_page_meta.forms import PageMetaAdminForm, TitleMetaAdminForm
@@ -182,7 +184,8 @@ def test_custom_extra(self):
182184
page1 = self.create_pages()[0]
183185
page_meta = models.PageMeta.objects.create(extended_object=page1)
184186
page_meta.save()
185-
title_meta = models.TitleMeta.objects.create(extended_object=page1.get_content_obj("en"))
187+
content = PageContent.admin_manager.get(page=page1, language="en")
188+
title_meta = models.TitleMeta.objects.create(extended_object=content)
186189
title_meta.save()
187190

188191
models.GenericMetaAttribute.objects.create(page=page_meta, attribute="custom", name="attr", value="foo")
@@ -196,37 +199,41 @@ def test_custom_extra(self):
196199
meta = get_page_meta(page1, "it")
197200
self.assertEqual(meta.extra_custom_props, [("custom", "attr", "foo")])
198201

199-
# def test_publish_extra(self):
200-
# """
201-
# Test that modified GenericMetaAttribute are not copied multiple times on page publish
202-
# See issue #78
203-
# """
204-
# page1 = self.create_pages()[0]
205-
# page_meta = models.PageMeta.objects.create(extended_object=page1)
206-
# title_meta = models.TitleMeta.objects.create(extended_object=page1.get_content_obj("en"))
207-
# models.GenericMetaAttribute.objects.create(page=page_meta, attribute="custom", name="attr", value="foo")
208-
# models.GenericMetaAttribute.objects.create(title=title_meta, attribute="custom", name="attr", value="bar")
209-
#
210-
# page1.publish("en")
211-
# page_meta.extra.first().attribute = "new"
212-
# page_meta.extra.first().save()
213-
# title_meta.extra.first().attribute = "new"
214-
# title_meta.extra.first().save()
215-
#
216-
# page1.publish("en")
217-
# public = page1.get_public_object()
218-
# page_meta = models.PageMeta.objects.get(extended_object=public)
219-
# title_meta = models.TitleMeta.objects.get(extended_object=public.get_content_obj("en"))
220-
# self.assertEqual(page_meta.extra.count(), 1)
221-
# self.assertEqual(title_meta.extra.count(), 1)
202+
def test_publish_extra(self):
203+
"""
204+
Test that modified GenericMetaAttribute are not copied multiple times on page publish
205+
See issue #78
206+
"""
207+
page1 = self.create_pages()[0]
208+
page_meta = models.PageMeta.objects.create(extended_object=page1)
209+
content = PageContent.admin_manager.get(page=page1, language="en")
210+
title_meta = models.TitleMeta.objects.create(extended_object=content)
211+
models.GenericMetaAttribute.objects.create(page=page_meta, attribute="custom", name="attr", value="foo")
212+
models.GenericMetaAttribute.objects.create(title=title_meta, attribute="custom", name="attr", value="bar")
213+
214+
version = content.versions.first()
215+
version.publish(self.superuser)
216+
page_meta.extra.first().attribute = "new"
217+
page_meta.extra.first().save()
218+
title_meta.extra.first().attribute = "new"
219+
title_meta.extra.first().save()
220+
221+
new_version = version.copy(self.superuser)
222+
new_version.publish(self.superuser)
223+
public = page1 # page no longer versioned
224+
page_meta = models.PageMeta.objects.get(extended_object=public)
225+
title_meta = models.TitleMeta.objects.get(extended_object=public.get_content_obj("en"))
226+
self.assertEqual(page_meta.extra.count(), 1)
227+
self.assertEqual(title_meta.extra.count(), 1)
222228

223229
def test_str_methods(self):
224230
"""
225231
Models str are created
226232
"""
227233
page1 = self.create_pages()[0]
228234
page_meta = models.PageMeta.objects.create(extended_object=page1)
229-
title_meta = models.TitleMeta.objects.create(extended_object=page1.get_content_obj("en"))
235+
content = PageContent.admin_manager.get(page=page1, language="en")
236+
title_meta = models.TitleMeta.objects.create(extended_object=content)
230237
default_meta_image = models.DefaultMetaImage.objects.first()
231238
page_attr = models.GenericMetaAttribute.objects.create(
232239
page=page_meta, attribute="custom", name="attr", value="foo"
@@ -236,7 +243,7 @@ def test_str_methods(self):
236243
)
237244

238245
self.assertEqual(str(page_meta), f"Page Meta for {page1}")
239-
self.assertEqual(str(title_meta), f"Title Meta for {page1.get_content_obj('en')}")
246+
self.assertEqual(str(title_meta), f"Page Content Meta for {content}: {INDICATOR_DESCRIPTIONS['draft']}")
240247
self.assertEqual(str(default_meta_image), f"{default_meta_image.pk}")
241248
self.assertEqual(str(page_attr), f"Attribute {page_attr.name} for {page_meta}")
242249
self.assertEqual(str(title_attr), f"Attribute {title_attr.name} for {title_meta}")
@@ -258,7 +265,8 @@ def test_cache_cleanup_on_update_delete_meta(self):
258265
"""
259266
page1 = self.create_pages()[0]
260267
page_meta = models.PageMeta.objects.create(extended_object=page1)
261-
title_meta = models.TitleMeta.objects.create(extended_object=page1.get_content_obj("en"))
268+
content = PageContent.admin_manager.get(page=page1, language="en")
269+
title_meta = models.TitleMeta.objects.create(extended_object=content)
262270

263271
# cache objects
264272
for language in page1.get_languages():
@@ -299,7 +307,8 @@ def test_cache_cleanup_on_update_delete_page(self):
299307
"""
300308
page1 = self.create_pages()[0]
301309
page_meta = models.PageMeta.objects.create(extended_object=page1)
302-
title_meta = models.TitleMeta.objects.create(extended_object=page1.get_content_obj("en"))
310+
content = PageContent.admin_manager.get(page=page1, language="en")
311+
title_meta = models.TitleMeta.objects.create(extended_object=content)
303312

304313
# cache objects - cache keys must be pre calculated as the page will not exist anymore when running the
305314
# asserts

tests/test_templatetags.py

+21-19
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from cms.models import PageContent
2+
13
from djangocms_page_meta.models import GenericMetaAttribute, PageMeta, TitleMeta
24

35
from .base import BaseTest
@@ -17,8 +19,8 @@ def test_page_meta(self):
1719
GenericMetaAttribute.objects.create(page=page_ext, attribute="custom", name="attr", value="foo")
1820
# page1.publication_end_date = page1.publication_date + timedelta(days=1)
1921
page1.save()
20-
# page1.publish("it")
21-
# page1.publish("en")
22+
self.publish_page(page1, "it")
23+
self.publish_page(page1, "en")
2224

2325
response = self.client.get(page1.get_absolute_url("en"))
2426
self.assertContains(response, '<meta name="twitter:domain" content="example.com">')
@@ -39,7 +41,7 @@ def test_page_meta_robots_no_data(self):
3941
page_ext = PageMeta.objects.create(extended_object=page1)
4042
page_ext.save()
4143
page1.save()
42-
# page1.publish("en")
44+
self.publish_page(page1, "en")
4345
response = self.client.get(page1.get_absolute_url("en"))
4446
self.assertNotContains(response, '<meta name="robots"')
4547

@@ -53,7 +55,7 @@ def test_page_meta_robots_single(self):
5355
setattr(page_ext, key, val)
5456
page_ext.save()
5557
page1.save()
56-
# page1.publish("en")
58+
self.publish_page(page1, "en")
5759
response = self.client.get(page1.get_absolute_url("en"))
5860
self.assertContains(response, '<meta name="robots" content="noindex">')
5961

@@ -67,7 +69,7 @@ def test_page_meta_robots_multiple(self):
6769
setattr(page_ext, key, val)
6870
page_ext.save()
6971
page1.save()
70-
# page1.publish("en")
72+
self.publish_page(page1, "en")
7173
response = self.client.get(page1.get_absolute_url("en"))
7274
self.assertContains(response, '<meta name="robots" content="none, noimageindex, noarchive">')
7375

@@ -76,20 +78,20 @@ def test_title_meta(self):
7678
Test title-level templatetags
7779
"""
7880
page1 = self.create_pages()[0]
79-
title_en = page1.get_content_obj(language="en", fallback=False)
80-
title_it = page1.get_content_obj(language="it", fallback=False)
81-
title_ext = TitleMeta.objects.create(extended_object=title_en)
81+
content_en = PageContent.admin_manager.get(page=page1, language="en")
82+
content_it = PageContent.admin_manager.get(page=page1, language="it")
83+
title_ext = TitleMeta.objects.create(extended_object=content_en)
8284
for key, val in self.title_data.items():
8385
setattr(title_ext, key, val)
8486
title_ext.save()
8587
GenericMetaAttribute.objects.create(title=title_ext, attribute="custom", name="attr", value="foo-en")
86-
title_ext = TitleMeta.objects.create(extended_object=title_it)
88+
title_ext = TitleMeta.objects.create(extended_object=content_it)
8789
for key, val in self.title_data_it.items():
8890
setattr(title_ext, key, val)
8991
title_ext.save()
9092
GenericMetaAttribute.objects.create(title=title_ext, attribute="custom", name="attr", value="foo-it")
91-
# page1.publish("it")
92-
# page1.publish("en")
93+
self.publish_page(page1, "it")
94+
self.publish_page(page1, "en")
9395

9496
# Italian language
9597
response = self.client.get(page1.get_absolute_url("it"))
@@ -119,18 +121,18 @@ def test_fallbacks(self):
119121
Test title-level templatetags
120122
"""
121123
page1, page2 = self.create_pages()
122-
content_en = page1.get_content_obj(language="en", fallback=False)
124+
content_en = PageContent.admin_manager.get(page=page1, language="en")
123125
content_en.meta_description = self.title_data["description"]
124126
content_en.save()
125-
content_it = page1.get_content_obj(language="it", fallback=False)
127+
content_it = PageContent.admin_manager.get(page=page1, language="it")
126128
content_it.meta_description = self.title_data_it["description"]
127129
content_it.save()
128130
content_ext_en = TitleMeta.objects.create(extended_object=content_en)
129131
content_ext_en.save()
130132
content_ext_it = TitleMeta.objects.create(extended_object=content_it)
131133
content_ext_it.save()
132-
# page1.publish("it")
133-
# page1.publish("en")
134+
self.publish_page(page1, "it")
135+
self.publish_page(page1, "en")
134136

135137
# page1 = page1.get_draft_object()
136138
content_en = page1.get_content_obj(language="en", fallback=False)
@@ -179,10 +181,10 @@ def test_fallbacks(self):
179181
self.assertContains(response, '<meta name="twitter:description" content="twitter custom description">')
180182
self.assertContains(response, '<meta property="og:description" content="og custom description">')
181183

182-
title2_en = page2.get_content_obj(language="en", fallback=False)
183-
title2_en.meta_description = self.title_data["description"]
184-
title2_en.save()
185-
# page2.publish("en")
184+
content2_en = PageContent.admin_manager.get(page=page2, language="en")
185+
content2_en.meta_description = self.title_data["description"]
186+
content2_en.save()
187+
self.publish_page(page2, "en")
186188
# English language
187189
# A page with no title meta, and yet the meta description is there
188190
response = self.client.get(page2.get_absolute_url("en"))

tests/test_toolbar.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from cms.models import PageContent
12
from cms.toolbar.items import Menu, ModalItem, SubMenu
23
from cms.utils.i18n import get_language_object
34
from django.test.utils import override_settings
@@ -148,7 +149,8 @@ def test_toolbar_with_items(self):
148149

149150
page1 = self.create_pages()[0]
150151
page_ext = PageMeta.objects.create(extended_object=page1)
151-
title_meta = TitleMeta.objects.create(extended_object=page1.get_content_obj("en"))
152+
content = PageContent.admin_manager.get(page=page1, language="en")
153+
title_meta = TitleMeta.objects.create(extended_object=content)
152154
default_meta_image = DefaultMetaImage.objects.first()
153155
request = self.get_page_request(page1, self.staff_user)
154156
toolbar = CMSToolbar(request)
@@ -173,7 +175,7 @@ def test_toolbar_with_items(self):
173175
)
174176
url_change = False
175177
url_add = False
176-
for title in page1.pagecontent_set.all():
178+
for title in PageContent.admin_manager.filter(page=page1):
177179
language = get_language_object(title.language)
178180
titlemeta_menu = meta_menu.find_items(ModalItem, name="{}...".format(language["name"]))
179181
self.assertEqual(len(titlemeta_menu), 1)

0 commit comments

Comments
 (0)