add tests

This commit is contained in:
Leo Hemsted
2019-02-15 11:13:53 +00:00
parent 1dcba53daf
commit 89bfdf27ce
4 changed files with 47 additions and 4 deletions

View File

@@ -15,7 +15,12 @@ from app import (
) )
from app.extensions import antivirus_client, redis_client from app.extensions import antivirus_client, redis_client
from app.main import main from app.main import main
from app.main.forms import DateFilterForm, PDFUploadForm, ReturnedLettersForm, ClearCacheForm from app.main.forms import (
ClearCacheForm,
DateFilterForm,
PDFUploadForm,
ReturnedLettersForm,
)
from app.statistics_utils import ( from app.statistics_utils import (
get_formatted_percentage, get_formatted_percentage,
get_formatted_percentage_two_dp, get_formatted_percentage_two_dp,

View File

@@ -303,7 +303,6 @@ class MainNavigation(Navigation):
'check_notification', 'check_notification',
'choose_template', 'choose_template',
'choose_template_to_copy', 'choose_template_to_copy',
'clear_cache',
'confirm_redact_template', 'confirm_redact_template',
'conversation_reply', 'conversation_reply',
'copy_template', 'copy_template',

View File

@@ -10,7 +10,7 @@
{% block platform_admin_content %} {% block platform_admin_content %}
<h1 class="heading-large"> <h1 class="heading-large">
Clear Redis Cache Clear Cache
</h1> </h1>
{% call form_wrapper() %} {% call form_wrapper() %}

View File

@@ -2,7 +2,7 @@ import datetime
import re import re
import uuid import uuid
from functools import partial from functools import partial
from unittest.mock import ANY from unittest.mock import ANY, call
import pytest import pytest
import requests_mock import requests_mock
@@ -858,3 +858,42 @@ def test_letter_validation_preview_doesnt_call_template_preview_when_file_doesnt
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.find('div', class_='banner-dangerous').text.strip() == "Document didn't pass the virus scan" assert page.find('div', class_='banner-dangerous').text.strip() == "Document didn't pass the virus scan"
def test_clear_cache_shows_form(client_request, platform_admin_user, mocker):
redis = mocker.patch('app.main.views.platform_admin.redis_client')
client_request.login(platform_admin_user)
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 not redis.delete_cache_keys_by_pattern.called
def test_clear_cache_submits_and_tells_you_how_many_things_were_deleted(client_request, platform_admin_user, mocker):
redis = mocker.patch('app.main.views.platform_admin.redis_client')
redis.delete_cache_keys_by_pattern.side_effect = [0, 3, 1]
client_request.login(platform_admin_user)
page = client_request.post('main.clear_cache', _data={'model_type': 'template'}, _expected_status=200)
assert redis.delete_cache_keys_by_pattern.call_args_list == [
call('service-????????-????-????-????-????????????-templates'),
call('template-????????-????-????-????-????????????-version-*'),
call('template-????????-????-????-????-????????????-versions'),
]
flash_banner = page.find('div', class_='banner-dangerous')
assert flash_banner.text.strip() == 'Removed 3 template objects from redis'
def test_clear_cache_requires_option(client_request, platform_admin_user,mocker):
redis = mocker.patch('app.main.views.platform_admin.redis_client')
client_request.login(platform_admin_user)
page = client_request.post('main.clear_cache', _data={}, _expected_status=200)
assert normalize_spaces(page.find('span', class_='error-message').text) == 'Not a valid choice'
assert not redis.delete_cache_keys_by_pattern.called