1+ from cms .models import GlobalPagePermission , Site
12from cms .test_utils .testcases import CMSTestCase
23from cms .utils .urlutils import admin_reverse
34
5+ from djangocms_versioning .constants import ARCHIVED , DRAFT , PUBLISHED
46from djangocms_versioning .helpers import get_latest_admin_viewable_content
57from djangocms_versioning .models import Version
68from djangocms_versioning .test_utils .blogpost .admin import BlogContentAdmin
@@ -88,26 +90,50 @@ class TestVersionState(CMSTestCase):
8890 def test_page_indicators (self ):
8991 """The page content indicators render correctly"""
9092 page = PageFactory (node__depth = 1 ) if TreeNode else PageFactory (depth = 1 )
93+ user = self ._create_user (
94+ "albert" ,
95+ is_staff = True ,
96+ is_superuser = False ,
97+ permissions = ["change_version" , "change_page" , "publish_page" ]
98+ )
99+ gpp = GlobalPagePermission .objects .create (
100+ user = user ,
101+ can_add = True ,
102+ can_change = True ,
103+ can_delete = True ,
104+ can_publish = True ,
105+ can_move_page = True ,
106+ can_change_permissions = True ,
107+ can_view = True ,
108+ )
109+ gpp .sites .set ([Site .objects .get_current ()])
91110 version1 = PageVersionFactory (
92111 content__page = page ,
93112 content__language = "en" ,
113+ locked_by = None ,
94114 )
95115 pk = version1 .pk
96116
97117 page_tree = admin_reverse ("cms_pagecontent_get_tree" )
98- with self .login_user_context (self . get_superuser () ):
118+ with self .login_user_context (user ):
99119 # New page has draft version, nothing else
100120 response = self .client .get (page_tree , {"language" : "en" })
121+ # Check markers
101122 self .assertNotContains (response , "cms-pagetree-node-state-empty" )
102123 self .assertContains (response , "cms-pagetree-node-state-draft" )
103124 self .assertNotContains (response , "cms-pagetree-node-state-published" )
104125 self .assertNotContains (response , "cms-pagetree-node-state-dirty" )
105126 self .assertNotContains (response , "cms-pagetree-node-state-unpublished" )
127+ # Check actions
128+ self .assertContains (response , "Manage Versions..." )
129+ self .assertContains (response , "Publish" )
106130
107131 # Now archive
108132 response = self .client .post (admin_reverse ("djangocms_versioning_pagecontentversion_archive" ,
109133 args = (pk ,)))
110134 self .assertEqual (response .status_code , 302 ) # Sends a redirect
135+ self .assertEqual (Version .objects .get (pk = pk ).state , ARCHIVED )
136+
111137 # Is archived indicator? No draft indicator
112138 response = self .client .get (page_tree , {"language" : "en" })
113139 self .assertContains (response , "cms-pagetree-node-state-archived" )
@@ -117,21 +143,26 @@ def test_page_indicators(self):
117143 response = self .client .post (admin_reverse ("djangocms_versioning_pagecontentversion_revert" ,
118144 args = (pk ,)))
119145 self .assertEqual (response .status_code , 302 ) # Sends a redirect
146+ pk = Version .objects .filter_by_content_grouping_values (version1 .content ).order_by ("-pk" )[0 ].pk
147+ self .assertEqual (Version .objects .get (pk = pk ).state , DRAFT )
148+
120149 # Is draft indicator? No archived indicator
121150 response = self .client .get (page_tree , {"language" : "en" })
122151 self .assertContains (response , "cms-pagetree-node-state-draft" )
123152 self .assertNotContains (response , "cms-pagetree-node-state-archived" )
124153 # New draft was created, get new pk
125- pk = Version .objects .filter_by_content_grouping_values (version1 .content ).order_by ("-pk" )[0 ].pk
126154
127155 # Now publish
128156 response = self .client .post (admin_reverse ("djangocms_versioning_pagecontentversion_publish" ,
129157 args = (pk ,)))
130158 self .assertEqual (response .status_code , 302 ) # Sends a redirect
159+ self .assertEqual (Version .objects .get (pk = pk ).state , PUBLISHED )
131160 # Is published indicator? No draft indicator
132161 response = self .client .get (page_tree , {"language" : "en" })
133162 self .assertContains (response , "cms-pagetree-node-state-published" )
134163 self .assertNotContains (response , "cms-pagetree-node-state-draft" )
164+ # Check actions
165+ self .assertContains (response , "Unpublish" )
135166
136167 # Now unpublish
137168 response = self .client .post (admin_reverse ("djangocms_versioning_pagecontentversion_unpublish" ,
0 commit comments