test_validate_post.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from django.urls import reverse
  2. from misago.categories.models import Category
  3. from misago.users.test import AuthenticatedUserTestCase
  4. class ValidatePostTests(AuthenticatedUserTestCase):
  5. def setUp(self):
  6. super().setUp()
  7. self.category = Category.objects.get(slug="first-category")
  8. self.api_link = reverse("misago:api:thread-list")
  9. def test_title_validation(self):
  10. """validate_post tests title"""
  11. response = self.client.post(
  12. self.api_link,
  13. data={
  14. "category": self.category.pk,
  15. "title": "Check our l33t CaSiNo!",
  16. "post": "Lorem ipsum dolor met!",
  17. },
  18. )
  19. self.assertEqual(response.status_code, 400)
  20. self.assertEqual(
  21. response.json(), {"non_field_errors": ["Don't discuss gambling!"]}
  22. )
  23. # clean title passes validation
  24. response = self.client.post(
  25. self.api_link,
  26. data={
  27. "category": self.category.pk,
  28. "title": "Check our l33t place!",
  29. "post": "Lorem ipsum dolor met!",
  30. },
  31. )
  32. self.assertEqual(response.status_code, 200)
  33. def test_post_validation(self):
  34. """validate_post tests post content"""
  35. response = self.client.post(
  36. self.api_link,
  37. data={
  38. "category": self.category.pk,
  39. "title": "Lorem ipsum dolor met!",
  40. "post": "Check our l33t CaSiNo!",
  41. },
  42. )
  43. self.assertEqual(response.status_code, 400)
  44. self.assertEqual(
  45. response.json(), {"non_field_errors": ["Don't discuss gambling!"]}
  46. )
  47. # clean post passes validation
  48. response = self.client.post(
  49. self.api_link,
  50. data={
  51. "category": self.category.pk,
  52. "title": "Lorem ipsum dolor met!",
  53. "post": "Check our l33t place!",
  54. },
  55. )
  56. self.assertEqual(response.status_code, 200)
  57. def test_empty_input(self):
  58. """validate_post handles empty input"""
  59. response = self.client.post(self.api_link, data={"category": self.category.pk})
  60. self.assertEqual(response.status_code, 400)
  61. self.assertEqual(
  62. response.json(),
  63. {
  64. "title": ["You have to enter thread title."],
  65. "post": ["You have to enter a message."],
  66. },
  67. )
  68. response = self.client.post(
  69. self.api_link, data={"category": self.category.pk, "title": "", "post": ""}
  70. )
  71. self.assertEqual(response.status_code, 400)
  72. self.assertEqual(
  73. response.json(),
  74. {
  75. "title": ["This field may not be blank."],
  76. "post": ["This field may not be blank."],
  77. },
  78. )