From 6af1c60ad9ce6b767ebe9295204ed251fa715d77 Mon Sep 17 00:00:00 2001 From: JG Date: Tue, 24 May 2022 14:06:59 +0100 Subject: [PATCH] spiked the search using id and tennant code --- app/controllers/case_logs_controller.rb | 6 ++++++ app/models/case_log.rb | 4 ++++ spec/features/log_spec.rb | 2 +- spec/requests/case_logs_controller_spec.rb | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/controllers/case_logs_controller.rb b/app/controllers/case_logs_controller.rb index 1217585f0..f0562d6d3 100644 --- a/app/controllers/case_logs_controller.rb +++ b/app/controllers/case_logs_controller.rb @@ -12,6 +12,12 @@ class CaseLogsController < ApplicationController @pagy, @case_logs = pagy(filtered_case_logs(current_user.case_logs)) + search_param = params["search-field"] + + if search_param + @pagy, @case_logs = pagy(@case_logs.search_by(search_param)) + end + respond_to do |format| format.html format.csv do diff --git a/app/models/case_log.rb b/app/models/case_log.rb index 2c09bd650..a2183cb82 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -51,6 +51,10 @@ class CaseLog < ApplicationRecord end } + scope :search_by_id, ->(id) { where(id: id) } + scope :search_by_tenant_code, ->(code) { where(tenant_code: code) } + scope :search_by, ->(param) { search_by_id(param.to_i).or(search_by_tenant_code(param)) } + AUTOGENERATED_FIELDS = %w[id status created_at updated_at discarded_at].freeze OPTIONAL_FIELDS = %w[first_time_property_let_as_social_housing tenant_code propcode].freeze RENT_TYPE_MAPPING = { 0 => 1, 1 => 2, 2 => 2, 3 => 3, 4 => 3, 5 => 3 }.freeze diff --git a/spec/features/log_spec.rb b/spec/features/log_spec.rb index dea44052b..df7f84b63 100644 --- a/spec/features/log_spec.rb +++ b/spec/features/log_spec.rb @@ -22,7 +22,7 @@ RSpec.describe "Log Features" do end it "displays log matching the search" do - fill_in("search-field", with: log.id ) + fill_in("search-field", with: log.id) click_button("Search") expect(page).to have_content(log.id) diff --git a/spec/requests/case_logs_controller_spec.rb b/spec/requests/case_logs_controller_spec.rb index f44b3652a..3952349b6 100644 --- a/spec/requests/case_logs_controller_spec.rb +++ b/spec/requests/case_logs_controller_spec.rb @@ -187,7 +187,7 @@ RSpec.describe CaseLogsController, type: :request do context "with a search bar" do let!(:logs) { FactoryBot.create_list(:case_log, 5) } - it "shows case logs mathing the search word" do + it "shows case logs matching the search word" do get "/logs?search-field=#{logs.first.id}", headers: headers, params: {} expect(page).to have_content(logs.first.id) expect(page).not_to have_content(logs.last.id)