From 150fb91686bc4d3a46365823dd14776d13ee8d60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Tue, 23 Feb 2021 00:20:47 +0100 Subject: [PATCH] Simplify test for budget phases table Even if the test checked all possibilities, it was hard to understand. Using `have_table with_cols:` to test the order of the rows and testing one phase is enabled and has a link to edit it es enough IMHO. --- spec/system/admin/budgets_spec.rb | 64 ++++++++++++++++--------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/spec/system/admin/budgets_spec.rb b/spec/system/admin/budgets_spec.rb index f98142389..aab4f717c 100644 --- a/spec/system/admin/budgets_spec.rb +++ b/spec/system/admin/budgets_spec.rb @@ -41,11 +41,11 @@ describe "Admin budgets", :admin do end scenario "Displaying budgets" do - budget = create(:budget) + budget = create(:budget, :accepting) visit admin_budgets_path - expect(page).to have_content(budget.name) - expect(page).to have_content(translated_phase_name(phase_kind: budget.phase)) + expect(page).to have_content budget.name + expect(page).to have_content "Accepting projects" end scenario "Filters by phase" do @@ -245,35 +245,43 @@ describe "Admin budgets", :admin do end context "Edit" do - let!(:budget) { create(:budget) } + let(:budget) { create(:budget) } scenario "Show phases table" do - budget.update!(phase: "selecting") + travel_to(Date.new(2015, 7, 15)) do + budget.update!(phase: "selecting") - visit admin_budgets_path - click_link "Edit budget" + visit edit_admin_budget_path(budget) - expect(page).to have_select("budget_phase", selected: "Selecting projects") + expect(page).to have_select "Phase", selected: "Selecting projects" - within "#budget-phases-table" do - Budget::Phase::PHASE_KINDS.each do |phase_kind| - break if phase_kind == Budget::Phase::PHASE_KINDS.last + expect(page).to have_table "budget-phases-table", with_cols: [ + [ + "Information", + "Accepting projects", + "Reviewing projects", + "Selecting projects Active", + "Valuating projects", + "Publishing projects prices", + "Voting projects", + "Reviewing voting" + ], + [ + "2015-07-15 - 2015-08-15", + "2015-08-15 - 2015-09-15", + "2015-09-15 - 2015-10-15", + "2015-10-15 - 2015-11-15", + "2015-11-15 - 2015-12-15", + "2015-12-15 - 2016-01-15", + "2016-01-15 - 2016-02-15", + "2016-02-15 - 2016-03-15" + ] + ] - phase_index = Budget::Phase::PHASE_KINDS.index(phase_kind) - next_phase_kind = Budget::Phase::PHASE_KINDS[phase_index + 1] - next_phase_name = translated_phase_name(phase_kind: next_phase_kind) - expect(translated_phase_name(phase_kind: phase_kind)).to appear_before(next_phase_name) - end - - budget.phases.each do |phase| - edit_phase_link = edit_admin_budget_budget_phase_path(budget, phase) - - within "#budget_phase_#{phase.id}" do - expect(page).to have_content(translated_phase_name(phase_kind: phase.kind)) - expect(page).to have_content("#{phase.starts_at.to_date} - #{phase.ends_at.to_date}") - expect(page).to have_css(".budget-phase-enabled.enabled") - expect(page).to have_link("Edit phase", href: edit_phase_link) - expect(page).to have_content("Active") if phase.current? + within_table "budget-phases-table" do + within "tr", text: "Information" do + expect(page).to have_css ".budget-phase-enabled.enabled" + expect(page).to have_link "Edit phase" end end end @@ -402,7 +410,3 @@ describe "Admin budgets", :admin do end end end - -def translated_phase_name(phase_kind: kind) - I18n.t("budgets.phase.#{phase_kind}") -end