adds by_valuator search method to SpendingProposal
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user