104 lines
4.5 KiB
Ruby
104 lines
4.5 KiB
Ruby
require 'rails_helper'
|
|
|
|
xdescribe "Budget::Ballot::Line" do
|
|
|
|
let(:ballot_line) { build(:budget_ballot_line) }
|
|
|
|
describe 'Validations' do
|
|
|
|
it "should be valid" do
|
|
expect(ballot_line).to be_valid
|
|
end
|
|
|
|
it "should be invalid if missing id from ballot|budget|group|heading|investment" do
|
|
budget = create(:budget)
|
|
group = create(:budget_group, budget: budget)
|
|
heading = create(:budget_heading, group: group, price: 10000000)
|
|
investment = create(:budget_investment, :feasible, price: 5000000, heading: heading)
|
|
ballot = create(:budget_ballot, budget: budget)
|
|
|
|
ballot_line = build(:budget_ballot_line, ballot: ballot, budget: budget, group: group, heading: heading, investment: investment)
|
|
expect(ballot_line).to be_valid
|
|
|
|
ballot_line = build(:budget_ballot_line, ballot: nil, budget: budget, group: group, heading: heading, investment: investment)
|
|
expect(ballot_line).to_not be_valid
|
|
|
|
ballot_line = build(:budget_ballot_line, ballot: ballot, budget: nil, group: group, heading: heading, investment: investment)
|
|
expect(ballot_line).to_not be_valid
|
|
|
|
ballot_line = build(:budget_ballot_line, ballot: ballot, budget: budget, group: nil, heading: heading, investment: investment)
|
|
expect(ballot_line).to_not be_valid
|
|
|
|
ballot_line = build(:budget_ballot_line, ballot: ballot, budget: budget, group: group, heading: nil, investment: investment)
|
|
expect(ballot_line).to_not be_valid
|
|
|
|
ballot_line = build(:budget_ballot_line, ballot: ballot, budget: budget, group: group, heading: heading, investment: nil)
|
|
expect(ballot_line).to_not be_valid
|
|
end
|
|
|
|
describe 'Money' do
|
|
it "should not be valid if insufficient funds" do
|
|
budget = create(:budget)
|
|
group = create(:budget_group, budget: budget)
|
|
heading = create(:budget_heading, group: group, price: 10000000)
|
|
investment = create(:budget_investment, :feasible, price: heading.price + 1, heading: heading)
|
|
ballot = create(:budget_ballot, budget: budget)
|
|
|
|
ballot_line = build(:budget_ballot_line, ballot: ballot, budget: budget, group: group, heading: heading, investment: investment)
|
|
|
|
expect(ballot_line).to_not be_valid
|
|
end
|
|
|
|
it "should be valid if sufficient funds" do
|
|
budget = create(:budget)
|
|
group = create(:budget_group, budget: budget)
|
|
heading = create(:budget_heading, group: group, price: 10000000)
|
|
investment = create(:budget_investment, :feasible, price: heading.price - 1, heading: heading, )
|
|
ballot = create(:budget_ballot, budget: budget)
|
|
|
|
ballot_line = build(:budget_ballot_line, ballot: ballot, budget: budget, group: group, heading: heading, investment: investment)
|
|
|
|
expect(ballot_line).to be_valid
|
|
end
|
|
end
|
|
|
|
describe 'Feasibility' do
|
|
it "should not be valid if investment is unfeasible" do
|
|
budget = create(:budget)
|
|
group = create(:budget_group, budget: budget)
|
|
heading = create(:budget_heading, group: group, price: 10000000)
|
|
investment = create(:budget_investment, :feasible, price: 20000, feasibility: "unfeasible")
|
|
ballot = create(:budget_ballot, budget: budget)
|
|
|
|
ballot_line = build(:budget_ballot_line, ballot: ballot, budget: budget, group: group, heading: heading, investment: investment)
|
|
|
|
expect(ballot_line).to_not be_valid
|
|
end
|
|
|
|
it "should not be valid if investment feasibility is undecided" do
|
|
budget = create(:budget)
|
|
group = create(:budget_group, budget: budget)
|
|
heading = create(:budget_heading, group: group, price: 10000000)
|
|
investment = create(:budget_investment, price: 20000, feasibility: "undecided")
|
|
ballot = create(:budget_ballot, budget: budget)
|
|
|
|
ballot_line = build(:budget_ballot_line, ballot: ballot, budget: budget, group: group, heading: heading, investment: investment)
|
|
|
|
expect(ballot_line).to_not be_valid
|
|
end
|
|
|
|
xit "should be valid if investment is feasible" do
|
|
budget = create(:budget)
|
|
group = create(:budget_group, budget: budget)
|
|
heading = create(:budget_heading, group: group, price: 10000000)
|
|
investment = create(:budget_investment, price: 20000, feasibility: "feasible")
|
|
ballot = create(:budget_ballot, budget: budget)
|
|
|
|
ballot_line = build(:budget_ballot_line, ballot: ballot, budget: budget, group: group, heading: heading, investment: investment)
|
|
|
|
expect(ballot_line).to be_valid
|
|
end
|
|
end
|
|
|
|
end
|
|
end |