mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-20 22:40:31 -04:00
Merge pull request #4160 from alphagov/redis-clear-all
Make it easy to clear cache for all key formats
This commit is contained in:
@@ -734,26 +734,27 @@ def test_clear_cache_shows_form(
|
||||
|
||||
page = client_request.get('main.clear_cache')
|
||||
|
||||
assert page.select('input[type=radio]')[0]['value'] == 'user'
|
||||
assert page.select('input[type=radio]')[1]['value'] == 'service'
|
||||
assert page.select('input[type=radio]')[2]['value'] == 'template'
|
||||
assert page.select('input[type=radio]')[3]['value'] == 'email_branding'
|
||||
assert page.select('input[type=radio]')[4]['value'] == 'letter_branding'
|
||||
assert page.select('input[type=radio]')[5]['value'] == 'organisation'
|
||||
assert not redis.delete_cache_keys_by_pattern.called
|
||||
radios = {el['value'] for el in page.select('input[type=checkbox]')}
|
||||
|
||||
assert radios == {
|
||||
'user',
|
||||
'service',
|
||||
'template',
|
||||
'email_branding',
|
||||
'letter_branding',
|
||||
'organisation',
|
||||
'broadcast'
|
||||
}
|
||||
|
||||
|
||||
@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'),
|
||||
('service', [
|
||||
], 'Removed 6 objects across 3 key formats for template'),
|
||||
(['service', 'organisation'], [
|
||||
call('has_jobs-????????-????-????-????-????????????'),
|
||||
call('service-????????-????-????-????-????????????'),
|
||||
call('service-????????-????-????-????-????????????-templates'),
|
||||
@@ -761,16 +762,14 @@ 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'),
|
||||
('organisation', [
|
||||
call('organisations'),
|
||||
call('domains'),
|
||||
call('live-service-and-organisation-counts'),
|
||||
call('organisation-????????-????-????-????-????????????-name'),
|
||||
], 'Removed 104 organisation objects from redis'),
|
||||
], 'Removed 22 objects across 11 key formats for service, organisation'),
|
||||
('broadcast', [
|
||||
call('service-????????-????-????-????-????????????-broadcast-message-????????-????-????-????-????????????'),
|
||||
], 'Removed 101 broadcast objects from redis'),
|
||||
], 'Removed 2 objects across 1 key formats for broadcast'),
|
||||
))
|
||||
def test_clear_cache_submits_and_tells_you_how_many_things_were_deleted(
|
||||
client_request,
|
||||
@@ -781,12 +780,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
|
||||
|
||||
@@ -804,7 +805,7 @@ def test_clear_cache_requires_option(
|
||||
|
||||
page = client_request.post('main.clear_cache', _data={}, _expected_status=200)
|
||||
|
||||
assert normalize_spaces(page.find('span', class_='govuk-error-message').text) == 'Error: Select an option'
|
||||
assert normalize_spaces(page.find('span', class_='govuk-error-message').text) == 'Error: Select at least one option'
|
||||
assert not redis.delete_cache_keys_by_pattern.called
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user