Browse Source

feat: allow log id searches that include "log" before the id

pull/2297/head
natdeanlewissoftwire 2 years ago
parent
commit
45edc47ddd
  1. 2
      app/models/lettings_log.rb
  2. 2
      app/models/sales_log.rb
  3. 6
      spec/models/lettings_log_spec.rb
  4. 38
      spec/models/sales_log_spec.rb

2
app/models/lettings_log.rb

@ -62,7 +62,7 @@ class LettingsLog < Log
.or(filter_by_tenant_code(param)) .or(filter_by_tenant_code(param))
.or(filter_by_propcode(param)) .or(filter_by_propcode(param))
.or(filter_by_postcode(param)) .or(filter_by_postcode(param))
.or(filter_by_id(param)) .or(filter_by_id(param.remove("log")))
} }
scope :after_date, ->(date) { where("lettings_logs.startdate >= ?", date) } scope :after_date, ->(date) { where("lettings_logs.startdate >= ?", date) }
scope :before_date, ->(date) { where("lettings_logs.startdate < ?", date) } scope :before_date, ->(date) { where("lettings_logs.startdate < ?", date) }

2
app/models/sales_log.rb

@ -47,7 +47,7 @@ class SalesLog < Log
scope :search_by, lambda { |param| scope :search_by, lambda { |param|
filter_by_purchaser_code(param) filter_by_purchaser_code(param)
.or(filter_by_postcode(param)) .or(filter_by_postcode(param))
.or(filter_by_id(param)) .or(filter_by_id(param.remove("log")))
} }
scope :age1_answered, -> { where.not(age1: nil).or(where(age1_known: [1, 2])) } scope :age1_answered, -> { where.not(age1: nil).or(where(age1_known: [1, 2])) }
scope :duplicate_logs, lambda { |log| scope :duplicate_logs, lambda { |log|

6
spec/models/lettings_log_spec.rb

@ -2828,6 +2828,12 @@ RSpec.describe LettingsLog do
expect(result.first.id).to eq lettings_log_to_search.id expect(result.first.id).to eq lettings_log_to_search.id
end end
it "allows searching by id including the word log" do
result = described_class.search_by("log#{lettings_log_to_search.id}")
expect(result.count).to eq(1)
expect(result.first.id).to eq lettings_log_to_search.id
end
context "when lettings log is supported housing" do context "when lettings log is supported housing" do
let(:location) { create(:location, postcode: "W6 0ST") } let(:location) { create(:location, postcode: "W6 0ST") }

38
spec/models/sales_log_spec.rb

@ -162,6 +162,44 @@ RSpec.describe SalesLog, type: :model do
end end
end end
describe "#search_by" do
let!(:sales_log_to_search) { create(:sales_log, :completed) }
it "allows searching using ID" do
result = described_class.search_by(sales_log_to_search.id.to_s)
expect(result.count).to eq(1)
expect(result.first.id).to eq sales_log_to_search.id
end
it "allows searching using purchaser code" do
result = described_class.search_by(sales_log_to_search.purchaser_code)
expect(result.count).to eq(1)
expect(result.first.id).to eq sales_log_to_search.id
end
it "allows searching by a Property Postcode" do
result = described_class.search_by(sales_log_to_search.postcode_full)
expect(result.count).to eq(1)
expect(result.first.id).to eq sales_log_to_search.id
end
it "allows searching by id including the word log" do
result = described_class.search_by("log#{sales_log_to_search.id}")
expect(result.count).to eq(1)
expect(result.first.id).to eq sales_log_to_search.id
end
context "when postcode has spaces and lower case letters" do
let(:matching_postcode_lower_case_with_spaces) { sales_log_to_search.postcode_full.downcase.chars.insert(3, " ").join }
it "allows searching by a Property Postcode" do
result = described_class.search_by(matching_postcode_lower_case_with_spaces)
expect(result.count).to eq(1)
expect(result.first.id).to eq sales_log_to_search.id
end
end
end
context "when filtering by year or nil" do context "when filtering by year or nil" do
before do before do
Timecop.freeze(Time.utc(2021, 5, 3)) Timecop.freeze(Time.utc(2021, 5, 3))

Loading…
Cancel
Save