From 914fc7b2f40247949830722062d0cea445707618 Mon Sep 17 00:00:00 2001
From: Stuart Owen <stuart.owen@manchester.ac.uk>
Date: Tue, 9 Jan 2024 14:27:03 +0000
Subject: [PATCH] remember that the external search has been checked #1712

---
 app/controllers/search_controller.rb      |  1 +
 test/functional/search_controller_test.rb | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index 30489b4b23..2b100795cb 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -37,6 +37,7 @@ def perform_search(sources)
     end
 
     if search_params[:include_external_search] == '1'
+      @include_external_search = true
       @external_results = Seek::ExternalSearch.instance.external_search(downcase_query, @search_type&.downcase)
     end
 
diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb
index e6f628b007..97cf320008 100644
--- a/test/functional/search_controller_test.rb
+++ b/test/functional/search_controller_test.rb
@@ -18,6 +18,9 @@ class SearchControllerTest < ActionController::TestCase
         assert_select '.list_item_title a[href=?]', document_path(doc)
       end
     end
+
+    refute assigns(:include_external_search)
+    assert_select 'div#advanced-search input#include_external_search[type=checkbox]:not(checked)'
   end
 
   test 'search result order retained' do
@@ -175,4 +178,22 @@ class SearchControllerTest < ActionController::TestCase
     assert_select '#more-results', count: 0
 
   end
+
+  test 'remember external search' do
+    FactoryBot.create(:model, policy: FactoryBot.create(:public_policy))
+
+    VCR.use_cassette('biomodels/search') do
+      with_config_value(:external_search_enabled, true) do
+        Model.stub(:solr_cache, -> (q) { Model.pluck(:id).last(3) }) do
+          get :index, params: { q: 'yeast', include_external_search: '1' }
+        end
+      end
+    end
+
+    assert_equal 1, assigns(:results)['Model'].count
+    assert_equal 25, assigns(:external_results).count
+
+    assert assigns(:include_external_search)
+    assert_select 'div#advanced-search input#include_external_search[type=checkbox][checked=checked]'
+  end
 end