From b2e15facce21cade3aa99a2267171338a97597a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Thu, 9 Aug 2018 11:49:53 +0200 Subject: [PATCH 1/2] Remove duplicated valuators specs Since one of them was slightly different, I've kept the most recent one. --- .../features/admin/budget_investments_spec.rb | 96 +------------------ 1 file changed, 3 insertions(+), 93 deletions(-) diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index 77c5480c4..dbb2e5a1b 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -1145,12 +1145,12 @@ feature 'Admin budget investments' do end scenario "Unmark as visible to valuator", :js do - Setting['feature.budgets.valuators_allowed'] = true + budget.update(phase: 'valuating') investment1.valuators << valuator investment2.valuators << valuator - investment1.update(administrator: admin) - investment2.update(administrator: admin) + investment1.update(administrator: admin, visible_to_valuators: true) + investment2.update(administrator: admin, visible_to_valuators: true) visit admin_budget_budget_investments_path(budget) within('#filter-subnav') { click_link 'Under valuation' } @@ -1253,94 +1253,4 @@ feature 'Admin budget investments' do end end - context "Mark as visible to valuators" do - - let(:valuator) { create(:valuator) } - let(:admin) { create(:administrator) } - - let(:group) { create(:budget_group, budget: budget) } - let(:heading) { create(:budget_heading, group: group) } - - let(:investment1) { create(:budget_investment, heading: heading) } - let(:investment2) { create(:budget_investment, heading: heading) } - - scenario "Mark as visible to valuator", :js do - investment1.valuators << valuator - investment2.valuators << valuator - investment1.update(administrator: admin) - investment2.update(administrator: admin) - - visit admin_budget_budget_investments_path(budget) - - within("#budget_investment_#{investment1.id}") do - check "budget_investment_visible_to_valuators" - end - - visit admin_budget_budget_investments_path(budget) - within('#filter-subnav') { click_link 'Under valuation' } - - within("#budget_investment_#{investment1.id}") do - expect(find("#budget_investment_visible_to_valuators")).to be_checked - end - end - - scenario "Unmark as visible to valuator", :js do - budget.update(phase: 'valuating') - - valuator = create(:valuator) - admin = create(:administrator) - - group = create(:budget_group, budget: budget) - heading = create(:budget_heading, group: group) - - investment1 = create(:budget_investment, heading: heading, visible_to_valuators: true) - investment2 = create(:budget_investment, heading: heading, visible_to_valuators: true) - - investment1.valuators << valuator - investment2.valuators << valuator - investment1.update(administrator: admin) - investment2.update(administrator: admin) - - visit admin_budget_budget_investments_path(budget) - within('#filter-subnav') { click_link 'Under valuation' } - - within("#budget_investment_#{investment1.id}") do - uncheck "budget_investment_visible_to_valuators" - end - - visit admin_budget_budget_investments_path(budget) - - within("#budget_investment_#{investment1.id}") do - expect(find("#budget_investment_visible_to_valuators")).not_to be_checked - end - end - - scenario "Showing the valuating checkbox" do - investment1 = create(:budget_investment, budget: budget, visible_to_valuators: true) - investment2 = create(:budget_investment, budget: budget, visible_to_valuators: false) - - investment1.valuators << create(:valuator) - investment2.valuators << create(:valuator) - investment2.valuators << create(:valuator) - investment1.update(administrator: create(:administrator)) - investment2.update(administrator: create(:administrator)) - - visit admin_budget_budget_investments_path(budget) - - expect(page).to have_css("#budget_investment_visible_to_valuators") - - within('#filter-subnav') { click_link 'Under valuation' } - - within("#budget_investment_#{investment1.id}") do - valuating_checkbox = find('#budget_investment_visible_to_valuators') - expect(valuating_checkbox).to be_checked - end - - within("#budget_investment_#{investment2.id}") do - valuating_checkbox = find('#budget_investment_visible_to_valuators') - expect(valuating_checkbox).not_to be_checked - end - end - end - end From 579ea8ab43cc0b9df98c28efb90a59faeabf306b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Thu, 9 Aug 2018 11:56:31 +0200 Subject: [PATCH 2/2] Make capybara wait between valuation actions As mentioned in the comments in PR #1256: "These failures take place because the checkbox is already present before clicking in 'under valuation', and so Capybara doesn't have to wait for the 'under valuation' request to finish before clicking the checkbox." So sometimes Capybara tries to check/uncheck the checkbox at the same time that checkbox is being replaced by the new content, resulting in no request being sent to the server. Making Capybara check the page to ensure the new content is already loaded before checking/unchecking the checkbox solves the problem. --- spec/features/admin/budget_investments_spec.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index dbb2e5a1b..d58263d2a 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -1109,6 +1109,7 @@ feature 'Admin budget investments' do visit admin_budget_budget_investments_path(budget) within('#filter-subnav') { click_link 'Under valuation' } + expect(page).not_to have_link("Under valuation") within("#budget_investment_#{investment1.id}") do check "budget_investment_visible_to_valuators" @@ -1154,6 +1155,7 @@ feature 'Admin budget investments' do visit admin_budget_budget_investments_path(budget) within('#filter-subnav') { click_link 'Under valuation' } + expect(page).not_to have_link("Under valuation") within("#budget_investment_#{investment1.id}") do uncheck "budget_investment_visible_to_valuators"