From d80f04e06a2909d0382b00c18ffc2bbf85142bdb Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Wed, 22 Nov 2023 14:28:01 -0500 Subject: [PATCH] Debugging static query case setup (#889) * add a test and some docs... * make sure we don't get double imports of a static csv file1 --- .../javascripts/controllers/wizardModal.js | 4 ++-- .../javascripts/services/settingsSvc.js | 3 ++- app/assets/templates/views/wizardModal.html | 3 +-- .../api/v1/snapshots/search_controller.rb | 19 ++++++++++++++++++- config/initializers/apipie.rb | 1 + .../v1/snapshots/search_controller_test.rb | 11 +++++++++++ 6 files changed, 35 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/controllers/wizardModal.js b/app/assets/javascripts/controllers/wizardModal.js index 95496f4f7..964c045d7 100644 --- a/app/assets/javascripts/controllers/wizardModal.js +++ b/app/assets/javascripts/controllers/wizardModal.js @@ -23,6 +23,7 @@ angular.module('QuepidApp') $scope.isStaticCollapsed = true; $scope.addedStaticQueries = false; + $scope.listOfStaticQueries = []; $scope.showSearchApiJavaScriptEditor = true; $scope.staticContent = { content: null, @@ -728,8 +729,7 @@ angular.module('QuepidApp') function createSnapshot() { $scope.staticContent.import.loading = true; $scope.isStaticCollapsed = false; - - $scope.listOfStaticQueries = []; + angular.forEach($scope.staticContent.result, function(doc) { if (!$scope.listOfStaticQueries.includes(doc['Query Text'])){ $scope.listOfStaticQueries.push(doc['Query Text']); diff --git a/app/assets/javascripts/services/settingsSvc.js b/app/assets/javascripts/services/settingsSvc.js index 3d140016c..8d4282c9b 100644 --- a/app/assets/javascripts/services/settingsSvc.js +++ b/app/assets/javascripts/services/settingsSvc.js @@ -150,7 +150,8 @@ angular.module('QuepidApp') titleField: '', additionalFields: [], numberOfRows: 10, - searchEngine: 'static' + searchEngine: 'static', + proxyRequests: true // no searchUrl or urlFormat because it's code generated! }, searchapi: { diff --git a/app/assets/templates/views/wizardModal.html b/app/assets/templates/views/wizardModal.html index a9a17a33f..4507b65cb 100644 --- a/app/assets/templates/views/wizardModal.html +++ b/app/assets/templates/views/wizardModal.html @@ -238,8 +238,7 @@

CSV

{{ staticContent.content }}
- - + diff --git a/app/controllers/api/v1/snapshots/search_controller.rb b/app/controllers/api/v1/snapshots/search_controller.rb index d24e0d66b..95fe3179c 100644 --- a/app/controllers/api/v1/snapshots/search_controller.rb +++ b/app/controllers/api/v1/snapshots/search_controller.rb @@ -13,8 +13,17 @@ class SearchController < SnapshotsController # rubocop:disable Metrics/AbcSize # rubocop:disable Metrics/CyclomaticComplexity # rubocop:disable Metrics/PerceivedComplexity + # rubocop:disable Layout/LineLength + api :GET, '/api/cases/:case_id/snapshots/:snapshot_id/search?q=:q', + 'Mimic a Solr query by looking up query/doc data from a specific snapshot, using the q parameter as the query' + param :case_id, :number, + desc: 'The ID of the requested case.', required: true + param :snapshot_id, :number, + desc: 'The ID of the snapshot for the case.', required: true + param :q, String, + desc: 'The query that you are looking up', required: true def index - @q = params[:q] + @q = search_params[:q] query = if '*:*' == @q @snapshot.snapshot_queries.first.query @@ -57,9 +66,17 @@ def index # rubocop:enable Metrics/AbcSize # rubocop:enable Metrics/CyclomaticComplexity # rubocop:enable Metrics/PerceivedComplexity + # rubocop:enable Layout/LineLength private + def search_params + # Check if the 'q' parameter exists + raise ActionController::ParameterMissing, "Missing 'q' parameter" unless params.key?(:q) + + params + end + def set_snapshot @snapshot = @case.snapshots .where(id: params[:snapshot_id]) diff --git a/config/initializers/apipie.rb b/config/initializers/apipie.rb index 420751191..e3e746529 100644 --- a/config/initializers/apipie.rb +++ b/config/initializers/apipie.rb @@ -5,6 +5,7 @@ config.app_name = 'Quepid' config.api_base_url = '/api' config.doc_base_url = '/apipie' + config.validate = :explicitly # where is your API defined? config.api_controllers_matcher = Rails.root.join('app/controllers/api/**/*.rb').to_s config.namespaced_resources = true diff --git a/test/controllers/api/v1/snapshots/search_controller_test.rb b/test/controllers/api/v1/snapshots/search_controller_test.rb index 86f53ed9e..3f2f44e6a 100644 --- a/test/controllers/api/v1/snapshots/search_controller_test.rb +++ b/test/controllers/api/v1/snapshots/search_controller_test.rb @@ -124,6 +124,17 @@ class SearchControllerTest < ActionController::TestCase assert_equal data['responseHeader']['params'], solr_params.stringify_keys.transform_values(&:to_s) end end + + describe 'handles edge cases' do + let(:acase) { cases(:snapshot_case) } + let(:snapshot) { snapshots(:a_snapshot) } + + test 'replies with message when no parameters' do + assert_raises(ActionController::ParameterMissing) do + get :index, params: { case_id: acase.id, snapshot_id: snapshot.id } + end + end + end end end end