Skip to content

Commit 1377bb9

Browse files
committed
Added a test to ensure preview endpoint fields are rendered read only
1 parent dbc49a6 commit 1377bb9

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

djangocms_snippet/admin.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from django.contrib import admin
44
from django.contrib.admin import helpers
55
from django.contrib.admin.exceptions import DisallowedModelAdminToField
6+
from django.contrib.admin.options import IS_POPUP_VAR, TO_FIELD_VAR
67
from django.contrib.admin.utils import flatten_fieldsets, unquote
78
from django.db import models
89
from django.forms import Textarea
@@ -27,9 +28,6 @@
2728
except ImportError:
2829
djangocms_versioning_enabled = False
2930

30-
TO_FIELD_VAR = '_to_field'
31-
IS_POPUP_VAR = '_popup'
32-
3331

3432
class SnippetAdmin(*snippet_admin_classes):
3533
list_display = ('name',)
@@ -144,12 +142,12 @@ def preview_view(self, request, snippet_id=None, form_url='', extra_context=None
144142
def get_urls(self):
145143
info = self.model._meta.app_label, self.model._meta.model_name
146144
return [
147-
url(
148-
r"^(?P<snippet_id>\d+)/preview/$",
149-
self.admin_site.admin_view(self.preview_view),
150-
name="{}_{}_preview".format(*info),
151-
),
152-
] + super().get_urls()
145+
url(
146+
r"^(?P<snippet_id>\d+)/preview/$",
147+
self.admin_site.admin_view(self.preview_view),
148+
name="{}_{}_preview".format(*info),
149+
),
150+
] + super().get_urls()
153151

154152
def has_delete_permission(self, request, obj=None):
155153
"""

tests/test_admin.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from django.shortcuts import reverse
55
from django.test import RequestFactory, override_settings
66

7+
from cms.utils.urlutils import admin_reverse
78
from cms.test_utils.testcases import CMSTestCase
89

910
from djangocms_versioning.models import Version
@@ -13,6 +14,8 @@
1314
from djangocms_snippet.forms import SnippetForm
1415
from djangocms_snippet.models import Snippet, SnippetGrouper
1516

17+
from .utils.factories import SnippetWithVersionFactory
18+
1619

1720
class SnippetAdminTestCase(CMSTestCase):
1821
def setUp(self):
@@ -209,3 +212,23 @@ def test_name_colomn_should_not_be_hyperlinked_with_versioning_enabled(self):
209212
self.assertContains(response, '<td class="field-name">Test Snippet</td>')
210213
self.assertNotContains(response, '<th class="field-slug"><a href="/en/admin/djangocms_snippet/'
211214
'snippet/1/change/">test-snippet</a></th>')
215+
216+
def test_preview_renders_read_only_fields(self):
217+
"""
218+
Check that the preview endpoint is rendered in read only mode
219+
"""
220+
self.snippet_version.publish(user=self.superuser)
221+
with self.login_user_context(self.superuser):
222+
edit_url = reverse("admin:djangocms_snippet_snippet_preview", args=(self.snippet.id,),)
223+
response = self.client.get(edit_url)
224+
225+
# Snippet name
226+
self.assertContains(response, '<div class="readonly">Test Snippet</div>')
227+
# Snippet slug
228+
self.assertContains(response, '<div class="readonly">test-snippet</div>')
229+
# Snippet HTML
230+
self.assertContains(response, '<div class="readonly">&lt;h1&gt;This is a test&lt;/h1&gt;</div>')
231+
# Snippet template
232+
self.assertContains(response, '<div class="readonly"></div>')
233+
234+

0 commit comments

Comments
 (0)