Skip to content

Commit 71ce336

Browse files
erralclaude
andcommitted
Add functional tests for view rendering
- Add rendering tests for horizontal_rule_view - Add rendering tests for slider_view (with carousel structure) - Add rendering tests for dynamic_view (with rows) - Add rendering tests for featured_view (row structure, title) - Add rendering tests for query_columns_view - Add rendering tests for dynamic_page_folder_view - Add rendering tests for dynamic_page_row_view - Add rendering tests for dynamic_page_row_featured_view Tests verify views render without errors and produce expected HTML structure. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 91d7cb6 commit 71ce336

8 files changed

Lines changed: 277 additions & 0 deletions

src/cs_dynamicpages/tests/test_view_dynamic_page_folder_view.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,20 @@ class DynamicPageFolderViewsFunctionalTest(unittest.TestCase):
5151

5252
def setUp(self):
5353
self.portal = self.layer["portal"]
54+
self.request = self.layer["request"]
5455
setRoles(self.portal, TEST_USER_ID, ["Manager"])
56+
57+
# Create a DynamicPageFolder
58+
self.folder = api.content.create(self.portal, "Folder", "test-folder-dpf-func")
59+
self.dpf = api.content.create(
60+
self.folder, "DynamicPageFolder", "rows", title="Rows"
61+
)
62+
63+
def test_dynamic_page_folder_view_renders_without_error(self):
64+
"""Test that DynamicPageFolder view renders without raising an error."""
65+
view = getMultiAdapter(
66+
(self.dpf, self.request),
67+
name="view",
68+
)
69+
html = view()
70+
self.assertIsInstance(html, str)

src/cs_dynamicpages/tests/test_view_dynamic_page_row_featured_view.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,34 @@ class DynamicPageRowFeaturedViewsFunctionalTest(unittest.TestCase):
6565

6666
def setUp(self):
6767
self.portal = self.layer["portal"]
68+
self.request = self.layer["request"]
6869
setRoles(self.portal, TEST_USER_ID, ["Manager"])
70+
71+
# Create full content structure
72+
self.folder = api.content.create(
73+
self.portal, "Folder", "test-folder-featured-func"
74+
)
75+
self.dpf = api.content.create(
76+
self.folder, "DynamicPageFolder", "rows", title="Rows"
77+
)
78+
self.row = api.content.create(
79+
self.dpf,
80+
"DynamicPageRow",
81+
"test-row",
82+
title="Test Row",
83+
)
84+
self.featured = api.content.create(
85+
self.row,
86+
"DynamicPageRowFeatured",
87+
"test-featured-func",
88+
title="Test Featured",
89+
)
90+
91+
def test_dynamic_page_row_featured_view_renders_without_error(self):
92+
"""Test that DynamicPageRowFeatured view renders without error."""
93+
view = getMultiAdapter(
94+
(self.featured, self.request),
95+
name="view",
96+
)
97+
html = view()
98+
self.assertIsInstance(html, str)

src/cs_dynamicpages/tests/test_view_dynamic_page_row_view.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,26 @@ class DynamicPageRowViewsFunctionalTest(unittest.TestCase):
5757

5858
def setUp(self):
5959
self.portal = self.layer["portal"]
60+
self.request = self.layer["request"]
6061
setRoles(self.portal, TEST_USER_ID, ["Manager"])
62+
63+
# Create a DynamicPageFolder with a DynamicPageRow
64+
self.folder = api.content.create(self.portal, "Folder", "test-folder-row-func")
65+
self.dpf = api.content.create(
66+
self.folder, "DynamicPageFolder", "rows", title="Rows"
67+
)
68+
self.row = api.content.create(
69+
self.dpf,
70+
"DynamicPageRow",
71+
"test-row-func",
72+
title="Test Row",
73+
)
74+
75+
def test_dynamic_page_row_view_renders_without_error(self):
76+
"""Test that DynamicPageRow view renders without raising an error."""
77+
view = getMultiAdapter(
78+
(self.row, self.request),
79+
name="view",
80+
)
81+
html = view()
82+
self.assertIsInstance(html, str)

src/cs_dynamicpages/tests/test_view_dynamic_view.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,58 @@ class ViewsFunctionalTest(unittest.TestCase):
4343

