138 lines
4.5 KiB
Ruby
138 lines
4.5 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe SpendingProposal do
|
|
let(:spending_proposal) { build(:spending_proposal) }
|
|
|
|
it "should be valid" do
|
|
expect(spending_proposal).to be_valid
|
|
end
|
|
|
|
it "should not be valid without an author" do
|
|
spending_proposal.author = nil
|
|
expect(spending_proposal).to_not be_valid
|
|
end
|
|
|
|
describe "#title" do
|
|
it "should not be valid without a title" do
|
|
spending_proposal.title = nil
|
|
expect(spending_proposal).to_not be_valid
|
|
end
|
|
|
|
it "should not be valid when very short" do
|
|
spending_proposal.title = "abc"
|
|
expect(spending_proposal).to_not be_valid
|
|
end
|
|
|
|
it "should not be valid when very long" do
|
|
spending_proposal.title = "a" * 81
|
|
expect(spending_proposal).to_not be_valid
|
|
end
|
|
end
|
|
|
|
describe "#description" do
|
|
it "should be sanitized" do
|
|
spending_proposal.description = "<script>alert('danger');</script>"
|
|
spending_proposal.valid?
|
|
expect(spending_proposal.description).to eq("alert('danger');")
|
|
end
|
|
|
|
it "should not be valid when very long" do
|
|
spending_proposal.description = "a" * 6001
|
|
expect(spending_proposal).to_not be_valid
|
|
end
|
|
end
|
|
|
|
describe "dossier info" do
|
|
describe "#feasibility" do
|
|
it "can be feasible" do
|
|
spending_proposal.feasible = true
|
|
expect(spending_proposal.feasibility).to eq "feasible"
|
|
end
|
|
|
|
it "can be not-feasible" do
|
|
spending_proposal.feasible = false
|
|
expect(spending_proposal.feasibility).to eq "not_feasible"
|
|
end
|
|
|
|
it "can be undefined" do
|
|
spending_proposal.feasible = nil
|
|
expect(spending_proposal.feasibility).to eq "undefined"
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "scopes" do
|
|
describe "valuation_open" do
|
|
it "should return all spending proposals with false valuation_finished" do
|
|
spending_proposal1 = create(:spending_proposal, valuation_finished: true)
|
|
spending_proposal2 = create(:spending_proposal)
|
|
|
|
valuation_open = SpendingProposal.valuation_open
|
|
|
|
expect(valuation_open.size).to eq(1)
|
|
expect(valuation_open.first).to eq(spending_proposal2)
|
|
end
|
|
end
|
|
|
|
describe "without_admin" do
|
|
it "should return all open spending proposals without assigned admin" do
|
|
spending_proposal1 = create(:spending_proposal, valuation_finished: true)
|
|
spending_proposal2 = create(:spending_proposal, administrator: create(:administrator))
|
|
spending_proposal3 = create(:spending_proposal)
|
|
|
|
without_admin = SpendingProposal.without_admin
|
|
|
|
expect(without_admin.size).to eq(1)
|
|
expect(without_admin.first).to eq(spending_proposal3)
|
|
end
|
|
end
|
|
|
|
describe "managed" do
|
|
it "should return all open spending proposals with assigned admin but without assigned valuators" do
|
|
spending_proposal1 = create(:spending_proposal, administrator: create(:administrator))
|
|
spending_proposal2 = create(:spending_proposal, administrator: create(:administrator), valuation_finished: true)
|
|
spending_proposal3 = create(:spending_proposal, administrator: create(:administrator))
|
|
spending_proposal1.valuators << create(:valuator)
|
|
|
|
managed = SpendingProposal.managed
|
|
|
|
expect(managed.size).to eq(1)
|
|
expect(managed.first).to eq(spending_proposal3)
|
|
end
|
|
end
|
|
|
|
describe "valuating" do
|
|
it "should return all spending proposals with assigned valuator but valuation not finished" do
|
|
spending_proposal1 = create(:spending_proposal)
|
|
spending_proposal2 = create(:spending_proposal)
|
|
spending_proposal3 = create(:spending_proposal, valuation_finished: true)
|
|
|
|
spending_proposal2.valuators << create(:valuator)
|
|
spending_proposal3.valuators << create(:valuator)
|
|
|
|
valuating = SpendingProposal.valuating
|
|
|
|
expect(valuating.size).to eq(1)
|
|
expect(valuating.first).to eq(spending_proposal2)
|
|
end
|
|
end
|
|
|
|
describe "valuation_finished" do
|
|
it "should return all spending proposals with valuation finished" do
|
|
spending_proposal1 = create(:spending_proposal)
|
|
spending_proposal2 = create(:spending_proposal)
|
|
spending_proposal3 = create(:spending_proposal, valuation_finished: true)
|
|
|
|
spending_proposal2.valuators << create(:valuator)
|
|
spending_proposal3.valuators << create(:valuator)
|
|
|
|
valuation_finished = SpendingProposal.valuation_finished
|
|
|
|
expect(valuation_finished.size).to eq(1)
|
|
expect(valuation_finished.first).to eq(spending_proposal3)
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|