Extract component for investment toggle selection

This way it'll be easier to refactor it.
This commit is contained in:
Javi Martín
2021-08-21 00:25:36 +02:00
parent b9c3e75930
commit fde24870bc
5 changed files with 113 additions and 99 deletions

View File

@@ -0,0 +1,64 @@
require "rails_helper"
describe Admin::BudgetInvestments::ToggleSelectionComponent, :admin do
context "open budget" do
let(:budget) { create(:budget) }
it "is not rendered for not-yet-evaluated investments" do
unfeasible_investment = create(:budget_investment, :unfeasible, budget: budget)
feasible_investment = create(:budget_investment, :feasible, budget: budget)
render_inline Admin::BudgetInvestments::ToggleSelectionComponent.new(unfeasible_investment)
expect(page).not_to be_rendered
render_inline Admin::BudgetInvestments::ToggleSelectionComponent.new(feasible_investment)
expect(page).not_to be_rendered
end
it "renders a link to select unselected evaluated investments" do
valuation_finished_investment = create(:budget_investment, :feasible, :finished, budget: budget)
render_inline Admin::BudgetInvestments::ToggleSelectionComponent.new(valuation_finished_investment)
expect(page).to have_link "Select"
expect(page).not_to have_link "Selected"
end
it "renders a link to deselect selected investments" do
selected_investment = create(:budget_investment, :selected, budget: budget)
render_inline Admin::BudgetInvestments::ToggleSelectionComponent.new(selected_investment)
expect(page).to have_link "Selected"
expect(page).not_to have_link "Select"
end
end
context "finished budget" do
let(:budget) { create(:budget, :finished) }
it "is not rendered for unselected investments" do
unfeasible_investment = create(:budget_investment, :unfeasible, budget: budget)
feasible_investment = create(:budget_investment, :feasible, budget: budget)
valuation_finished_investment = create(:budget_investment, :feasible, :finished, budget: budget)
render_inline Admin::BudgetInvestments::ToggleSelectionComponent.new(unfeasible_investment)
expect(page).not_to be_rendered
render_inline Admin::BudgetInvestments::ToggleSelectionComponent.new(feasible_investment)
expect(page).not_to be_rendered
render_inline Admin::BudgetInvestments::ToggleSelectionComponent.new(valuation_finished_investment)
expect(page).not_to be_rendered
end
it "renders plain text for selected investments" do
selected_investment = create(:budget_investment, :selected, budget: budget)
render_inline Admin::BudgetInvestments::ToggleSelectionComponent.new(selected_investment)
expect(page).to have_content "Selected"
expect(page).not_to have_link "Selected"
end
end
end