4444
def setUp(self):
4545
self.portal = self.layer["portal"]
46+
self.request = self.layer["request"]
4647
setRoles(self.portal, TEST_USER_ID, ["Manager"])
48+
49+
def test_dynamic_view_renders_without_error(self):
50+
"""Test that dynamic view renders without raising an error."""
51+
folder = api.content.create(self.portal, "Folder", "test-folder-dynamic")
52+
view = getMultiAdapter(
53+
(folder, self.request),
54+
name="dynamic-view",
55+
)
56+
html = view()
57+
self.assertIsInstance(html, str)
58+
59+
def test_dynamic_view_renders_with_rows(self):
60+
"""Test that dynamic view renders rows correctly."""
61+
folder = api.content.create(self.portal, "Folder", "test-folder-with-rows")
62+
# Create DynamicPageFolder with a row
63+
dpf = api.content.create(folder, "DynamicPageFolder", "rows", title="Rows")
64+
api.content.transition(obj=dpf, transition="publish")
65+
66+
row = api.content.create(
67+
dpf,
68+
"DynamicPageRow",
69+
"test-row",
70+
title="Test Row",
71+
)
72+
row.row_type = "cs_dynamicpages-horizontal-rule-view"
73+
api.content.transition(obj=row, transition="publish")
74+
75+
view = getMultiAdapter(
76+
(folder, self.request),
77+
name="dynamic-view",
78+
)
79+
html = view()
80+
# Should contain main content area
81+
self.assertIn("content", html)
82+
83+
def test_dynamic_view_rows_method_returns_rows(self):
84+
"""Test that dynamic view rows() method returns created rows."""
85+
folder = api.content.create(self.portal, "Folder", "test-folder-rows-method")
86+
dpf = api.content.create(folder, "DynamicPageFolder", "rows", title="Rows")
87+
row = api.content.create(
88+
dpf,
89+
"DynamicPageRow",
90+
"test-row",
91+
title="Test Row",
92+
)
93+
row.row_type = "cs_dynamicpages-horizontal-rule-view"
94+
95+
view = getMultiAdapter(
96+
(folder, self.request),
97+
name="dynamic-view",
98+
)
99+
rows = view.rows()
100+
self.assertEqual(len(rows), 1)

src/cs_dynamicpages/tests/test_view_featured_view.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,59 @@ class FeaturedViewsFunctionalTest(unittest.TestCase):
5757

5858
def setUp(self):
5959
self.portal = self.layer["portal"]
60+
self.request = self.layer["request"]
6061
setRoles(self.portal, TEST_USER_ID, ["Manager"])
62+
63+
# Create content structure
64+
self.folder = api.content.create(self.portal, "Folder", "test-folder-featured")
65+
self.dpf = api.content.create(
66+
self.folder, "DynamicPageFolder", "rows", title="Rows"
67+
)
68+
self.row = api.content.create(
69+
self.dpf,
70+
"DynamicPageRow",
71+
"test-row-featured",
72+
title="Test Row",
73+
)
74+
self.row.row_type = "cs_dynamicpages-featured-view"
75+
76+
def test_featured_view_renders_without_error(self):
77+
"""Test that featured view renders without raising an error."""
78+
# Set required attributes to avoid None errors
79+
self.row.link_url = ""
80+
self.row.link_text = ""
81+
self.row.image_position = "left"
82+
83+
view = getMultiAdapter(
84+
(self.row, self.request),
85+
name="cs_dynamicpages-featured-view",
86+
)
87+
html = view()
88+
self.assertIsInstance(html, str)
89+
90+
def test_featured_view_renders_row_structure(self):
91+
"""Test that featured view renders Bootstrap row structure."""
92+
self.row.link_url = ""
93+
self.row.link_text = ""
94+
self.row.image_position = "left"
95+
96+
view = getMultiAdapter(
97+
(self.row, self.request),
98+
name="cs_dynamicpages-featured-view",
99+
)
100+
html = view()
101+
self.assertIn('class="row"', html)
102+
self.assertIn("col-md-6", html)
103+
104+
def test_featured_view_renders_title(self):
105+
"""Test that featured view renders the row title."""
106+
self.row.link_url = ""
107+
self.row.link_text = ""
108+
self.row.image_position = "left"
109+
110+
view = getMultiAdapter(
111+
(self.row, self.request),
112+
name="cs_dynamicpages-featured-view",
113+
)
114+
html = view()
115+
self.assertIn("Test Row", html)

src/cs_dynamicpages/tests/test_view_horizontal_rule_view.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,36 @@ class HorizontalRuleViewsFunctionalTest(unittest.TestCase):
5656

