|
@@ -0,0 +1,75 @@
|
|
|
+from django.test import TestCase
|
|
|
+from misago.core import cachebuster
|
|
|
+from misago.core import threadstore
|
|
|
+from misago.core.models import CacheVersion
|
|
|
+
|
|
|
+
|
|
|
+class CacheBusterTests(TestCase):
|
|
|
+ def test_register_unregister_cache(self):
|
|
|
+ """register and unregister adds/removes cache"""
|
|
|
+ test_cache_name = 'eric_the_fish'
|
|
|
+ with self.assertRaises(CacheVersion.DoesNotExist):
|
|
|
+ CacheVersion.objects.get(cache=test_cache_name)
|
|
|
+
|
|
|
+ cachebuster.register(test_cache_name)
|
|
|
+ CacheVersion.objects.get(cache=test_cache_name)
|
|
|
+
|
|
|
+ cachebuster.unregister(test_cache_name)
|
|
|
+ with self.assertRaises(CacheVersion.DoesNotExist):
|
|
|
+ CacheVersion.objects.get(cache=test_cache_name)
|
|
|
+
|
|
|
+
|
|
|
+class CacheBusterCacheTests(TestCase):
|
|
|
+ def setUp(self):
|
|
|
+ self.cache_name = 'eric_the_fish'
|
|
|
+ cachebuster.register(self.cache_name)
|
|
|
+
|
|
|
+ def tearDown(self):
|
|
|
+ threadstore.clear()
|
|
|
+
|
|
|
+ def test_cache_validation(self):
|
|
|
+ """cache correctly validates"""
|
|
|
+ version = cachebuster.get_version(self.cache_name)
|
|
|
+ self.assertEqual(version, 0)
|
|
|
+
|
|
|
+ db_version = CacheVersion.objects.get(cache=self.cache_name).version
|
|
|
+ self.assertEqual(db_version, 0)
|
|
|
+
|
|
|
+ self.assertEqual(db_version, version)
|
|
|
+ self.assertTrue(cachebuster.is_valid(self.cache_name, version))
|
|
|
+ self.assertTrue(cachebuster.is_valid(self.cache_name, db_version))
|
|
|
+
|
|
|
+ def test_cache_invalidation(self):
|
|
|
+ """invalidate has increased valid version number"""
|
|
|
+ db_version = CacheVersion.objects.get(cache=self.cache_name).version
|
|
|
+ cachebuster.invalidate(self.cache_name)
|
|
|
+
|
|
|
+ new_version = cachebuster.get_version(self.cache_name)
|
|
|
+ new_db_version = CacheVersion.objects.get(cache=self.cache_name)
|
|
|
+ new_db_version = new_db_version.version
|
|
|
+
|
|
|
+ self.assertEqual(new_version, 1)
|
|
|
+ self.assertEqual(new_db_version, 1)
|
|
|
+ self.assertEqual(new_version, new_db_version)
|
|
|
+ self.assertFalse(cachebuster.is_valid(self.cache_name, db_version))
|
|
|
+ self.assertTrue(cachebuster.is_valid(self.cache_name, new_db_version))
|
|
|
+
|
|
|
+ def test_cache_invalidation_all(self):
|
|
|
+ """invalidate_all has increased valid version number"""
|
|
|
+ cache_a = "eric_the_halibut"
|
|
|
+ cache_b = "eric_the_crab"
|
|
|
+ cache_c = "eric_the_lion"
|
|
|
+
|
|
|
+ cachebuster.register(cache_a)
|
|
|
+ cachebuster.register(cache_b)
|
|
|
+ cachebuster.register(cache_c)
|
|
|
+
|
|
|
+ cachebuster.invalidate_all()
|
|
|
+
|
|
|
+ new_version_a = CacheVersion.objects.get(cache=cache_a).version
|
|
|
+ new_version_b = CacheVersion.objects.get(cache=cache_b).version
|
|
|
+ new_version_c = CacheVersion.objects.get(cache=cache_c).version
|
|
|
+
|
|
|
+ self.assertEqual(new_version_a, 1)
|
|
|
+ self.assertEqual(new_version_b, 1)
|
|
|
+ self.assertEqual(new_version_c, 1)
|