from django.test import TestCase
from django.urls import reverse
from rest_framework import status
from tests.posts.factories import PostFactory, PostMediaFactory # type: ignore
from tests.users.factories import UserFactory # type: ignore
[docs]
class PostURLsTestCase(TestCase):
[docs]
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.user = UserFactory.create()
cls.post = PostFactory.create(author=cls.user)
cls.media = PostMediaFactory.create(post=cls.post)
[docs]
def test_post_list_url_get(self):
url = reverse("posts:posts")
url_string = "/api/posts/"
response = self.client.get(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_post_list_url_post(self):
url = reverse("posts:posts")
url_string = "/api/posts/"
response = self.client.get(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_detailed_post_url_get(self):
url = reverse("posts:detailed-post", args=[self.post.pk])
url_string = f"/api/posts/{self.post.pk}/"
response = self.client.get(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_detailed_post_url_patch(self):
url = reverse("posts:detailed-post", args=[self.post.pk])
url_string = f"/api/posts/{self.post.pk}/"
response = self.client.patch(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_detailed_post_url_put(self):
url = reverse("posts:detailed-post", args=[self.post.pk])
url_string = f"/api/posts/{self.post.pk}/"
response = self.client.put(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_detailed_post_url_delete(self):
url = reverse("posts:detailed-post", args=[self.post.pk])
url_string = f"/api/posts/{self.post.pk}/"
response = self.client.delete(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_detailed_post_upload_media(self):
url = reverse(
"posts:upload",
)
url_string = "/api/posts/upload/"
response = self.client.post(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_post_media_get(self):
url = reverse("posts:detailed-media", kwargs={"pk": self.media.pk})
url_string = f"/api/posts/media/{self.media.pk}/"
response = self.client.get(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_post_media_update(self):
url = reverse("posts:detailed-media", kwargs={"pk": self.media.pk})
url_string = f"/api/posts/media/{self.media.pk}/"
response = self.client.patch(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_post_media_put(self):
url = reverse("posts:detailed-media", kwargs={"pk": self.media.pk})
url_string = f"/api/posts/media/{self.media.pk}/"
response = self.client.put(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_post_media_delete(self):
url = reverse("posts:detailed-media", kwargs={"pk": self.media.pk})
url_string = f"/api/posts/media/{self.media.pk}/"
response = self.client.delete(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_post_favorite_add(self):
url = reverse("posts:post-favorite", args=[self.post.pk])
url_string = f"/api/posts/{self.post.pk}/favorite/"
response = self.client.post(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_post_favorites_list(self):
url = reverse("posts:favorites-list")
url_string = "/api/posts/favorites/"
response = self.client.delete(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_post_for_you_list(self):
url = reverse("posts:for-you")
url_string = "/api/posts/for-you/"
response = self.client.get(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)
[docs]
def test_post_following_list(self):
url = reverse("posts:following")
url_string = "/api/posts/following/"
response = self.client.get(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, url_string)