5757
def setUp(self):
5858
self.portal = self.layer["portal"]
59+
self.request = self.layer["request"]
5960
setRoles(self.portal, TEST_USER_ID, ["Manager"])
61+
62+
# Create content structure
63+
self.folder = api.content.create(self.portal, "Folder", "test-folder-hr")
64+
self.dpf = api.content.create(
65+
self.folder, "DynamicPageFolder", "rows", title="Rows"
66+
)
67+
self.row = api.content.create(
68+
self.dpf,
69+
"DynamicPageRow",
70+
"test-row-hr",
71+
title="Test Row",
72+
)
73+
self.row.row_type = "cs_dynamicpages-horizontal-rule-view"
74+
75+
def test_horizontal_rule_view_renders_without_error(self):
76+
"""Test that horizontal rule view renders without raising an error."""
77+
view = getMultiAdapter(
78+
(self.row, self.request),
79+
name="cs_dynamicpages-horizontal-rule-view",
80+
)
81+
html = view()
82+
self.assertIsInstance(html, str)
83+
84+
def test_horizontal_rule_view_renders_hr_element(self):
85+
"""Test that horizontal rule view renders an hr element."""
86+
view = getMultiAdapter(
87+
(self.row, self.request),
88+
name="cs_dynamicpages-horizontal-rule-view",
89+
)
90+
html = view()
91+
self.assertIn("<hr", html)

src/cs_dynamicpages/tests/test_view_query_three_columns_view.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,27 @@ class QueryColumnsViewsFunctionalTest(unittest.TestCase):
5757

5858
def setUp(self):
5959
self.portal = self.layer["portal"]
60+
self.request = self.layer["request"]
6061
setRoles(self.portal, TEST_USER_ID, ["Manager"])
62+
63+
# Create content structure
64+
self.folder = api.content.create(self.portal, "Folder", "test-folder-query")
65+
self.dpf = api.content.create(
66+
self.folder, "DynamicPageFolder", "rows", title="Rows"
67+
)
68+
self.row = api.content.create(
69+
self.dpf,
70+
"DynamicPageRow",
71+
"test-row-query",
72+
title="Test Row",
73+
)
74+
self.row.row_type = "cs_dynamicpages-query-columns-view"
75+
76+
def test_query_columns_view_renders_without_error(self):
77+
"""Test that query columns view renders without raising an error."""
78+
view = getMultiAdapter(
79+
(self.row, self.request),
80+
name="cs_dynamicpages-query-columns-view",
81+
)
82+
html = view()
83+
self.assertIsInstance(html, str)

src/cs_dynamicpages/tests/test_view_slider_view.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,49 @@ class SliderViewsFunctionalTest(unittest.TestCase):
5757

5858
def setUp(self):
5959
self.portal = self.layer["portal"]
60+
self.request = self.layer["request"]
6061
setRoles(self.portal, TEST_USER_ID, ["Manager"])
62+
63+
# Create content structure
64+
self.folder = api.content.create(self.portal, "Folder", "test-folder-slider")
65+
self.dpf = api.content.create(
66+
self.folder, "DynamicPageFolder", "rows", title="Rows"
67+
)
68+
self.row = api.content.create(
69+
self.dpf,
70+
"DynamicPageRow",
71+
"test-row-slider",
72+
title="Test Row",
73+
)
74+
self.row.row_type = "cs_dynamicpages-slider-view"
75+
76+
def test_slider_view_renders_without_error(self):
77+
"""Test that slider view renders without raising an error."""
78+
view = getMultiAdapter(
79+
(self.row, self.request),
80+
name="cs_dynamicpages-slider-view",
81+
)
82+
html = view()
83+
self.assertIsInstance(html, str)
84+
85+
def test_slider_view_renders_carousel_with_elements(self):
86+
"""Test that slider view renders carousel structure when elements exist."""
87+
# Create a featured item for the slider with required attributes
88+
featured = api.content.create(
89+
self.row,
90+
"DynamicPageRowFeatured",
91+
"featured-1",
92+
title="Featured Item",
93+
)
94+
# Set required attributes to avoid None errors
95+
featured.link_url = ""
96+
featured.link_text = ""
97+
api.content.transition(obj=featured, transition="publish")
98+
99+
view = getMultiAdapter(
100+
(self.row, self.request),
101+
name="cs_dynamicpages-slider-view",
102+
)
103+
html = view()
104+
self.assertIn("carousel", html)
105+
self.assertIn("carousel-inner", html)

0 commit comments

Comments
 (0)