11from importlib import reload
2- from unittest import skipIf
32
4- from cms import __version__ as cms_version
53from cms .test_utils .testcases import CMSTestCase
64from cms .utils import get_current_site
75from django import __version__ as django_version
86from django .contrib import admin
97from django .contrib .sites .models import Site
108from django .shortcuts import reverse
119from django .test import RequestFactory , override_settings
10+ from djangocms_versioning .admin import ExtendedIndicatorVersionAdminMixin
1211
1312try :
1413 from djangocms_versioning .models import Version
@@ -86,20 +85,29 @@ def test_admin_list_display_without_versioning(self):
8685 self .assertEqual (self .snippet_admin .__class__ .__bases__ , (admin .ModelAdmin ,))
8786 self .assertEqual (list_display , ("slug" , "name" ))
8887
89- @skipIf (not cms_version .startswith ("4.0." ), "Django CMS 4 required" )
9088 @override_settings (DJANGOCMS_SNIPPET_VERSIONING_ENABLED = True )
9189 def test_admin_list_display_with_versioning (self ):
9290 """
9391 With versioning enabled, list_display should be populated with both versioning related items, and the
9492 list actions items
9593 """
96- from djangocms_versioning .admin import ExtendedVersionAdminMixin
97-
9894 list_display = self .snippet_admin .get_list_display (self .snippet_admin_request )
9995
10096 # Mixins should always come first in the class bases
101- self .assertEqual (self .snippet_admin .__class__ .__bases__ , (ExtendedVersionAdminMixin , admin .ModelAdmin ))
102- self .assertEqual (list_display [:- 1 ], ("name" , "get_author" , "get_modified_date" , "get_versioning_state" ))
97+ self .assertEqual (
98+ self .snippet_admin .__class__ .__bases__ ,
99+ (ExtendedIndicatorVersionAdminMixin , admin .ModelAdmin ),
100+ )
101+
102+ # Verify static fields
103+ self .assertEqual (list_display [:3 ], ("name" , "get_author" , "get_modified_date" ))
104+
105+ # Verify dynamic indicator
106+ indicator_field = list_display [3 ]
107+ self .assertTrue (callable (indicator_field ), f"{ indicator_field } is not callable" )
108+ self .assertEqual (indicator_field .__name__ , "indicator" )
109+
110+ # Verify actions
103111 self .assertEqual (list_display [- 1 ].short_description .lower (), "actions" )
104112
105113 def test_admin_uses_form (self ):
@@ -109,7 +117,6 @@ def test_admin_uses_form(self):
109117 """
110118 self .assertEqual (self .snippet_admin .form , SnippetForm )
111119
112- @skipIf (cms_version < "4" , "Django CMS 4 required" )
113120 @override_settings (DJANGOCMS_SNIPPET_VERSIONING_ENABLED = True )
114121 def test_admin_delete_button_disabled_versioning_enabled (self ):
115122 """
@@ -152,7 +159,6 @@ def test_admin_delete_button_available_versioning_disabled(self):
152159 response , '<a href="/en/admin/djangocms_snippet/snippet/1/delete/" class="deletelink">Delete</a>'
153160 )
154161
155- @skipIf (cms_version < "4" , "Django CMS 4 required" )
156162 @override_settings (DJANGOCMS_SNIPPET_VERSIONING_ENABLED = True )
157163 def test_admin_delete_endpoint_inaccessible_versioning_enabled (self ):
158164 """
@@ -196,7 +202,6 @@ def setUp(self):
196202 )
197203 self .snippet_version = Version .objects .create (content = self .snippet , created_by = self .superuser )
198204
199- @skipIf (cms_version < "4" , "Django CMS 4 required" )
200205 @override_settings (DJANGOCMS_SNIPPET_VERSIONING_ENABLED = True )
201206 def test_admin_form_save_method (self ):
202207 with self .login_user_context (self .superuser ):
@@ -214,7 +219,6 @@ def test_admin_form_save_method(self):
214219 self .assertEqual (Snippet ._base_manager .count (), 2 )
215220 self .assertEqual (SnippetGrouper ._base_manager .count (), 2 )
216221
217- @skipIf (cms_version < "4" , "Django CMS 4 required" )
218222 @override_settings (DJANGOCMS_SNIPPET_VERSIONING_ENABLED = True )
219223 def test_admin_form_edit_when_locked (self ):
220224 """
@@ -235,7 +239,7 @@ def test_admin_form_edit_when_locked(self):
235239 self .assertEqual (Snippet .objects .count (), 1 )
236240
237241 @override_settings (DJANGOCMS_SNIPPET_VERSIONING_ENABLED = False )
238- def test_slug_colomn_should_hyperlinked_with_versioning_disabled (self ):
242+ def test_slug_column_should_hyperlinked_with_versioning_disabled (self ):
239243 """
240244 Slug column should be visible and hyperlinked when versioning is disabled
241245 """
@@ -249,7 +253,6 @@ def test_slug_colomn_should_hyperlinked_with_versioning_disabled(self):
249253 '<th class="field-slug"><a href="/en/admin/djangocms_snippet/snippet/1/change/">test-snippet</a></th>' ,
250254 )
251255
252- @skipIf (cms_version < "4" , "Django CMS 4 required" )
253256 @override_settings (DJANGOCMS_SNIPPET_VERSIONING_ENABLED = True )
254257 def test_name_colomn_should_not_be_hyperlinked_with_versioning_enabled (self ):
255258 """
0 commit comments