Skip to content

Commit 0ad048c

Browse files
committed
Test enum types
1 parent 9f41aac commit 0ad048c

14 files changed

+111
-81
lines changed

tests/base.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import List, Optional, Tuple, Union
1+
from typing import Optional, Union
22

33
from cms.api import create_page
44
from cms.models import Page
@@ -7,16 +7,18 @@
77

88
User = get_user_model()
99

10+
1011
class RESTTestCase(CMSTestCase):
1112
prefix = "http://testserver"
1213

14+
1315
class BaseCMSRestTestCase(RESTTestCase):
1416
@classmethod
1517
def _create_pages(
1618
cls,
17-
page_list: Union[int, List[Union[int, Tuple[int, int]]]],
18-
parent: Optional['Page'] = None,
19-
is_first: bool = True
19+
page_list: Union[int, list[Union[int, tuple[int, int]]]],
20+
parent: Optional["Page"] = None,
21+
is_first: bool = True,
2022
):
2123
new_pages = [
2224
create_page(f"page {i}", language="en", template="INHERIT", parent=parent)
@@ -43,7 +45,7 @@ def setUpClass(cls):
4345
4446
password="testpass",
4547
is_staff=True,
46-
is_superuser=True
48+
is_superuser=True,
4749
)
4850

4951
cls._create_pages([2, (3, 1), 2], is_first=True)
@@ -52,4 +54,3 @@ def setUpClass(cls):
5254
def tearDownClass(cls):
5355
Page.objects.all().delete()
5456
super().tearDownClass()
55-

tests/endpoints/test_cache.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from tests.base import BaseCMSRestTestCase
1212

1313

14-
1514
class CachingAPITestCase(BaseCMSRestTestCase):
1615
@classmethod
1716
def setUpClass(cls):
@@ -126,11 +125,13 @@ def test_staff_bypass_cache(self):
126125
placeholder2 = response2.json()
127126

128127
# Staff request #2 - Update content
129-
self.assertIn("Staff should see this content", placeholder2["content"][0]["body"])
128+
self.assertIn(
129+
"Staff should see this content", placeholder2["content"][0]["body"]
130+
)
130131
self.assertNotEqual(
131132
placeholder1["content"],
132133
placeholder2["content"],
133-
"Staff user should bypass cache and see updated content"
134+
"Staff user should bypass cache and see updated content",
134135
)
135136

136137
# Anonymous request #3 - fetch content from request #1
@@ -139,16 +140,13 @@ def test_staff_bypass_cache(self):
139140
self.assertEqual(response3.status_code, 200)
140141
placeholder3 = response3.json()
141142
self.assertEqual(
142-
placeholder1,
143-
placeholder3,
144-
"Anonymous user should still get cached content"
143+
placeholder1, placeholder3, "Anonymous user should still get cached content"
145144
)
146145

147146
# Restore content
148147
self.plugin.body = original_content
149148
self.plugin.save()
150149

