Merge pull request #895 from consul/find-by-proposal-code

Find by proposal code
This commit is contained in:
Enrique García
2016-02-15 14:27:25 +01:00
4 changed files with 37 additions and 9 deletions

View File

@@ -55,7 +55,16 @@ class Proposal < ActiveRecord::Base
end
def self.search(terms)
self.pg_search(terms)
by_code = self.search_by_code(terms.strip)
by_code.present? ? by_code : self.pg_search(terms)
end
def self.search_by_code(terms)
if code_match = /\A#{Setting["proposal_code_prefix"]}-\d\d\d\d-\d\d-(\d*)\z/.match(terms)
results = where(id: code_match[1])
end
return results if (results.present? && results.first.code == terms)
end
def description

View File

@@ -132,7 +132,7 @@ en:
shared:
proposal_search:
button: Search
placeholder: Search proposals by title, description or question
placeholder: Search proposals by title, code, description or question
user_search:
button: Search
placeholder: Search user by name or email'

View File

@@ -132,7 +132,7 @@ es:
shared:
proposal_search:
button: Buscar
placeholder: Buscar propuestas por título, descripción o pregunta
placeholder: Buscar propuestas por título, código, descripción o pregunta
user_search:
button: Buscar
placeholder: Buscar usuario por nombre o email

View File

@@ -575,6 +575,25 @@ feature 'Proposals' do
end
end
scenario 'Search by proposal code' do
proposal1 = create(:proposal, title: "Get Schwifty")
proposal2 = create(:proposal, title: "Schwifty Hello")
visit proposals_path
within "#search_form" do
fill_in "search", with: proposal1.code
click_button "Search"
end
within("#proposals") do
expect(page).to have_css('.proposal', count: 1)
expect(page).to have_content(proposal1.title)
expect(page).to_not have_content(proposal2.title)
end
end
scenario "Maintain search criteria" do
visit proposals_path
@@ -1119,10 +1138,10 @@ feature 'Proposals' do
create(:proposal, title: 'Seventh proposal, has search term')
visit new_proposal_path
fill_in 'proposal_title', with: 'search'
fill_in 'proposal_title', with: 'search'
check "proposal_terms_of_service"
within('div#js-suggest') do
within('div#js-suggest') do
expect(page).to have_content ("You are seeing 5 of 6 proposals containing the term 'search'")
end
end
@@ -1133,14 +1152,14 @@ feature 'Proposals' do
create(:proposal, title: 'First proposal').update_column(:confidence_score, 10)
create(:proposal, title: 'Second proposal').update_column(:confidence_score, 8)
visit new_proposal_path
fill_in 'proposal_title', with: 'debate'
check "proposal_terms_of_service"
within('div#js-suggest') do
within('div#js-suggest') do
expect(page).to_not have_content ('You are seeing')
end
end
end
end
end