mirror of
https://github.com/zulip/zulip.git
synced 2025-11-12 18:06:44 +00:00
Add simulated_empty_cache() test decorator
(imported from commit 2dd03a522f9ee01a802c8e5ff4116db04763ed35)
This commit is contained in:
@@ -22,6 +22,7 @@ from zerver.lib.actions import check_send_message, gather_subscriptions, \
|
|||||||
set_default_streams
|
set_default_streams
|
||||||
from zerver.lib.rate_limiter import add_ratelimit_rule, remove_ratelimit_rule
|
from zerver.lib.rate_limiter import add_ratelimit_rule, remove_ratelimit_rule
|
||||||
from zerver.lib import bugdown
|
from zerver.lib import bugdown
|
||||||
|
from zerver.lib import cache
|
||||||
from zerver.lib.cache import bounce_key_prefix_for_testing
|
from zerver.lib.cache import bounce_key_prefix_for_testing
|
||||||
from zerver.lib.rate_limiter import clear_user_history
|
from zerver.lib.rate_limiter import clear_user_history
|
||||||
from zerver.lib.alert_words import alert_words_in_realm, user_alert_words, \
|
from zerver.lib.alert_words import alert_words_in_realm, user_alert_words, \
|
||||||
@@ -54,6 +55,25 @@ def tornado_redirected_to_list(lst):
|
|||||||
yield
|
yield
|
||||||
tornado_callbacks.process_event = real_tornado_callbacks_process_event
|
tornado_callbacks.process_event = real_tornado_callbacks_process_event
|
||||||
|
|
||||||
|
@contextmanager
|
||||||
|
def simulated_empty_cache():
|
||||||
|
cache_queries = []
|
||||||
|
def my_cache_get(key, cache_name=None):
|
||||||
|
cache_queries.append(('get', key, cache_name))
|
||||||
|
return None
|
||||||
|
|
||||||
|
def my_cache_get_many(keys, cache_name=None):
|
||||||
|
cache_queries.append(('getmany', keys, cache_name))
|
||||||
|
return None
|
||||||
|
|
||||||
|
old_get = cache.cache_get
|
||||||
|
old_get_many = cache.cache_get_many
|
||||||
|
cache.cache_get = my_cache_get
|
||||||
|
cache.cache_get_many = my_cache_get_many
|
||||||
|
yield cache_queries
|
||||||
|
cache.cache_get = old_get
|
||||||
|
cache.cache_get_many = old_get_many
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def queries_captured():
|
def queries_captured():
|
||||||
'''
|
'''
|
||||||
@@ -2305,6 +2325,15 @@ class GetProfileTest(AuthedTestCase):
|
|||||||
self.assertEqual(json["max_message_id"], max_id)
|
self.assertEqual(json["max_message_id"], max_id)
|
||||||
return json
|
return json
|
||||||
|
|
||||||
|
def test_cache_behavior(self):
|
||||||
|
with queries_captured() as queries:
|
||||||
|
with simulated_empty_cache() as cache_queries:
|
||||||
|
user_profile = get_user_profile_by_email('hamlet@zulip.com')
|
||||||
|
|
||||||
|
self.assertEqual(len(queries), 1)
|
||||||
|
self.assertEqual(len(cache_queries), 1)
|
||||||
|
self.assertEqual(user_profile.email, 'hamlet@zulip.com')
|
||||||
|
|
||||||
def test_api_get_empty_profile(self):
|
def test_api_get_empty_profile(self):
|
||||||
"""
|
"""
|
||||||
Ensure get_profile returns a max message id and returns successfully
|
Ensure get_profile returns a max message id and returns successfully
|
||||||
|
|||||||
Reference in New Issue
Block a user