test_shortcuts.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from django.core.urlresolvers import reverse
  2. from django.http import Http404
  3. from django.test import TestCase
  4. from misago.core.shortcuts import get_int_or_404
  5. class PaginateTests(TestCase):
  6. urls = 'misago.core.testproject.urls'
  7. def test_valid_page_handling(self):
  8. """Valid page number causes no errors"""
  9. response = self.client.get(
  10. reverse('test_pagination', kwargs={'page': 2}))
  11. self.assertEqual("5,6,7,8,9", response.content)
  12. def test_invalid_page_handling(self):
  13. """Invalid page number results in 404 error"""
  14. response = self.client.get(
  15. reverse('test_pagination', kwargs={'page': 42}))
  16. self.assertEqual(response.status_code, 404)
  17. def test_implicit_page_handling(self):
  18. """Implicit page number causes no errors"""
  19. response = self.client.get(
  20. reverse('test_pagination'))
  21. self.assertEqual("0,1,2,3,4", response.content)
  22. def test_explicit_page_handling(self):
  23. """Explicit page number results in redirect"""
  24. response = self.client.get(
  25. reverse('test_pagination', kwargs={'page': 1}))
  26. valid_url = "http://testserver/forum/test-pagination/"
  27. self.assertEqual(response['Location'], valid_url)
  28. class ValidateSlugTests(TestCase):
  29. urls = 'misago.core.testproject.urls'
  30. def test_valid_slug_handling(self):
  31. """Valid slug causes no interruption in view processing"""
  32. test_kwargs = {'model_slug': 'eric-the-fish', 'model_id': 1}
  33. response = self.client.get(
  34. reverse('validate_slug_view', kwargs=test_kwargs))
  35. self.assertIn("Allright", response.content)
  36. def test_invalid_slug_handling(self):
  37. """Invalid slug returns in redirect to valid page"""
  38. test_kwargs = {'model_slug': 'lion-the-eric', 'model_id': 1}
  39. response = self.client.get(
  40. reverse('validate_slug_view', kwargs=test_kwargs))
  41. valid_url = "http://testserver/forum/test-valid-slug/eric-the-fish-1/"
  42. self.assertEqual(response['Location'], valid_url)
  43. class GetIntOr404(TestCase):
  44. def test_valid_inputs(self):
  45. """get_int_or_404 returns int for valid values"""
  46. VALID_VALUES = (
  47. ('0', 0),
  48. ('123', 123),
  49. ('000123', 123),
  50. ('1', 1),
  51. )
  52. for value, result in VALID_VALUES:
  53. self.assertEqual(get_int_or_404(value), result)
  54. def test_invalid_inputs(self):
  55. """get_int_or_404 raises Http404 for invalid values"""
  56. INVALID_VALUES = (
  57. None,
  58. '',
  59. 'bob',
  60. '1bob',
  61. 'b0b',
  62. 'bob123',
  63. '12.321',
  64. '.4',
  65. '5.',
  66. )
  67. for value in INVALID_VALUES:
  68. with self.assertRaises(Http404):
  69. get_int_or_404(value)