Add search method to legislation processes
This way we'll be able to search processes in the SDG Management section.
This commit is contained in:
@@ -5,6 +5,7 @@ class Legislation::Process < ApplicationRecord
|
|||||||
include Imageable
|
include Imageable
|
||||||
include Documentable
|
include Documentable
|
||||||
include SDG::Relatable
|
include SDG::Relatable
|
||||||
|
include Searchable
|
||||||
|
|
||||||
acts_as_paranoid column: :hidden_at
|
acts_as_paranoid column: :hidden_at
|
||||||
acts_as_taggable_on :customs
|
acts_as_taggable_on :customs
|
||||||
@@ -123,6 +124,22 @@ class Legislation::Process < ApplicationRecord
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def searchable_translations_definitions
|
||||||
|
{
|
||||||
|
title => "A",
|
||||||
|
summary => "C",
|
||||||
|
description => "D"
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def searchable_values
|
||||||
|
searchable_globalized_values
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.search(terms)
|
||||||
|
pg_search(terms)
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def valid_date_ranges
|
def valid_date_ranges
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class AddTsvToLegislationProcesses < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :legislation_processes, :tsv, :tsvector
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2020_12_16_132234) do
|
ActiveRecord::Schema.define(version: 2020_12_16_132642) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "pg_trgm"
|
enable_extension "pg_trgm"
|
||||||
@@ -747,6 +747,7 @@ ActiveRecord::Schema.define(version: 2020_12_16_132234) do
|
|||||||
t.boolean "homepage_enabled", default: false
|
t.boolean "homepage_enabled", default: false
|
||||||
t.text "background_color"
|
t.text "background_color"
|
||||||
t.text "font_color"
|
t.text "font_color"
|
||||||
|
t.tsvector "tsv"
|
||||||
t.index ["allegations_end_date"], name: "index_legislation_processes_on_allegations_end_date"
|
t.index ["allegations_end_date"], name: "index_legislation_processes_on_allegations_end_date"
|
||||||
t.index ["allegations_start_date"], name: "index_legislation_processes_on_allegations_start_date"
|
t.index ["allegations_start_date"], name: "index_legislation_processes_on_allegations_start_date"
|
||||||
t.index ["debate_end_date"], name: "index_legislation_processes_on_debate_end_date"
|
t.index ["debate_end_date"], name: "index_legislation_processes_on_debate_end_date"
|
||||||
|
|||||||
@@ -11,8 +11,9 @@ namespace :db do
|
|||||||
load(Rails.root.join("db", "sdg.rb"))
|
load(Rails.root.join("db", "sdg.rb"))
|
||||||
end
|
end
|
||||||
|
|
||||||
desc "Calculates the TSV column for all polls"
|
desc "Calculates the TSV column for all polls and legislation processes"
|
||||||
task calculate_tsv: :environment do
|
task calculate_tsv: :environment do
|
||||||
Poll.find_each(&:calculate_tsvector)
|
Poll.find_each(&:calculate_tsvector)
|
||||||
|
Legislation::Process.find_each(&:calculate_tsvector)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -50,4 +50,15 @@ describe "rake db:calculate_tsv" do
|
|||||||
|
|
||||||
expect(poll.reload.tsv).not_to be nil
|
expect(poll.reload.tsv).not_to be nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "calculates the tsvector for legislation processes" do
|
||||||
|
process = create(:legislation_process)
|
||||||
|
process.update_column(:tsv, nil)
|
||||||
|
|
||||||
|
expect(process.reload.tsv).to be nil
|
||||||
|
|
||||||
|
run_rake_task
|
||||||
|
|
||||||
|
expect(process.reload.tsv).not_to be nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -229,4 +229,35 @@ describe Legislation::Process do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe ".search" do
|
||||||
|
let!(:traffic) do
|
||||||
|
create(:legislation_process,
|
||||||
|
title: "Traffic regulation",
|
||||||
|
summary: "Lane structure",
|
||||||
|
description: "From top to bottom")
|
||||||
|
end
|
||||||
|
|
||||||
|
let!(:animal_farm) do
|
||||||
|
create(:legislation_process,
|
||||||
|
title: "Hierarchy structure",
|
||||||
|
summary: "Pigs at the top",
|
||||||
|
description: "Napoleon in charge of the traffic")
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns only matching polls" do
|
||||||
|
expect(Legislation::Process.search("lane")).to eq [traffic]
|
||||||
|
expect(Legislation::Process.search("pigs")).to eq [animal_farm]
|
||||||
|
expect(Legislation::Process.search("nothing here")).to be_empty
|
||||||
|
end
|
||||||
|
|
||||||
|
it "gives more weight to name" do
|
||||||
|
expect(Legislation::Process.search("traffic")).to eq [traffic, animal_farm]
|
||||||
|
expect(Legislation::Process.search("structure")).to eq [animal_farm, traffic]
|
||||||
|
end
|
||||||
|
|
||||||
|
it "gives more weight to summary than description" do
|
||||||
|
expect(Legislation::Process.search("top")).to eq [animal_farm, traffic]
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user