88
99
1010class DeletionTestCase (CMSTestCase ):
11- @override_settings (DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS = False )
11+ @override_settings (DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS = constants . DELETE_NONE )
1212 def test_deletion_not_possible (self ):
1313 # Since djangocms_versionings.models stores the setting, we need to update that copy
1414 versioning_models .ALLOW_DELETING_VERSIONS = settings .DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS
@@ -32,7 +32,7 @@ def test_deletion_not_possible(self):
3232 self .assertRaises (models .deletion .ProtectedError ,
3333 versioning_models .Version .objects .get (pk = pk1 ).content .delete )
3434
35- @override_settings (DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS = True )
35+ @override_settings (DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS = constants . DELETE_ANY )
3636 def test_deletion_possible (self ):
3737 # Since djangocms_versionings.models stores the setting, we need to update that copy
3838 versioning_models .ALLOW_DELETING_VERSIONS = settings .DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS
@@ -55,3 +55,52 @@ def test_deletion_possible(self):
5555 # try deleting and see if error is raised
5656 versioning_models .Version .objects .get (pk = pk1 ).content .delete ()
5757 self .assertIsNone (versioning_models .Version .objects .get (pk = version2 .pk ).source )
58+
59+ @override_settings (DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS = constants .DELETE_NON_PUBLIC_ONLY )
60+ def test_deletion_non_public_possible (self ):
61+ # Since djangocms_versionings.models stores the setting, we need to update that copy
62+ versioning_models .ALLOW_DELETING_VERSIONS = settings .DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS
63+ poll = factories .PollFactory ()
64+ version1 = factories .PollVersionFactory (
65+ content__poll = poll ,
66+ content__language = "en" ,
67+ )
68+ pk1 = version1 .pk
69+ # Now publish and then edit redirect to create a draft on top of published version
70+ version1 .publish (user = self .get_superuser ())
71+ self .assertEqual (versioning_models .Version .objects .get (pk = pk1 ).state , constants .PUBLISHED )
72+
73+ version2 = version1 .copy (created_by = self .get_superuser ())
74+ version2 .save ()
75+
76+ # Check of source field is set
77+ self .assertIsNotNone (version2 .source )
78+
79+ # try deleting and see if error is raised
80+ versioning_models .Version .objects .get (pk = pk1 ).content .delete ()
81+ self .assertIsNone (versioning_models .Version .objects .get (pk = version2 .pk ).source )
82+
83+ @override_settings (DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS = constants .DELETE_NON_PUBLIC_ONLY )
84+ def test_deletion_public_not_possible (self ):
85+ # Since djangocms_versionings.models stores the setting, we need to update that copy
86+ versioning_models .ALLOW_DELETING_VERSIONS = settings .DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS
87+ poll = factories .PollFactory ()
88+ version1 = factories .PollVersionFactory (
89+ content__poll = poll ,
90+ content__language = "en" ,
91+ )
92+ pk1 = version1 .pk
93+ # Now publish and then edit redirect to create a draft on top of published version
94+ version1 .publish (user = self .get_superuser ())
95+ self .assertEqual (versioning_models .Version .objects .get (pk = pk1 ).state , constants .PUBLISHED )
96+
97+ version2 = version1 .copy (created_by = self .get_superuser ())
98+ version2 .save ()
99+ version2 .publish (user = self .get_superuser ())
100+
101+ # Check of source field is set
102+ self .assertIsNotNone (version2 .source )
103+
104+ # try deleting and see if error is raised
105+ self .assertRaises (models .deletion .ProtectedError ,
106+ versioning_models .Version .objects .get (pk = pk1 ).content .delete )
0 commit comments