aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pydis_site/apps/content/tests/helpers.py13
-rw-r--r--pydis_site/apps/content/tests/test_utils.py8
-rw-r--r--pydis_site/apps/content/tests/test_views.py22
3 files changed, 37 insertions, 6 deletions
diff --git a/pydis_site/apps/content/tests/helpers.py b/pydis_site/apps/content/tests/helpers.py
index be91b95a..59cd3bd6 100644
--- a/pydis_site/apps/content/tests/helpers.py
+++ b/pydis_site/apps/content/tests/helpers.py
@@ -8,6 +8,7 @@ description: TestDescription
relevant_links:
Python Discord: https://pythondiscord.com
Discord: https://discord.com
+toc: 0
---
# This is a header.
"""
@@ -32,7 +33,8 @@ PARSED_METADATA = {
"relevant_links": {
"Python Discord": "https://pythondiscord.com",
"Discord": "https://discord.com"
- }
+ },
+ "toc": 0
}
# The YAML data parsed from the above _info.yml file
@@ -50,7 +52,10 @@ class MockPagesTestCase(TestCase):
├── not_a_page.md
├── tmp
|   ├── _info.yml
- |   └── category_without_info
+ |   ├── tmp.md
+ |   └── category
+ |    ├── _info.yml
+ |      └── subcategory_without_info
└── category
   ├── _info.yml
   ├── with_metadata.md
@@ -81,4 +86,6 @@ class MockPagesTestCase(TestCase):
# for testing purposes.
# See: https://jmcgeheeiv.github.io/pyfakefs/release/usage.html#os-temporary-directories
self.fs.create_file("tmp/_info.yml", contents=CATEGORY_INFO)
- self.fs.create_dir("tmp/category_without_info")
+ self.fs.create_file("tmp/tmp.md", contents=MARKDOWN_WITH_METADATA)
+ self.fs.create_file("tmp/category/_info.yml", contents=MARKDOWN_WITH_METADATA)
+ self.fs.create_dir("tmp/category/subcategory_without_info")
diff --git a/pydis_site/apps/content/tests/test_utils.py b/pydis_site/apps/content/tests/test_utils.py
index 658a6d4e..6612e44c 100644
--- a/pydis_site/apps/content/tests/test_utils.py
+++ b/pydis_site/apps/content/tests/test_utils.py
@@ -28,7 +28,7 @@ class GetCategoryTests(MockPagesTestCase):
def test_get_category_without_info_yml(self):
# Categories should provide an _info.yml file
with self.assertRaises(FileNotFoundError):
- utils.get_category(Path("tmp/category_without_info"))
+ utils.get_category(Path("tmp/category/subcategory_without_info"))
class GetCategoriesTests(MockPagesTestCase):
@@ -73,10 +73,12 @@ class GetPageTests(MockPagesTestCase):
"""Tests for the get_page function."""
def test_get_page(self):
+ # TOC is a special case because the markdown converter outputs the TOC as HTML
+ updated_metadata = {**PARSED_METADATA, "toc": '<div class="toc">\n<ul></ul>\n</div>\n'}
cases = [
- ("Root page with metadata", "root.md", PARSED_HTML, PARSED_METADATA),
+ ("Root page with metadata", "root.md", PARSED_HTML, updated_metadata),
("Root page without metadata", "root_without_metadata.md", PARSED_HTML, {}),
- ("Page with metadata", "category/with_metadata.md", PARSED_HTML, PARSED_METADATA),
+ ("Page with metadata", "category/with_metadata.md", PARSED_HTML, updated_metadata),
("Page without metadata", "category/subcategory/without_metadata.md", PARSED_HTML, {}),
]
diff --git a/pydis_site/apps/content/tests/test_views.py b/pydis_site/apps/content/tests/test_views.py
index 46a0f7da..81c4012b 100644
--- a/pydis_site/apps/content/tests/test_views.py
+++ b/pydis_site/apps/content/tests/test_views.py
@@ -90,6 +90,11 @@ class PageOrCategoryViewTests(MockPagesTestCase, SimpleTestCase, TestCase):
with self.assertRaises(Http404):
self.ViewClass.get_template_names()
+ def test_get_template_names_returns_page_template_for_category_with_page(self):
+ """Make sure the proper page is returned for category locations with pages."""
+ patch_dispatch_attributes(self.ViewClass, "tmp")
+ self.assertEqual(self.ViewClass.get_template_names(), ["content/page.html"])
+
def test_get_context_data_with_valid_page(self):
"""The method should return required fields in the template context."""
request = self.factory.get("/root")
@@ -145,6 +150,23 @@ class PageOrCategoryViewTests(MockPagesTestCase, SimpleTestCase, TestCase):
with self.subTest(msg=msg):
self.assertEqual(context[key], expected_value)
+ def test_get_context_data_for_category_with_page(self):
+ """Make sure the proper page is returned for category locations with pages."""
+ request = self.factory.get("/category")
+ self.ViewClass.setup(request)
+ self.ViewClass.dispatch(request, location="tmp")
+
+ context = self.ViewClass.get_context_data()
+ expected_page_context = {
+ "page": PARSED_HTML,
+ "page_title": PARSED_METADATA["title"],
+ "page_description": PARSED_METADATA["description"],
+ "relevant_links": PARSED_METADATA["relevant_links"]
+ }
+ for key, expected_value in expected_page_context.items():
+ with self.subTest():
+ self.assertEqual(context[key], expected_value)
+
def test_get_context_data_breadcrumbs(self):
"""The method should return correct breadcrumbs."""
request = self.factory.get("/category/subcategory/with_metadata")