Skip to content

Commit dba0ff5

Browse files
feat: 🔧 ensure all content types have required settings
1 parent a9828d9 commit dba0ff5

20 files changed

+850
-8
lines changed

README.rst

+6
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ Dependencies
4040

4141
``cusy.cms`` depends on and installs the following add-ons:
4242

43+
- `collective.behavior.banner <https://github.com/collective/collective.behavior.banner>`_:
44+
Add banners and create slider/carousel from banners.
45+
- `collective.easyform <https://github.com/collective/collective.easyform>`_:
46+
Form Builder for Plone.
4347
- `cusy.exportimport <https://github.com/cusyio/cusy.exportimport>`_:
4448
Extensions and patches for collective.exportimport.
4549
- `cusy.restapi.easyform <https://github.com/cusyio/cusy.restapi.easyform>`_:
@@ -48,6 +52,8 @@ Dependencies
4852
Site and content info for plone.restapi.
4953
- `cusy.restapi.patches <https://github.com/cusyio/cusy.restapi.patches>`_:
5054
Patches and fixes for plone.restapi which are not yet released.
55+
- `plone.restapi <https://github.com/plone/plone.restapi>`_:
56+
RESTful hypermedia API for Plone.
5157

5258

5359

src/cusy/cms/profiles/default/registry/main.xml

