Files
nairobi/spec/components/budgets/investments/votes_component_spec.rb
Javi Martín abec716308 Show "not allowed" message on click
Defining a behavior on hover means making it different for people using
a keyboard or a touchscreen (most of the population, nowadays).

In this case, we had an accessibility issue where the message wouldn't
disappear once it appeared. That meant that, after tabbing through all
the links and buttons in, for instance, the debates index, the page
would be filled with "participation not allowed" messages, and in order
to see the information about how many people have voted, reloading the
page was required.

For touchscreen users the behavior was similar to what we get on hover,
although we've found some inconsistencies when trying to support several
elements on the same page.

We think in proposals it makes sense to hide the "support" button when
users click on it, and the same applies to the buttonsto support and
vote investment projects. However, we aren't hiding the buttons to
agree/disagree with a debate in order to keep the information about the
current number of people agreeing and disagreeing visible.

Note we're removing some support spec methods because after these
changes the duplication isn't as obvious as it was in the past.
2022-02-23 16:43:37 +01:00

58 lines
1.9 KiB
Ruby

require "rails_helper"
describe Budgets::Investments::VotesComponent do
describe "vote link" do
context "when investment shows votes" do
let(:investment) { create(:budget_investment, title: "Renovate sidewalks in Main Street") }
let(:component) { Budgets::Investments::VotesComponent.new(investment) }
before { allow(investment).to receive(:should_show_votes?).and_return(true) }
it "displays a button to support the investment to identified users" do
sign_in(create(:user))
render_inline component
expect(page).to have_button count: 1
expect(page).to have_button "Support", title: "Support this project", disabled: false
expect(page).to have_button "Support Renovate sidewalks in Main Street"
end
it "renders the support button and a reminder to sign in to unidentified users" do
render_inline component
expect(page).to have_button count: 1, disabled: :all
expect(page).to have_button "Support"
expect(page).to have_content "You must sign in or sign up to continue."
end
describe "button to remove support" do
let(:user) { create(:user) }
before do
user.up_votes(investment)
sign_in(user)
end
it "is shown when the setting is enabled" do
Setting["feature.remove_investments_supports"] = true
render_inline component
expect(page).to have_button count: 1, disabled: :all
expect(page).to have_button "Remove your support"
expect(page).to have_button "Remove your support to Renovate sidewalks in Main Street"
end
it "is not shown when the setting is disabled" do
Setting["feature.remove_investments_supports"] = false
render_inline component
expect(page).not_to have_button disabled: :all
end
end
end
end
end