test_cachebuster.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from django.test import TestCase
  2. from misago.core import cachebuster
  3. from misago.core import threadstore
  4. from misago.core.models import CacheVersion
  5. class CacheBusterTests(TestCase):
  6. serialized_rollback = True
  7. def test_register_unregister_cache(self):
  8. """register and unregister adds/removes cache"""
  9. test_cache_name = 'eric_the_fish'
  10. with self.assertRaises(CacheVersion.DoesNotExist):
  11. CacheVersion.objects.get(cache=test_cache_name)
  12. cachebuster.register(test_cache_name)
  13. CacheVersion.objects.get(cache=test_cache_name)
  14. cachebuster.unregister(test_cache_name)
  15. with self.assertRaises(CacheVersion.DoesNotExist):
  16. CacheVersion.objects.get(cache=test_cache_name)
  17. class CacheBusterCacheTests(TestCase):
  18. serialized_rollback = True
  19. def setUp(self):
  20. self.cache_name = 'eric_the_fish'
  21. cachebuster.register(self.cache_name)
  22. def tearDown(self):
  23. threadstore.clear()
  24. def test_cache_validation(self):
  25. """cache correctly validates"""
  26. version = cachebuster.get_version(self.cache_name)
  27. self.assertEqual(version, 0)
  28. db_version = CacheVersion.objects.get(cache=self.cache_name).version
  29. self.assertEqual(db_version, 0)
  30. self.assertEqual(db_version, version)
  31. self.assertTrue(cachebuster.is_valid(self.cache_name, version))
  32. self.assertTrue(cachebuster.is_valid(self.cache_name, db_version))
  33. def test_cache_invalidation(self):
  34. """invalidate has increased valid version number"""
  35. db_version = CacheVersion.objects.get(cache=self.cache_name).version
  36. cachebuster.invalidate(self.cache_name)
  37. new_version = cachebuster.get_version(self.cache_name)
  38. new_db_version = CacheVersion.objects.get(cache=self.cache_name)
  39. new_db_version = new_db_version.version
  40. self.assertEqual(new_version, 1)
  41. self.assertEqual(new_db_version, 1)
  42. self.assertEqual(new_version, new_db_version)
  43. self.assertFalse(cachebuster.is_valid(self.cache_name, db_version))
  44. self.assertTrue(cachebuster.is_valid(self.cache_name, new_db_version))
  45. def test_cache_invalidation_all(self):
  46. """invalidate_all has increased valid version number"""
  47. cache_a = "eric_the_halibut"
  48. cache_b = "eric_the_crab"
  49. cache_c = "eric_the_lion"
  50. cachebuster.register(cache_a)
  51. cachebuster.register(cache_b)
  52. cachebuster.register(cache_c)
  53. cachebuster.invalidate_all()
  54. new_version_a = CacheVersion.objects.get(cache=cache_a).version
  55. new_version_b = CacheVersion.objects.get(cache=cache_b).version
  56. new_version_c = CacheVersion.objects.get(cache=cache_c).version
  57. self.assertEqual(new_version_a, 1)
  58. self.assertEqual(new_version_b, 1)
  59. self.assertEqual(new_version_c, 1)