From f93557ea905fe84fd9e1c72d5f81f87095df5d11 Mon Sep 17 00:00:00 2001 From: JG Date: Thu, 26 May 2022 09:11:25 +0100 Subject: [PATCH] renamed serach to filter and more precise tests --- app/controllers/case_logs_controller.rb | 2 +- app/models/case_log.rb | 16 +++---- spec/models/case_log_spec.rb | 55 +++++++++++++------------ 3 files changed, 37 insertions(+), 36 deletions(-) diff --git a/app/controllers/case_logs_controller.rb b/app/controllers/case_logs_controller.rb index f0562d6d3..bd3db70f5 100644 --- a/app/controllers/case_logs_controller.rb +++ b/app/controllers/case_logs_controller.rb @@ -15,7 +15,7 @@ class CaseLogsController < ApplicationController search_param = params["search-field"] if search_param - @pagy, @case_logs = pagy(@case_logs.search_by(search_param)) + @pagy, @case_logs = pagy(@case_logs.filter_by(search_param)) end respond_to do |format| diff --git a/app/models/case_log.rb b/app/models/case_log.rb index aec585f50..e8108c3b1 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -51,14 +51,14 @@ class CaseLog < ApplicationRecord end } - scope :search_by_id, ->(id) { where(id: id) } - scope :search_by_tenancy_code, ->(code) { where(tenancy_code: code) } - scope :search_by_propcode, ->(code) { where(propcode: code) } - scope :search_by_postcode, ->(code) { where(postcode_full: code) } - scope :search_by, ->(param) { search_by_id(param.to_i) - .or(search_by_tenancy_code(param)) - .or(search_by_propcode(param)) - .or(search_by_postcode(param.upcase.gsub(/\s+/, ""))) } + scope :filter_by_id, ->(id) { where(id: id) } + scope :filter_by_tenancy_code, ->(code) { where(tenancy_code: code) } + scope :filter_by_propcode, ->(code) { where(propcode: code) } + scope :filter_by_postcode, ->(code) { where(postcode_full: code) } + scope :filter_by, ->(param) { filter_by_id(param) + .or(filter_by_tenancy_code(param)) + .or(filter_by_propcode(param)) + .or(filter_by_postcode(param.upcase.gsub(/\s+/, ""))) } 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 diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index 40292d712..9718f0093 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -1864,7 +1864,7 @@ RSpec.describe CaseLog do end describe "scopes" do - let!(:case_log_1) { FactoryBot.create(:case_log, :in_progress, startdate: Time.utc(2021, 5, 3), created_by: created_by_user) } + let!(:case_log_1) { FactoryBot.create(:case_log, :in_progress, startdate: Time.utc(2021, 5, 3), created_by: created_by_user, postcode_full: "XX12YY") } let!(:case_log_2) { FactoryBot.create(:case_log, :completed, startdate: Time.utc(2021, 5, 3), created_by: created_by_user) } before do @@ -1872,63 +1872,64 @@ RSpec.describe CaseLog do end context "searching scopes" do - let!(:case_log_3) { FactoryBot.create(:case_log, :completed, startdate: Time.utc(2021, 5, 3), created_by: created_by_user) } + let!(:case_log_3) { FactoryBot.create(:case_log, :completed, startdate: Time.utc(2021, 5, 3), created_by: created_by_user, postcode_full: "XX12YY") } - context "#search_by_id" do - it "allows uearching by a log ID" do - expect(described_class.search_by_id(case_log_1.id).count).to eq(1) - expect(described_class.search_by_id(case_log_1.id).first.id).to eq case_log_1.id + context "#filter_by_id" do + it "allows searching by a log ID" do + expect(described_class.filter_by_id(case_log_1.id.to_s).count).to eq(1) + expect(described_class.filter_by_id(case_log_1.id.to_s).first.id).to eq case_log_1.id end end - context "#search_by_tenancy_code" do + context "#filter_by_tenancy_code" do it "allows searching by a Tenancy Code" do - expect(described_class.search_by_tenancy_code(case_log_2.tenancy_code).count).to eq(1) - expect(described_class.search_by_tenancy_code(case_log_2.tenancy_code).first.id).to eq case_log_2.id + expect(described_class.filter_by_tenancy_code(case_log_2.tenancy_code).count).to eq(1) + expect(described_class.filter_by_tenancy_code(case_log_2.tenancy_code).first.id).to eq case_log_2.id end end - context "#search_by_propcode" do + context "#filter_by_propcode" do it "allows searching by a Property Reference" do - expect(described_class.search_by_propcode(case_log_2.propcode).count).to eq(1) - expect(described_class.search_by_propcode(case_log_2.propcode).first.id).to eq case_log_2.id + expect(described_class.filter_by_propcode(case_log_2.propcode).count).to eq(1) + expect(described_class.filter_by_propcode(case_log_2.propcode).first.id).to eq case_log_2.id end end - context "#search_by_postcode" do + context "#filter_by_postcode" do it "allows searching by a Property Postcode" do - expect(described_class.search_by_postcode(case_log_2.postcode_full).count).to eq(1) - expect(described_class.search_by_postcode(case_log_2.postcode_full).first.id).to eq case_log_2.id + expect(described_class.filter_by_postcode(case_log_2.postcode_full).count).to eq(1) + expect(described_class.filter_by_postcode(case_log_2.postcode_full).first.id).to eq case_log_2.id end end - context "#search_by" do + context "#filter_by" do it "allows searching using ID" do - expect(described_class.search_by(case_log_1.id).count).to eq(1) - expect(described_class.search_by(case_log_1.id).first.id).to eq case_log_1.id + expect(described_class.filter_by(case_log_1.id.to_s).count).to eq(1) + expect(described_class.filter_by(case_log_1.id.to_s).first.id).to eq case_log_1.id end it "allows searching using tenancy code" do - expect(described_class.search_by(case_log_2.tenancy_code).count).to eq(1) - expect(described_class.search_by(case_log_2.tenancy_code).first.id).to eq case_log_2.id + expect(described_class.filter_by(case_log_2.tenancy_code).count).to eq(1) + expect(described_class.filter_by(case_log_2.tenancy_code).first.id).to eq case_log_2.id end it "allows searching by a Property Reference" do - expect(described_class.search_by(case_log_2.propcode).count).to eq(1) - expect(described_class.search_by(case_log_2.propcode).first.id).to eq case_log_2.id + expect(described_class.filter_by(case_log_2.propcode).count).to eq(1) + expect(described_class.filter_by(case_log_2.propcode).first.id).to eq case_log_2.id end it "allows searching by a Property Postcode" do - expect(described_class.search_by(case_log_2.postcode_full).count).to eq(1) - expect(described_class.search_by(case_log_2.postcode_full).first.id).to eq case_log_2.id + expect(described_class.filter_by(case_log_1.postcode_full).count).to eq(2) + expect(described_class.filter_by(case_log_1.postcode_full).first.id).to eq case_log_1.id + expect(described_class.filter_by(case_log_1.postcode_full).last.id).to eq case_log_3.id end context "postcode has spaces and lower case letters" do - let(:matching_postcode_lower_case_with_spaces) { case_log_2.postcode_full..downcase.chars.insert(3, " ").join } + let(:matching_postcode_lower_case_with_spaces) { case_log_2.postcode_full.downcase.chars.insert(3, " ").join } it "allows searching by a Property Postcode" do - expect(described_class.search_by(matching_postcode_lower_case_with_spaces).count).to eq(1) - expect(described_class.search_by(matching_postcode_lower_case_with_spaces).first.id).to eq case_log_2.id + expect(described_class.filter_by(matching_postcode_lower_case_with_spaces).count).to eq(1) + expect(described_class.filter_by(matching_postcode_lower_case_with_spaces).first.id).to eq case_log_2.id end end end