From 8c66d466bad7aff0dd094a74e18903f53259d686 Mon Sep 17 00:00:00 2001 From: Christian Sutter Date: Thu, 3 Oct 2024 09:26:07 +0000 Subject: [PATCH] All content finder: Implement hidden clearable facet This implements the hidden clearable facet for the new "all content" finder UI. These are facets that are able to be used with the finder as query parameters, and if used are shown to the user, but do not have UI to manually select. We can have a much simpler implementation than the existing finder UI because we do not need to consider Javascript. --- app/models/hidden_clearable_facet.rb | 2 ++ .../_hidden_clearable_facet.html.erb | 4 +++- features/all_content_finder.feature | 5 +++++ features/step_definitions/site_search_steps.rb | 13 +++++++++++++ features/support/document_helper.rb | 5 +++++ 5 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app/models/hidden_clearable_facet.rb b/app/models/hidden_clearable_facet.rb index da4d9ad0c..9d4f67d93 100644 --- a/app/models/hidden_clearable_facet.rb +++ b/app/models/hidden_clearable_facet.rb @@ -1,4 +1,6 @@ class HiddenClearableFacet < FilterableFacet + attr_reader :value + def initialize(facet, value_hash) @value = Array(value_hash) super(facet) diff --git a/app/views/finders/all_content_finder_facets/_hidden_clearable_facet.html.erb b/app/views/finders/all_content_finder_facets/_hidden_clearable_facet.html.erb index cf40b637b..30a046ef9 100644 --- a/app/views/finders/all_content_finder_facets/_hidden_clearable_facet.html.erb +++ b/app/views/finders/all_content_finder_facets/_hidden_clearable_facet.html.erb @@ -1 +1,3 @@ -<%# TODO: Hidden clearable facet %> +<% hidden_clearable_facet.value.each do |value| %> + <%= hidden_field_tag "#{hidden_clearable_facet.key}[]", value %> +<% end %> diff --git a/features/all_content_finder.feature b/features/all_content_finder.feature index 8d0f54637..215c28e80 100644 --- a/features/all_content_finder.feature +++ b/features/all_content_finder.feature @@ -12,6 +12,11 @@ Feature: All content finder ("site search") Then I can see results for my search And I can see how many results there are + Scenario: Making a search with a hidden clearable filter + When I search for "search-term" with a hidden clearable manual filter + And I change my search term to "search-term-updated" and submit + Then my search is still filtered by manual + Scenario: Filtering results When I search all content for "how to walk silly" And I open the filter panel diff --git a/features/step_definitions/site_search_steps.rb b/features/step_definitions/site_search_steps.rb index 4fe039c5f..59c623069 100644 --- a/features/step_definitions/site_search_steps.rb +++ b/features/step_definitions/site_search_steps.rb @@ -2,6 +2,15 @@ visit "/search/all?q=#{search_term}" end +When(/^I search for "([^"]*)" with a hidden clearable manual filter$/) do |search_term| + visit "/search/all?q=#{search_term}&manual%5B%5D=how-to-be-a-wizard" +end + +When(/^I change my search term to "([^"]*)" and submit$/) do |search_term| + fill_in "Search", with: search_term + click_on "Search" +end + Then("I can see results for my search") do expect(page).to have_link("West London wobbley walk") expect(page).to have_link("The Gerry Anderson") @@ -11,6 +20,10 @@ expect(page).to have_selector("h2", text: "2 results") end +Then("my search is still filtered by manual") do + expect(page).to have_link("Remove filter Manual: How to be a Wizard", normalize_ws: true) +end + When("I open the filter panel") do click_on "Filter and sort" end diff --git a/features/support/document_helper.rb b/features/support/document_helper.rb index 463c1890d..6593b7754 100644 --- a/features/support/document_helper.rb +++ b/features/support/document_helper.rb @@ -136,6 +136,11 @@ def stub_search_api_request_with_manual_filter_all_content_results filtered_by_manual_all_content_results_json, including_v2: true, ) + stub_response( + hash_including("q" => "search-term-updated", "filter_manual" => %w[how-to-be-a-wizard]), + filtered_by_manual_all_content_results_json, + including_v2: true, + ) end def stub_search_api_request_with_filtered_policy_papers_results