From cdb03d1eeb63f1e7c8aa21293854182bb711968c Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Thu, 22 Nov 2018 17:57:05 +0000 Subject: [PATCH] Only live search on template or folder name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If you have a folder structure like this: > FA / FB / FC and you search for ‘FA’, it’s very noisy to see: > FA / FB > FA / FB / T1 > FA / FB / T2 > FA / FB / FC > FA / FB / FC / T3 > … It’s clearer to just show: > FA / FB This also has the benefit of, if you type ‘template’ (for example) you don’t get every item any more, because it’s only looking at the name of the thing. It used to look at the entire description, ie: > A / B / C / Example > Text message template Now it only searches on the name: > A / B / C / *Example* > Text message template --- app/assets/javascripts/liveSearch.js | 2 +- .../views/templates/_template_list.html | 4 +- tests/app/main/views/test_template_folders.py | 54 +++++++++++++++++++ 3 files changed, 57 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/liveSearch.js b/app/assets/javascripts/liveSearch.js index f244e79b6..0968156c0 100644 --- a/app/assets/javascripts/liveSearch.js +++ b/app/assets/javascripts/liveSearch.js @@ -9,7 +9,7 @@ $targets.each(function() { - let content = $(this).text(); + let content = $('.live-search-relevant', this).text() || $(this).text(); if (query == '') { $(this).css('display', ''); diff --git a/app/templates/views/templates/_template_list.html b/app/templates/views/templates/_template_list.html index e4fe60476..a6e7fb212 100644 --- a/app/templates/views/templates/_template_list.html +++ b/app/templates/views/templates/_template_list.html @@ -28,11 +28,11 @@ {% endfor %} {% if item.is_folder %} - {{ item.name }} + {{ item.name }} {% else %} - {{ item.name }} + {{ item.name }} {% endif %} diff --git a/tests/app/main/views/test_template_folders.py b/tests/app/main/views/test_template_folders.py index 6151febb4..84ec435ba 100644 --- a/tests/app/main/views/test_template_folders.py +++ b/tests/app/main/views/test_template_folders.py @@ -108,6 +108,7 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare 'expected_nav_links,' 'expected_items, ' 'expected_displayed_items, ' + 'expected_searchable_text, ' 'expected_empty_message ' ), [ @@ -142,6 +143,21 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare 'letter_template_one Letter template', 'letter_template_two Letter template', ], + [ + 'folder_one', + 'folder_one_one', + 'folder_one_one_one', + 'sms_template_nested', + 'letter_template_nested', + 'folder_one_two', + 'folder_two', + 'sms_template_one', + 'sms_template_two', + 'email_template_one', + 'email_template_two', + 'letter_template_one', + 'letter_template_two', + ], None, ), ( @@ -163,6 +179,14 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare 'sms_template_one Text message template', 'sms_template_two Text message template', ], + [ + 'folder_one', + 'folder_one_one', + 'folder_one_one_one', + 'sms_template_nested', + 'sms_template_one', + 'sms_template_two', + ], None, ), ( @@ -182,6 +206,13 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare 'folder_one_one 1 template, 1 folder', 'folder_one_two Empty', ], + [ + 'folder_one_one', + 'folder_one_one_one', + 'sms_template_nested', + 'letter_template_nested', + 'folder_one_two', + ], None, ), ( @@ -198,6 +229,11 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare [ 'folder_one_one 1 folder', ], + [ + 'folder_one_one', + 'folder_one_one_one', + 'sms_template_nested', + ], None, ), ( @@ -208,6 +244,7 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare ['All', 'Text message', 'Letter'], [], [], + [], 'There are no email templates in this folder', ), ( @@ -225,6 +262,11 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare 'folder_one_one_one 1 template', 'letter_template_nested Letter template', ], + [ + 'folder_one_one_one', + 'sms_template_nested', + 'letter_template_nested', + ], None, ), ( @@ -239,6 +281,9 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare [ 'sms_template_nested Text message template', ], + [ + 'sms_template_nested', + ], None, ), ( @@ -249,6 +294,7 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare ['Text message', 'Email', 'Letter'], [], [], + [], 'This folder is empty', ), ( @@ -259,6 +305,7 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare ['All', 'Email', 'Letter'], [], [], + [], 'This folder is empty', ), ] @@ -277,6 +324,7 @@ def test_should_show_templates_folder_page( expected_nav_links, expected_items, expected_displayed_items, + expected_searchable_text, expected_empty_message, ): mock_get_template_folders.return_value = [ @@ -346,6 +394,12 @@ def test_should_show_templates_folder_page( assert '/' not in expected_item # Yo dawg I heard you like tests… assert normalize_spaces(displayed_page_items[index].text) == expected_item + all_searchable_text = page.select('#template-list .template-list-item .live-search-relevant') + assert len(all_searchable_text) == len(expected_searchable_text) + + for index, expected_item in enumerate(expected_searchable_text): + assert normalize_spaces(all_searchable_text[index].text) == expected_item + if expected_empty_message: assert normalize_spaces(page.select_one('.template-list-empty').text) == ( expected_empty_message