test_cachebuster.py 2.8 KB

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