mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +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
 | 
			
		||||
from zerver.lib.rate_limiter import add_ratelimit_rule, remove_ratelimit_rule
 | 
			
		||||
from zerver.lib import bugdown
 | 
			
		||||
from zerver.lib import cache
 | 
			
		||||
from zerver.lib.cache import bounce_key_prefix_for_testing
 | 
			
		||||
from zerver.lib.rate_limiter import clear_user_history
 | 
			
		||||
from zerver.lib.alert_words import alert_words_in_realm, user_alert_words, \
 | 
			
		||||
@@ -54,6 +55,25 @@ def tornado_redirected_to_list(lst):
 | 
			
		||||
    yield
 | 
			
		||||
    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
 | 
			
		||||
def queries_captured():
 | 
			
		||||
    '''
 | 
			
		||||
@@ -2305,6 +2325,15 @@ class GetProfileTest(AuthedTestCase):
 | 
			
		||||
        self.assertEqual(json["max_message_id"], max_id)
 | 
			
		||||
        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):
 | 
			
		||||
        """
 | 
			
		||||
        Ensure get_profile returns a max message id and returns successfully
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user