151-
152150
def test_cache_version_edge_cases(self):
153151
"""
154152
Test edge cases in cache version functions to improve code coverage.
@@ -198,4 +196,4 @@ def test_cache_version_edge_cases(self):
198196
self.placeholder, "en", get_current_site(None).pk
199197
)
200198
self.assertEqual(version4, 12345)
201-
self.assertEqual(vary_list4, [])
199+
self.assertEqual(vary_list4, [])

tests/endpoints/test_languages.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,20 @@ def test_get(self):
3333
# Data & Type Validation
3434
for field, expected_type in type_checks.items():
3535
self.assertEqual(lang_config[field], data[lang][field])
36-
self.assertIsInstance(data[lang][field], type_checks[field],f"Field '{field}' should be of type {type_checks[field].__name__}")
36+
self.assertIsInstance(
37+
data[lang][field],
38+
type_checks[field],
39+
f"Field '{field}' should be of type {type_checks[field].__name__}",
40+
)
3741

3842
# Nested Data & Type Validation
3943
if field == "fallbacks":
4044
for fallback in data[lang][field]:
41-
self.assertIsInstance(fallback, str,"Fallback language codes should be strings")
42-
self.assertLessEqual(len(fallback), 4,"Fallback language code should not exceed 4 characters")
43-
45+
self.assertIsInstance(
46+
fallback, str, "Fallback language codes should be strings"
47+
)
48+
self.assertLessEqual(
49+
len(fallback),
50+
4,
51+
"Fallback language code should not exceed 4 characters",
52+
)

tests/endpoints/test_page_detail.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@ def test_get(self):
2323
type_checks = PAGE_CONTENT_FIELD_TYPES
2424

2525
# GET
26-
response = self.client.get(reverse("page-detail", kwargs={"language": "en", "path": "page-0"}))
26+
response = self.client.get(
27+
reverse("page-detail", kwargs={"language": "en", "path": "page-0"})
28+
)
2729
self.assertEqual(response.status_code, 200)
2830
page = response.json()
2931

30-
#Data & Type Validation
32+
# Data & Type Validation
3133
for field, expected_type in type_checks.items():
3234
assert_field_types(
3335
self,
@@ -45,11 +47,15 @@ def test_get(self):
4547
self.assertEqual(response.status_code, 404)
4648

4749
# Check Invalid Language
48-
response = self.client.get(reverse("page-detail", kwargs={"language": "xx", "path": "page-0"}))
50+
response = self.client.get(
51+
reverse("page-detail", kwargs={"language": "xx", "path": "page-0"})
52+
)
4953
self.assertEqual(response.status_code, 404)
5054

5155
# GET PREVIEW - Protected
5256
def test_get_protected(self):
5357
self.client.force_login(self.user)
54-
response = self.client.get(reverse("page-detail", kwargs={"language": "en", "path": "page-0"}))
58+
response = self.client.get(
59+
reverse("page-detail", kwargs={"language": "en", "path": "page-0"})
60+
)
5561
self.assertEqual(response.status_code, 200)

tests/endpoints/test_page_list.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,20 @@ def test_get_paginated_list(self):
6060
self.assertEqual(response.status_code, 404)
6161

6262
# GET PREVIEW
63-
response = self.client.get(reverse("preview-page-list", kwargs={"language": "en"}))
63+
response = self.client.get(
64+
reverse("preview-page-list", kwargs={"language": "en"})
65+
)
6466
self.assertEqual(response.status_code, 403)
6567

66-
response = self.client.get(reverse("preview-page-list", kwargs={"language": "xx"}))
68+
response = self.client.get(
69+
reverse("preview-page-list", kwargs={"language": "xx"})
70+
)
6771
self.assertEqual(response.status_code, 403)
6872

6973
# GET PREVIEW - Protected
7074
def test_get_protected(self):
7175
self.client.force_login(self.user)
72-
response = self.client.get(reverse("preview-page-list", kwargs={"language": "en"}))
76+
response = self.client.get(
77+
reverse("preview-page-list", kwargs={"language": "en"})
78+
)
7379
self.assertEqual(response.status_code, 200)

tests/endpoints/test_page_root.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def test_get(self):
2727
self.assertEqual(response.status_code, 200)
2828
page = response.json()
2929

30-
#Data & Type Validation
30+
# Data & Type Validation
3131
for field, expected_type in type_checks.items():
3232
self.assertIn(field, page, f"Field {field} is missing")
3333

@@ -44,14 +44,20 @@ def test_get(self):
4444
self.assertEqual(response.status_code, 404)
4545

4646
# GET PREVIEW
47-
response = self.client.get(reverse("preview-page-root", kwargs={"language": "en"}))
47+
response = self.client.get(
48+
reverse("preview-page-root", kwargs={"language": "en"})
49+
)
4850
self.assertEqual(response.status_code, 403)
4951

50-
response = self.client.get(reverse("preview-page-root", kwargs={"language": "xx"}))
52+
response = self.client.get(
53+
reverse("preview-page-root", kwargs={"language": "xx"})
54+
)
5155
self.assertEqual(response.status_code, 403)
5256

5357
# GET PREVIEW - Protected
5458
def test_get_protected(self):
5559
self.client.force_login(self.user)
56-
response = self.client.get(reverse("preview-page-root", kwargs={"language": "en"}))
60+
response = self.client.get(
61+
reverse("preview-page-root", kwargs={"language": "en"})
62+
)
5763
self.assertEqual(response.status_code, 200)

tests/endpoints/test_page_tree_list.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,22 @@ def test_get(self):
5252
self.assertEqual(response.status_code, 404)
5353

5454
# GET PREVIEW
55-
response = self.client.get(reverse("preview-page-tree-list", kwargs={"language": "en"}))
55+
response = self.client.get(
56+
reverse("preview-page-tree-list", kwargs={"language": "en"})
57+
)
5658
self.assertEqual(response.status_code, 403)
5759

58-
response = self.client.get(reverse("preview-page-tree-list", kwargs={"language": "xx"}))
60+
response = self.client.get(
61+
reverse("preview-page-tree-list", kwargs={"language": "xx"})
62+
)
5963
self.assertEqual(response.status_code, 403)
6064

6165
# GET PREVIEW - Protected
6266
def test_get_protected(self):
6367
self.client.force_login(self.user)
64-
response = self.client.get(reverse("preview-page-tree-list", kwargs={"language": "en"}))
68+
response = self.client.get(
69+
reverse("preview-page-tree-list", kwargs={"language": "en"})
70+
)
6571
self.assertEqual(response.status_code, 200)
6672

6773
# TEST SERIALIZER EDGE CASES

tests/endpoints/test_placeholders.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,5 +223,5 @@ def test_serialize_page_fk(self):
223223
self.assertIsInstance(rendered_plugin["page"], str)
224224
self.assertEqual(
225225
rendered_plugin["page"],
226-
f'http://testserver{self.page.get_api_endpoint("en")}',
226+
f"http://testserver{self.page.get_api_endpoint('en')}",
227227
)

tests/endpoints/test_plugin_list.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def test_get(self):
2121
"integer": {"type": "integer"},
2222
"json": {"type": "object"},
2323
"float": {"type": "number"},
24+
"title": {"enum": ["title", "subtitle", "header"], "type": "string"},
2425
},
2526
}
2627
# GET

tests/test_app/admin.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,21 @@ class ToppingInlineAdmin(admin.TabularInline):
1010

1111
class PizzaAdmin(admin.ModelAdmin):
1212
fieldsets = (
13-
('', {
14-
'fields': ('description',),
15-
}),
16-
('Advanced', {
17-
# NOTE: Disabled because when PizzaAdmin uses a collapsed
18-
# class then the order of javascript libs is incorrect.
19-
# 'classes': ('collapse',),
20-
'fields': ('allergens',),
21-
}),
13+
(
14+
"",
15+
{
16+
"fields": ("description",),
17+
},
18+
),
19+
(
20+
"Advanced",
21+
{
22+
# NOTE: Disabled because when PizzaAdmin uses a collapsed
23+
# class then the order of javascript libs is incorrect.
24+
# 'classes': ('collapse',),
25+
"fields": ("allergens",),
26+
},
27+
),
2228
)
2329
inlines = [ToppingInlineAdmin]
2430

0 commit comments

Comments
 (0)