aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps
diff options
context:
space:
mode:
authorGravatar ks129 <[email protected]>2020-09-21 16:11:38 +0300
committerGravatar ks129 <[email protected]>2020-09-21 16:11:38 +0300
commitce7df4304e91adac16d86463d295056c01006280 (patch)
treeebcf6fd635b0349d35fcef32804a44120f04ad48 /pydis_site/apps
parentMove guides and categories getting logic to utils for better testability (diff)
Apply testability changes to views tests
Diffstat (limited to 'pydis_site/apps')
-rw-r--r--pydis_site/apps/guides/tests/test_views.py152
1 files changed, 65 insertions, 87 deletions
diff --git a/pydis_site/apps/guides/tests/test_views.py b/pydis_site/apps/guides/tests/test_views.py
index a8885aa6..e3945136 100644
--- a/pydis_site/apps/guides/tests/test_views.py
+++ b/pydis_site/apps/guides/tests/test_views.py
@@ -1,126 +1,104 @@
-import os
from unittest.mock import patch
-from django.conf import settings
+from django.http import Http404
from django.test import TestCase
from django_hosts.resolvers import reverse
class TestGuidesIndexView(TestCase):
- def test_guides_index_return_200(self):
+ @patch("pydis_site.apps.guides.views.guides.get_guides")
+ @patch("pydis_site.apps.guides.views.guides.get_categories")
+ def test_guides_index_return_200(self, get_categories_mock, get_guides_mock):
"""Check that guides index return HTTP code 200."""
+ get_categories_mock.return_value = {}
+ get_guides_mock.return_value = {}
+
url = reverse('guide:guides')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
+ get_guides_mock.assert_called_once()
+ get_categories_mock.assert_called_once()
class TestGuideView(TestCase):
- def test_guide_return_code_200(self):
- """Check that return code is 200 when valid guide provided."""
- test_cases = (
- "test",
- "test2",
- )
- for case in test_cases:
- url = reverse("guide:guide", args=[case])
- join_return_value = os.path.join(
- settings.BASE_DIR, "pydis_site", "apps", "guides", "tests", "test_guides", f"{case}.md"
- )
- with patch("pydis_site.apps.guides.views.guide.os.path.join") as p:
- p.return_value = join_return_value
- response = self.client.get(url)
-
- self.assertEqual(response.status_code, 200)
-
- def test_guide_return_404(self):
+ @patch("pydis_site.apps.guides.views.guide.os.path.getmtime")
+ @patch("pydis_site.apps.guides.views.guide.get_guide")
+ @patch("pydis_site.apps.guides.views.guide.get_category")
+ def test_guide_return_code_200(self, get_category_mock, get_guide_mock, get_time_mock):
+ get_guide_mock.return_value = {"guide": "test", "metadata": {}}
+
+ url = reverse("guide:guide", args=["test-guide"])
+ response = self.client.get(url)
+ self.assertEqual(response.status_code, 200)
+ get_category_mock.assert_not_called()
+ get_guide_mock.assert_called_once_with("test-guide", None)
+
+ @patch("pydis_site.apps.guides.views.guide.os.path.getmtime")
+ @patch("pydis_site.apps.guides.views.guide.get_guide")
+ @patch("pydis_site.apps.guides.views.guide.get_category")
+ def test_guide_return_404(self, get_category_mock, get_guide_mock, get_time_mock):
"""Check that return code is 404 when invalid guide provided."""
- url = reverse("guide:guide", args=["invalid-guide"])
- join_return_value = os.path.join(
- settings.BASE_DIR, "pydis_site", "apps", "guides", "tests", "test_guides", "invalid-guide.md"
- )
- with patch("pydis_site.apps.guides.views.guide.os.path.join") as p:
- p.return_value = join_return_value
- response = self.client.get(url)
+ get_guide_mock.side_effect = Http404("Guide not found.")
+ url = reverse("guide:guide", args=["invalid-guide"])
+ response = self.client.get(url)
self.assertEqual(response.status_code, 404)
+ get_guide_mock.assert_called_once_with("invalid-guide", None)
+ get_category_mock.assert_not_called()
class TestCategoryView(TestCase):
- def test_valid_category_code_200(self):
+ @patch("pydis_site.apps.guides.views.category.get_category")
+ @patch("pydis_site.apps.guides.views.category.get_guides")
+ def test_valid_category_code_200(self, get_guides_mock, get_category_mock):
"""Check that return code is 200 when visiting valid category."""
- url = reverse("guide:category", args=["category"])
- base = os.path.join(
- settings.BASE_DIR, "pydis_site", "apps", "guides", "tests", "test_guides", "category"
- )
- join_return_value = [base, os.path.join(base, "_info.yml")]
+ get_category_mock.return_value = {"name": "test", "description": "test"}
+ get_guides_mock.return_value = {}
- for filename in os.listdir(base):
- if filename.endswith(".md"):
- join_return_value.append(os.path.join(base, filename))
-
- with patch("pydis_site.apps.guides.views.guide.os.path.join") as p:
- p.side_effect = join_return_value
- response = self.client.get(url)
+ url = reverse("guide:category", args=["category"])
+ response = self.client.get(url)
self.assertEqual(response.status_code, 200)
+ get_guides_mock.assert_called_once_with("category")
+ get_category_mock.assert_called_once_with("category")
- def test_invalid_category_code_404(self):
+ @patch("pydis_site.apps.guides.views.category.get_category")
+ @patch("pydis_site.apps.guides.views.category.get_guides")
+ def test_invalid_category_code_404(self, get_guides_mock, get_category_mock):
"""Check that return code is 404 when trying to visit invalid category."""
+ get_category_mock.side_effect = Http404("Category not found.")
+
url = reverse("guide:category", args=["invalid-category"])
- join_return_value = os.path.join(
- settings.BASE_DIR, "pydis_site", "apps", "guides", "tests", "test_guides", "invalid-category"
- )
- with patch("pydis_site.apps.guides.views.guide.os.path.join") as p:
- p.return_value = join_return_value
- response = self.client.get(url)
+ response = self.client.get(url)
self.assertEqual(response.status_code, 404)
+ get_category_mock.assert_called_once_with("invalid-category")
+ get_guides_mock.assert_not_called()
class TestCategoryGuidesView(TestCase):
- def test_valid_category_guide_code_200(self):
+ @patch("pydis_site.apps.guides.views.guide.os.path.getmtime")
+ @patch("pydis_site.apps.guides.views.guide.get_guide")
+ @patch("pydis_site.apps.guides.views.guide.get_category")
+ def test_valid_category_guide_code_200(self, get_category_mock, get_guide_mock, get_time_mock):
"""Check that return code is 200 when visiting valid category article."""
- url = reverse("guide:category_guide", args=["category", "test3"])
- category_directory = os.path.join(
- settings.BASE_DIR, "pydis_site", "apps", "guides", "tests", "test_guides", "category"
- )
-
- with patch("pydis_site.apps.guides.views.guide.os.path.join") as p:
- p.side_effect = (
- category_directory,
- os.path.join(category_directory, "test3.md"),
- os.path.join(category_directory, "_info.yml")
- )
- response = self.client.get(url)
+ get_guide_mock.return_value = {"guide": "test", "metadata": {}}
+ url = reverse("guide:category_guide", args=["category", "test3"])
+ response = self.client.get(url)
self.assertEqual(response.status_code, 200)
+ get_guide_mock.assert_called_once_with("test3", "category")
+ get_category_mock.assert_called_once_with("category")
- def test_invalid_category_guide_code_404(self):
+ @patch("pydis_site.apps.guides.views.guide.os.path.getmtime")
+ @patch("pydis_site.apps.guides.views.guide.get_guide")
+ @patch("pydis_site.apps.guides.views.guide.get_category")
+ def test_invalid_category_guide_code_404(self, get_category_mock, get_guide_mock, get_time_mock):
"""Check that return code is 200 when trying to visit invalid category article."""
- url = reverse("guide:category_guide", args=["category", "invalid"])
- category_directory = os.path.join(
- settings.BASE_DIR, "pydis_site", "apps", "guides", "tests", "test_guides", "category"
- )
-
- with patch("pydis_site.apps.guides.views.guide.os.path.join") as p:
- p.side_effect = (
- category_directory,
- os.path.join(category_directory, "invalid.md"),
- os.path.join(category_directory, "_info.yml")
- )
- response = self.client.get(url)
-
- self.assertEqual(response.status_code, 404)
-
- def test_invalid_category_code_404(self):
- """Check that response code is 404 when provided category for article is incorrect."""
- url = reverse("guide:category_guide", args=["invalid", "guide"])
- category_directory = os.path.join(
- settings.BASE_DIR, "pydis_site", "apps", "guides", "tests", "test_guides", "invalid"
- )
-
- with patch("pydis_site.apps.guides.views.guide.os.path.join") as p:
- p.return_value = category_directory
- response = self.client.get(url)
+ get_guide_mock.side_effect = Http404("Guide not found.")
+ url = reverse("guide:category_guide", args=["category", "invalid"])
+ response = self.client.get(url)
self.assertEqual(response.status_code, 404)
+ get_guide_mock.assert_called_once_with("invalid", "category")
+ get_category_mock.assert_not_called()