test_utils.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #-*- coding: utf-8 -*-
  2. from django.core.urlresolvers import reverse
  3. from django.test import TestCase
  4. from django.test.client import RequestFactory
  5. from misago.core.utils import is_request_to_misago, slugify, time_amount
  6. VALID_PATHS = (
  7. "/",
  8. "/threads/",
  9. )
  10. INVALID_PATHS = (
  11. "",
  12. "somewhere/",
  13. )
  14. class IsRequestToMisagoTests(TestCase):
  15. def test_is_request_to_misago(self):
  16. """
  17. is_request_to_misago correctly detects requests directed at Misago
  18. """
  19. misago_prefix = reverse('misago:index')
  20. for path in VALID_PATHS:
  21. request = RequestFactory().get('/')
  22. request.path_info = path
  23. self.assertTrue(
  24. is_request_to_misago(request),
  25. '"%s" is not overlapped by "%s"' % (path, misago_prefix))
  26. for path in INVALID_PATHS:
  27. request = RequestFactory().get('/')
  28. request.path_info = path
  29. self.assertFalse(
  30. is_request_to_misago(request),
  31. '"%s" is overlapped by "%s"' % (path, misago_prefix))
  32. class SlugifyTests(TestCase):
  33. def test_valid_slugify_output(self):
  34. """Misago's slugify correcly slugifies string"""
  35. test_cases = (
  36. (u'Bob', u'bob'),
  37. (u'Eric The Fish', u'eric-the-fish'),
  38. (u'John Snow', u'john-snow'),
  39. (u'J0n', u'j0n'),
  40. (u'An###ne', u'anne'),
  41. (u'S**t', u'st'),
  42. (u'Łók', u'lok'),
  43. )
  44. for original, slug in test_cases:
  45. self.assertEqual(slugify(original), slug)
  46. class TimeAmountTests(TestCase):
  47. def test_single_units(self):
  48. """time_amount return correct amount of time for 1 precision"""
  49. self.assertEqual(time_amount(1), "1 second")
  50. self.assertEqual(time_amount(5), "5 seconds")
  51. self.assertEqual(time_amount(35), "35 seconds")
  52. self.assertEqual(time_amount(60), "1 minute")
  53. self.assertEqual(time_amount(120), "2 minutes")
  54. self.assertEqual(time_amount(240), "4 minutes")
  55. self.assertEqual(time_amount(3600), "1 hour")
  56. self.assertEqual(time_amount(7200), "2 hours")
  57. self.assertEqual(time_amount(24 * 3600), "1 day")
  58. self.assertEqual(time_amount(5 * 24 * 3600), "5 days")
  59. def test_double_units(self):
  60. """time_amount return correct amount of time for double precision"""
  61. self.assertEqual(time_amount(61), "1 minute and 1 second")
  62. self.assertEqual(time_amount(90), "1 minute and 30 seconds")
  63. self.assertEqual(time_amount(121), "2 minutes and 1 second")
  64. self.assertEqual(time_amount(150), "2 minutes and 30 seconds")
  65. self.assertEqual(time_amount(3660), "1 hour and 1 minute")
  66. self.assertEqual(time_amount(3720), "1 hour and 2 minutes")
  67. self.assertEqual(time_amount(24 * 3600 + 1), "1 day and 1 second")
  68. self.assertEqual(time_amount(2 * 24 * 3600 + 1), "2 days and 1 second")
  69. self.assertEqual(time_amount(2 * 24 * 3600 + 5),
  70. "2 days and 5 seconds")
  71. self.assertEqual(time_amount(2 * 24 * 3600 + 3 * 3600),
  72. "2 days and 3 hours")
  73. def test_triple_units(self):
  74. """time_amount return correct amount of time for triple precision"""
  75. self.assertEqual(time_amount(3661), "1 hour, 1 minute and 1 second")
  76. self.assertEqual(time_amount(2 * 3661),
  77. "2 hours, 2 minutes and 2 seconds")