test_cachebuster.py 2.8 KB

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