From e727e0b2199d07b8e29c3de3571f04fda4bb681b Mon Sep 17 00:00:00 2001 From: JG Date: Wed, 29 Jun 2022 10:16:18 +0100 Subject: [PATCH] started id to code refactoring --- app/models/scheme.rb | 4 ++-- spec/models/scheme_spec.rb | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/models/scheme.rb b/app/models/scheme.rb index e2036c7ed..63b5adffb 100644 --- a/app/models/scheme.rb +++ b/app/models/scheme.rb @@ -5,10 +5,10 @@ class Scheme < ApplicationRecord has_many :locations has_many :case_logs - scope :search_by_code, ->(code) { where("code ILIKE ?", "%#{code}%") } + scope :filter_by_id, ->(id) { where(id: (id.start_with?("S") ? id[1..-1] : id))} scope :search_by_service_name, ->(name) { where("service_name ILIKE ?", "%#{name}%") } scope :search_by_postcode, ->(postcode) { joins(:locations).where("locations.postcode ILIKE ?", "%#{postcode.delete(' ')}%") } - scope :search_by, ->(param) { search_by_postcode(param).or(search_by_service_name(param)).or(search_by_code(param)).distinct } + scope :search_by, ->(param) { search_by_postcode(param).or(search_by_service_name(param)).or(filter_by_id(param)).distinct } SENSITIVE = { No: 0, diff --git a/spec/models/scheme_spec.rb b/spec/models/scheme_spec.rb index d6e39ae2e..eaa11883e 100644 --- a/spec/models/scheme_spec.rb +++ b/spec/models/scheme_spec.rb @@ -16,12 +16,10 @@ RSpec.describe Scheme, type: :model do context "when searching by code" do it "returns case insensitive matching records" do - expect(described_class.search_by_code(scheme_1.code.upcase).count).to eq(1) - expect(described_class.search_by_code(scheme_1.code.downcase).count).to eq(1) - expect(described_class.search_by_code(scheme_1.code.downcase).first.code).to eq(scheme_1.code) - expect(described_class.search_by_code(scheme_2.code.upcase).count).to eq(1) - expect(described_class.search_by_code(scheme_2.code.downcase).count).to eq(1) - expect(described_class.search_by_code(scheme_2.code.downcase).first.code).to eq(scheme_2.code) + expect(described_class.filter_by_id(scheme_1.id.to_s).count).to eq(1) + expect(described_class.filter_by_id(scheme_1.id.to_s).first.id).to eq(scheme_1.id) + expect(described_class.filter_by_id(scheme_2.id.to_s).count).to eq(1) + expect(described_class.filter_by_id(scheme_2.id.to_s).first.id).to eq(scheme_2.id) end end