Files
nairobi/spec/components/valuation/budgets/row_component_spec.rb
Javi Martín ed4b03c3ed Show link to evaluate after evaluation has finished
This way it's still possible to access the "evaluation finished" filter
in the valuation investments index.
2023-02-17 15:26:49 +01:00

110 lines
4.1 KiB
Ruby

require "rails_helper"
describe Valuation::Budgets::RowComponent do
let(:valuator) { create(:valuator) }
before { sign_in(valuator.user) }
describe "investments count" do
it "counts visible and assigned investments when the budget is in the valuating phase" do
budget = create(:budget, :valuating)
create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator])
create(:budget_investment, :invisible_to_valuators, budget: budget, valuators: [valuator])
create(:budget_investment, :visible_to_valuators, budget: budget)
render_inline Valuation::Budgets::RowComponent.new(budget: budget)
expect(page).to have_selector ".investments-count", text: "1"
end
it "does not count investments with valuation finished" do
budget = create(:budget, :valuating)
create(:budget_investment, :visible_to_valuators,
budget: budget,
valuators: [valuator],
valuation_finished: true)
render_inline Valuation::Budgets::RowComponent.new(budget: budget)
expect(page).to have_selector ".investments-count", text: "0"
end
it "displays zero when the budget hasn't reached the valuating phase" do
budget = create(:budget, :accepting)
create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator])
render_inline Valuation::Budgets::RowComponent.new(budget: budget)
expect(page).to have_selector ".investments-count", text: "0"
end
it "displays zero when the valuating phase is over" do
budget = create(:budget, :finished)
create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator])
render_inline Valuation::Budgets::RowComponent.new(budget: budget)
expect(page).to have_selector ".investments-count", text: "0"
end
end
describe "link to evaluate investments" do
it "is shown when the valuator has visible investments assigned in the valuating phase" do
budget = create(:budget, :valuating)
create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator])
render_inline Valuation::Budgets::RowComponent.new(budget: budget)
expect(page).to have_link "Evaluate"
end
it "is shown when the assigned investments have finished valuation" do
budget = create(:budget, :valuating)
create(:budget_investment, :visible_to_valuators,
budget: budget,
valuators: [valuator],
valuation_finished: true)
render_inline Valuation::Budgets::RowComponent.new(budget: budget)
expect(page).to have_link "Evaluate"
end
it "is not shown when the assigned investments aren't visible to valuators" do
budget = create(:budget, :valuating)
create(:budget_investment, :invisible_to_valuators, budget: budget, valuators: [valuator])
render_inline Valuation::Budgets::RowComponent.new(budget: budget)
expect(page).not_to have_link "Evaluate"
end
it "is not shown when the valuator doesn't have assigned investments" do
budget = create(:budget, :valuating)
create(:budget_investment, :visible_to_valuators, budget: budget)
render_inline Valuation::Budgets::RowComponent.new(budget: budget)
expect(page).not_to have_link "Evaluate"
end
it "is not shown when the budget hasn't reached the valuating phase" do
budget = create(:budget, :accepting)
create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator])
render_inline Valuation::Budgets::RowComponent.new(budget: budget)
expect(page).not_to have_link "Evaluate"
end
it "is shown when the valuating phase is over" do
budget = create(:budget, :finished)
create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator])
render_inline Valuation::Budgets::RowComponent.new(budget: budget)
expect(page).to have_link "Evaluate"
end
end
end