diff --git a/app/main/views/platform_admin.py b/app/main/views/platform_admin.py index 37d97e9e2..1cfbeab97 100644 --- a/app/main/views/platform_admin.py +++ b/app/main/views/platform_admin.py @@ -423,14 +423,16 @@ def clear_cache(): form.model_type.choices = [(key, key.replace('_', ' ').title()) for key in CACHE_KEYS] if form.validate_on_submit(): - to_delete = form.model_type.data + group_key = form.model_type.data + group = CACHE_KEYS[group_key] - num_deleted = max( + num_deleted = sum( redis_client.delete_cache_keys_by_pattern(pattern) - for pattern in CACHE_KEYS[to_delete] + for pattern in group ) - msg = 'Removed {} {} object{} from redis' - flash(msg.format(num_deleted, to_delete, 's' if num_deleted != 1 else ''), category='default') + + msg = f'Removed {num_deleted} {group_key} objects across {len(group)} key formats' + flash(msg, category='default') return render_template( 'views/platform-admin/clear-cache.html', diff --git a/tests/app/main/views/test_platform_admin.py b/tests/app/main/views/test_platform_admin.py index 4c19466e5..305df1106 100644 --- a/tests/app/main/views/test_platform_admin.py +++ b/tests/app/main/views/test_platform_admin.py @@ -745,14 +745,10 @@ def test_clear_cache_shows_form( @pytest.mark.parametrize('model_type, expected_calls, expected_confirmation', ( ('template', [ - # Returns 101 call('service-????????-????-????-????-????????????-templates'), - # Returns 102 call('service-????????-????-????-????-????????????-template-????????-????-????-????-????????????-version-*'), - # Returns 103 call('service-????????-????-????-????-????????????-template-????????-????-????-????-????????????-versions'), - # 103 shown here because it’s the `max` of the 3 counts - ], 'Removed 103 template objects from redis'), + ], 'Removed 6 template objects across 3 key formats'), ('service', [ call('has_jobs-????????-????-????-????-????????????'), call('service-????????-????-????-????-????????????'), @@ -761,16 +757,16 @@ def test_clear_cache_shows_form( call('service-????????-????-????-????-????????????-template-folders'), call('service-????????-????-????-????-????????????-returned-letters-statistics'), call('service-????????-????-????-????-????????????-returned-letters-summary'), - ], 'Removed 107 service objects from redis'), + ], 'Removed 14 service objects across 7 key formats'), ('organisation', [ call('organisations'), call('domains'), call('live-service-and-organisation-counts'), call('organisation-????????-????-????-????-????????????-name'), - ], 'Removed 104 organisation objects from redis'), + ], 'Removed 8 organisation objects across 4 key formats'), ('broadcast', [ call('service-????????-????-????-????-????????????-broadcast-message-????????-????-????-????-????????????'), - ], 'Removed 101 broadcast objects from redis'), + ], 'Removed 2 broadcast objects across 1 key formats'), )) def test_clear_cache_submits_and_tells_you_how_many_things_were_deleted( client_request, @@ -781,12 +777,14 @@ def test_clear_cache_submits_and_tells_you_how_many_things_were_deleted( expected_confirmation, ): redis = mocker.patch('app.main.views.platform_admin.redis_client') - # The way this is set up means the first time `delete_cache_keys_by_pattern` - # is called it will return `101`, the second time it will return `102`, etc - redis.delete_cache_keys_by_pattern.side_effect = [101, 102, 103, 104, 105, 106, 107, 108, 109] + redis.delete_cache_keys_by_pattern.return_value = 2 client_request.login(platform_admin_user) - page = client_request.post('main.clear_cache', _data={'model_type': model_type}, _expected_status=200) + page = client_request.post( + 'main.clear_cache', + _data={'model_type': model_type}, + _expected_status=200 + ) assert redis.delete_cache_keys_by_pattern.call_args_list == expected_calls