-8
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0"?>
2+
<object meta_type="Dexterity FTI" name="Collection">
3+
4+
<!-- Allow discussion -->
5+
<property name="allow_discussion">True</property>
6+
7+
<!-- Enabled behaviors -->
8+
<property name="behaviors" purge="false">
9+
<element value="collective.behavior.banner" />
10+
<element value="plone.leadimage" />
11+
</property>
12+
13+
<!-- View information -->
14+
<property name="default_view_fallback">True</property>
15+
</object>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0"?>
2+
<object meta_type="Dexterity FTI" name="Document">
3+
4+
<!-- Allow discussion -->
5+
<property name="allow_discussion">True</property>
6+
7+
<!-- Enabled behaviors -->
8+
<property name="behaviors" purge="false">
9+
<element value="collective.behavior.banner" />
10+
<element value="plone.leadimage" />
11+
</property>
12+
13+
<!-- View information -->
14+
<property name="default_view_fallback">True</property>
15+
</object>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0"?>
2+
<object meta_type="Dexterity FTI" name="EasyForm">
3+
4+
<!-- Allow discussion -->
5+
<property name="allow_discussion">True</property>
6+
7+
<!-- Enabled behaviors -->
8+
<property name="behaviors" purge="false">
9+
<element value="collective.behavior.banner" />
10+
<element value="plone.leadimage" />
11+
</property>
12+
13+
<!-- View information -->
14+
<property name="default_view_fallback">True</property>
15+
</object>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0"?>
2+
<object meta_type="Dexterity FTI" name="Event">
3+
4+
<!-- Allow discussion -->
5+
<property name="allow_discussion">True</property>
6+
7+
<!-- Enabled behaviors -->
8+
<property name="behaviors" purge="false">
9+
<element value="collective.behavior.banner" />
10+
<element value="plone.leadimage" />
11+
</property>
12+
13+
<!-- View information -->
14+
<property name="default_view_fallback">True</property>
15+
</object>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0"?>
2+
<object meta_type="Dexterity FTI" name="File">
3+
4+
<!-- Allow discussion -->
5+
<property name="allow_discussion">True</property>
6+
7+
<!-- Enabled behaviors -->
8+
<property name="behaviors" purge="false">
9+
<element value="collective.behavior.banner" />
10+
<element value="plone.leadimage" />
11+
</property>
12+
13+
<!-- View information -->
14+
<property name="default_view_fallback">True</property>
15+
</object>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0"?>
2+
<object meta_type="Dexterity FTI" name="Folder">
3+
4+
<!-- Allow discussion -->
5+
<property name="allow_discussion">True</property>
6+
7+
<!-- Enabled behaviors -->
8+
<property name="behaviors" purge="false">
9+
<element value="collective.behavior.banner" />
10+
<element value="plone.leadimage" />
11+
<element value="plone.richtext" />
12+
</property>
13+
14+
<!-- View information -->
15+
<property name="default_view_fallback">True</property>
16+
<property name="default_view">summary_view</property>
17+
</object>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0"?>
2+
<object meta_type="Dexterity FTI" name="Image">
3+
4+
<!-- Allow discussion -->
5+
<property name="allow_discussion">True</property>
6+
7+
<!-- View information -->
8+
<property name="default_view_fallback">True</property>
9+
</object>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0"?>
2+
<object meta_type="Dexterity FTI" name="Link">
3+
4+
<!-- Allow discussion -->
5+
<property name="allow_discussion">True</property>
6+
7+
<!-- Enabled behaviors -->
8+
<property name="behaviors" purge="false">
9+
<element value="collective.behavior.banner" />
10+
<element value="plone.leadimage" />
11+
</property>
12+
13+
<!-- View information -->
14+
<property name="default_view_fallback">True</property>
15+
</object>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0"?>
2+
<object meta_type="Dexterity FTI" name="News Item">
3+
4+
<!-- Allow discussion -->
5+
<property name="allow_discussion">True</property>
6+
7+
<!-- Enabled behaviors -->
8+
<property name="behaviors" purge="false">
9+
<element value="collective.behavior.banner" />
10+
<element value="plone.leadimage" />
11+
</property>
12+
13+
<!-- View information -->
14+
<property name="default_view_fallback">True</property>
15+
</object>
+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# -*- coding: utf-8 -*-
2+
"""Content type tests for Collection."""
3+
4+
from cusy.cms import testing
5+
from plone.app.testing import setRoles
6+
from plone.app.testing import TEST_USER_ID
7+
from plone.behavior.registration import lookup_behavior_registration
8+
from plone.dexterity.interfaces import IDexterityFTI
9+
from zope.component import queryUtility
10+
11+
import unittest
12+
13+
14+
class CollectionIntegrationTest(unittest.TestCase):
15+
"""Validate the Collection content type."""
16+
17+
layer = testing.INTEGRATION_TESTING
18+
19+
def setUp(self):
20+
"""Additional test setup."""
21+
self.portal = self.layer["portal"]
22+
self.fti = queryUtility(
23+
IDexterityFTI,
24+
name="Collection",
25+
)
26+
self.request = self.layer["request"]
27+
self.request["ACTUAL_URL"] = self.portal.absolute_url()
28+
setRoles(self.portal, TEST_USER_ID, ["Contributor"])
29+
30+
def tearDown(self):
31+
"""Additional test cleanup."""
32+
if "collection" in self.portal.objectIds():
33+
self.portal.manage_delObjects(ids="collection") # noqa: P001
34+
if "collection-1" in self.portal.objectIds():
35+
self.portal.manage_delObjects(ids="collection-1") # noqa: P001
36+
37+
def test_allow_discussion(self):
38+
"""Validate `allow_discussion` setting."""
39+
self.assertTrue(self.fti.allow_discussion)
40+
41+
def test_global_allow(self):
42+
"""Validate `global_allow` setting."""
43+
self.assertTrue(self.fti.global_allow)
44+
45+
def test_behaviors(self):
46+
"""Validate `behaviors` setting."""
47+
behaviors = [
48+
"collective.behavior.banner",
49+
"plone.leadimage",
50+
]
51+
for item in behaviors:
52+
self.assertIn(item, self.fti.behaviors)
53+
self.assertTrue(len(self.fti.behaviors) >= 2)
54+
55+
missing_behaviors = []
56+
for item in missing_behaviors:
57+
self.assertNotIn(item, self.fti.behaviors)
58+
59+
def test_behavior_names_used(self):
60+
"""Validate that the content types uses behavior names."""
61+
for behavior in self.fti.behaviors:
62+
behavior_registration = lookup_behavior_registration(behavior)
63+
self.assertEqual(behavior_registration.name, behavior)
64+
65+
def test_view_methods(self):
66+
"""Validate `view_methods` setting."""
67+
for item in [
68+
"album_view",
69+
"event_listing",
70+
"full_view",
71+
"listing_view",
72+
"summary_view",
73+
"tabular_view",
74+
]:
75+
self.assertIn(item, self.fti.view_methods)
76+
for item in []:
77+
self.assertNotIn(item, self.fti.view_methods)
78+
79+
def test_default_view(self):
80+
"""Validate `default_view` setting."""
81+
self.assertEqual("listing_view", self.fti.default_view)
82+
83+
def test_default_view_fallback(self):
84+
"""Validate `default_view_fallback` setting."""
85+
self.assertTrue(self.fti.default_view_fallback)
+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# -*- coding: utf-8 -*-
2+
"""Content type tests for Document."""
3+
from cusy.cms import testing
4+
from plone.app.testing import setRoles
5+
from plone.app.testing import TEST_USER_ID
6+
from plone.behavior.registration import lookup_behavior_registration
7+
from plone.dexterity.interfaces import IDexterityFTI
8+
from zope.component import queryUtility
9+
10+
import unittest
11+
12+
13+
class DocumentIntegrationTest(unittest.TestCase):
14+
"""Validate the Document content type."""
15+
16+
layer = testing.INTEGRATION_TESTING
17+
18+
def setUp(self):
19+
"""Additional test setup."""
20+
self.portal = self.layer["portal"]
21+
self.fti = queryUtility(
22+
IDexterityFTI,
23+
name="Document",
24+
)
25+
self.request = self.layer["request"]
26+
self.request["ACTUAL_URL"] = self.portal.absolute_url()
27+
setRoles(self.portal, TEST_USER_ID, ["Contributor"])
28+
29+
def tearDown(self):
30+
"""Additional test cleanup."""
31+
if "document" in self.portal.objectIds():
32+
self.portal.manage_delObjects(ids="document") # noqa: P001
33+
if "document-1" in self.portal.objectIds():
34+
self.portal.manage_delObjects(ids="document-1") # noqa: P001
35+
36+
def test_allow_discussion(self):
37+
"""Validate `allow_discussion` setting."""
38+
self.assertTrue(self.fti.allow_discussion)
39+
40+
def test_global_allow(self):
41+
"""Validate `global_allow` setting."""
42+
self.assertTrue(self.fti.global_allow)
43+
44+
def test_behaviors(self):
45+
"""Validate `behaviors` setting."""
46+
behaviors = [
47+
"collective.behavior.banner",
48+
"plone.leadimage",
49+
]
50+
for item in behaviors:
51+
self.assertIn(item, self.fti.behaviors)
52+
self.assertTrue(len(self.fti.behaviors) >= 2)
53+
54+
missing_behaviors = []
55+
for item in missing_behaviors:
56+
self.assertNotIn(item, self.fti.behaviors)
57+
58+
def test_behavior_names_used(self):
59+
"""Validate that the content types uses behavior names."""
60+
for behavior in self.fti.behaviors:
61+
behavior_registration = lookup_behavior_registration(behavior)
62+
self.assertEqual(behavior_registration.name, behavior)
63+
64+
def test_view_methods(self):
65+
"""Validate `view_methods` setting."""
66+
for item in ["document_view"]:
67+
self.assertIn(item, self.fti.view_methods)
68+
for item in []:
69+
self.assertNotIn(item, self.fti.view_methods)
70+
71+
def test_default_view(self):
72+
"""Validate `default_view` setting."""
73+
self.assertEqual("document_view", self.fti.default_view)
74+
75+
def test_default_view_fallback(self):
76+
"""Validate `default_view_fallback` setting."""
77+
self.assertTrue(self.fti.default_view_fallback)

0 commit comments

Comments
 (0)