From 54d4fb2a6c7248fb88923e1cc0934f6eb82e1e04 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Thu, 8 Oct 2020 14:30:09 +0100 Subject: [PATCH] Allow platform admins to clear cached broadcasts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When we add a new property to the broadcast model, we need to delete any cached broadcasts from Redis that are missing the new property. So this adds an option to do this to the cache page in platform admin. I’ve also tried to make it more obvious what the magic numbers in the test fixture are doing. --- app/main/views/platform_admin.py | 3 +++ tests/app/main/views/test_platform_admin.py | 13 +++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/main/views/platform_admin.py b/app/main/views/platform_admin.py index 5f051cf10..1259c7e5c 100644 --- a/app/main/views/platform_admin.py +++ b/app/main/views/platform_admin.py @@ -432,6 +432,9 @@ def clear_cache(): 'live-service-and-organisation-counts', 'organisation-????????-????-????-????-????????????-name', ]), + ('broadcast', [ + 'service-????????-????-????-????-????????????-broadcast-message-????????-????-????-????-????????????', + ]), ]) form = ClearCacheForm() diff --git a/tests/app/main/views/test_platform_admin.py b/tests/app/main/views/test_platform_admin.py index c75bab7e8..de704e0a2 100644 --- a/tests/app/main/views/test_platform_admin.py +++ b/tests/app/main/views/test_platform_admin.py @@ -692,7 +692,7 @@ def test_clear_cache_shows_form(client_request, platform_admin_user, mocker): call('service-????????-????-????-????-????????????-templates'), call('service-????????-????-????-????-????????????-template-????????-????-????-????-????????????-version-*'), call('service-????????-????-????-????-????????????-template-????????-????-????-????-????????????-versions'), - ], 'Removed 3 template objects from redis'), + ], 'Removed 103 template objects from redis'), ('service', [ call('has_jobs-????????-????-????-????-????????????'), call('service-????????-????-????-????-????????????'), @@ -701,13 +701,16 @@ def test_clear_cache_shows_form(client_request, platform_admin_user, mocker): call('service-????????-????-????-????-????????????-template-folders'), call('service-????????-????-????-????-????????????-returned-letters-statistics'), call('service-????????-????-????-????-????????????-returned-letters-summary'), - ], 'Removed 3 service objects from redis'), + ], 'Removed 107 service objects from redis'), ('organisation', [ call('organisations'), call('domains'), call('live-service-and-organisation-counts'), call('organisation-????????-????-????-????-????????????-name'), - ], 'Removed 3 organisation objects from redis'), + ], 'Removed 104 organisation objects from redis'), + ('broadcast', [ + call('service-????????-????-????-????-????????????-broadcast-message-????????-????-????-????-????????????'), + ], 'Removed 101 broadcast objects from redis'), )) def test_clear_cache_submits_and_tells_you_how_many_things_were_deleted( client_request, @@ -718,7 +721,9 @@ 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') - redis.delete_cache_keys_by_pattern.side_effect = [0, 3, 1, 0, 0, 0, 0, 0] + # 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] client_request.login(platform_admin_user) page = client_request.post('main.clear_cache', _data={'model_type': model_type}, _expected_status=200)