adds by_valuator search method to SpendingProposal

This commit is contained in:
Juanjo Bazán
2016-03-04 17:37:25 +01:00
parent 8fc302cb46
commit cd58ae85f8
2 changed files with 37 additions and 0 deletions

View File

@@ -34,6 +34,7 @@ class SpendingProposal < ActiveRecord::Base
results = self
results = results.by_geozone(params[:geozone_id]) if params[:geozone_id].present?
results = results.by_administrator(params[:administrator_id]) if params[:administrator_id].present?
results = results.by_valuator(params[:valuator_id]) if params[:valuator_id].present?
results = results.send(current_filter) if current_filter.present?
results.for_render
end
@@ -50,6 +51,10 @@ class SpendingProposal < ActiveRecord::Base
where(administrator_id: administrator.presence)
end
def self.by_valuator(valuator)
joins(:valuation_assignments).includes(:valuators).where("valuation_assignments.valuator_id = ?", valuator.presence)
end
def feasibility
case feasible
when true

View File

@@ -61,6 +61,38 @@ describe SpendingProposal do
end
end
describe "by_administrator" do
it "should return spending proposals assigned to specific administrator" do
spending_proposal1 = create(:spending_proposal, administrator_id: 33)
spending_proposal2 = create(:spending_proposal)
by_administrator = SpendingProposal.by_administrator(33)
expect(by_administrator.size).to eq(1)
expect(by_administrator.first).to eq(spending_proposal1)
end
end
describe "by_valuator" do
it "should return spending proposals assigned to specific valuator" do
spending_proposal1 = create(:spending_proposal)
spending_proposal2 = create(:spending_proposal)
spending_proposal3 = create(:spending_proposal)
valuator1 = create(:valuator)
valuator2 = create(:valuator)
spending_proposal1.valuators << valuator1
spending_proposal2.valuators << valuator2
spending_proposal3.valuators << [valuator1, valuator2]
by_valuator = SpendingProposal.by_valuator(valuator1.id)
expect(by_valuator.size).to eq(2)
expect(by_valuator.sort).to eq([spending_proposal1,spending_proposal3].sort)
end
end
describe "scopes" do
describe "valuation_open" do
it "should return all spending proposals with false valuation_finished" do