Merge pull request #627 from AyuntamientoMadrid/refactor-votes-spec
refactors votes_spec
This commit is contained in:
@@ -72,6 +72,7 @@ class Debate < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def votable_by?(user)
|
def votable_by?(user)
|
||||||
|
return false unless user
|
||||||
total_votes <= 100 ||
|
total_votes <= 100 ||
|
||||||
!user.unverified? ||
|
!user.unverified? ||
|
||||||
Setting.value_for('max_ratio_anon_votes_on_debates').to_i == 100 ||
|
Setting.value_for('max_ratio_anon_votes_on_debates').to_i == 100 ||
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class Proposal < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def votable_by?(user)
|
def votable_by?(user)
|
||||||
user.level_two_or_three_verified?
|
user && user.level_two_or_three_verified?
|
||||||
end
|
end
|
||||||
|
|
||||||
def register_vote(user, vote_value)
|
def register_vote(user, vote_value)
|
||||||
|
|||||||
@@ -34,13 +34,10 @@ feature 'Localization' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
scenario 'Locale switcher not present if only one locale' do
|
scenario 'Locale switcher not present if only one locale' do
|
||||||
initial_locales = I18n.available_locales
|
expect(I18n).to receive(:available_locales).and_return([:en])
|
||||||
I18n.available_locales = [:en]
|
|
||||||
|
|
||||||
visit '/'
|
visit '/'
|
||||||
expect(page).to_not have_content('Language')
|
expect(page).to_not have_content('Language')
|
||||||
expect(page).to_not have_css('div.locale')
|
expect(page).to_not have_css('div.locale')
|
||||||
|
|
||||||
I18n.available_locales = initial_locales
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ feature 'Votes' do
|
|||||||
background do
|
background do
|
||||||
@manuela = create(:user, verified_at: Time.now)
|
@manuela = create(:user, verified_at: Time.now)
|
||||||
@pablo = create(:user)
|
@pablo = create(:user)
|
||||||
|
|
||||||
login_as(@manuela)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
feature 'Debates' do
|
feature 'Debates' do
|
||||||
|
background { login_as(@manuela) }
|
||||||
|
|
||||||
scenario "Index shows user votes on debates" do
|
scenario "Index shows user votes on debates" do
|
||||||
|
|
||||||
debate1 = create(:debate)
|
debate1 = create(:debate)
|
||||||
debate2 = create(:debate)
|
debate2 = create(:debate)
|
||||||
debate3 = create(:debate)
|
debate3 = create(:debate)
|
||||||
@@ -105,7 +105,9 @@ feature 'Votes' do
|
|||||||
visit debate_path(@debate)
|
visit debate_path(@debate)
|
||||||
|
|
||||||
find('.in-favor a').click
|
find('.in-favor a').click
|
||||||
|
expect(page).to have_content "1 vote"
|
||||||
find('.in-favor a').click
|
find('.in-favor a').click
|
||||||
|
expect(page).to_not have_content "2 votes"
|
||||||
|
|
||||||
within('.in-favor') do
|
within('.in-favor') do
|
||||||
expect(page).to have_content "100%"
|
expect(page).to have_content "100%"
|
||||||
@@ -114,8 +116,6 @@ feature 'Votes' do
|
|||||||
within('.against') do
|
within('.against') do
|
||||||
expect(page).to have_content "0%"
|
expect(page).to have_content "0%"
|
||||||
end
|
end
|
||||||
|
|
||||||
expect(page).to have_content "1 vote"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'Show' do
|
scenario 'Show' do
|
||||||
@@ -178,49 +178,11 @@ feature 'Votes' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'Not logged user trying to vote', :js do
|
|
||||||
debate = create(:debate)
|
|
||||||
|
|
||||||
visit "/"
|
|
||||||
click_link "Logout"
|
|
||||||
|
|
||||||
visit debates_path
|
|
||||||
within("#debate_#{debate.id}") do
|
|
||||||
find("div.votes").hover
|
|
||||||
expect_message_you_need_to_sign_in
|
|
||||||
end
|
|
||||||
|
|
||||||
visit debate_path(debate)
|
|
||||||
within("#debate_#{debate.id}") do
|
|
||||||
find("div.votes").hover
|
|
||||||
expect_message_you_need_to_sign_in
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
scenario 'Anonymous user trying to vote', :js do
|
|
||||||
user = create(:user)
|
|
||||||
debate = create(:debate)
|
|
||||||
|
|
||||||
Setting.find_by(key: "max_ratio_anon_votes_on_debates").update(value: 50)
|
|
||||||
debate.update(cached_anonymous_votes_total: 520, cached_votes_total: 1000)
|
|
||||||
|
|
||||||
login_as(user)
|
|
||||||
|
|
||||||
visit debates_path
|
|
||||||
within("#debate_#{debate.id}") do
|
|
||||||
find("div.votes").hover
|
|
||||||
expect_message_to_many_anonymous_votes
|
|
||||||
end
|
|
||||||
|
|
||||||
visit debate_path(debate)
|
|
||||||
within("#debate_#{debate.id}") do
|
|
||||||
find("div.votes").hover
|
|
||||||
expect_message_to_many_anonymous_votes
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
feature 'Proposals' do
|
feature 'Proposals' do
|
||||||
|
background { login_as(@manuela) }
|
||||||
|
|
||||||
scenario "Index shows user votes on proposals" do
|
scenario "Index shows user votes on proposals" do
|
||||||
proposal1 = create(:proposal)
|
proposal1 = create(:proposal)
|
||||||
@@ -260,9 +222,9 @@ feature 'Votes' do
|
|||||||
|
|
||||||
within('.supports') do
|
within('.supports') do
|
||||||
find('.in-favor a').click
|
find('.in-favor a').click
|
||||||
find('.in-favor a').click
|
|
||||||
|
|
||||||
expect(page).to have_content "1 support"
|
expect(page).to have_content "1 support"
|
||||||
|
|
||||||
|
expect(page).to_not have_selector ".in-favor a"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -302,12 +264,24 @@ feature 'Votes' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'Not logged user trying to vote', :js do
|
scenario 'Not logged user trying to vote debates', :js do
|
||||||
proposal = create(:proposal)
|
debate = create(:debate)
|
||||||
|
|
||||||
visit "/"
|
visit debates_path
|
||||||
click_link "Logout"
|
within("#debate_#{debate.id}") do
|
||||||
expect(page).to have_content "Signed out successfully."
|
find("div.votes").hover
|
||||||
|
expect_message_you_need_to_sign_in
|
||||||
|
end
|
||||||
|
|
||||||
|
visit debate_path(debate)
|
||||||
|
within("#debate_#{debate.id}") do
|
||||||
|
find("div.votes").hover
|
||||||
|
expect_message_you_need_to_sign_in
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'Not logged user trying to vote proposals', :js do
|
||||||
|
proposal = create(:proposal)
|
||||||
|
|
||||||
visit proposals_path
|
visit proposals_path
|
||||||
within("#proposal_#{proposal.id}") do
|
within("#proposal_#{proposal.id}") do
|
||||||
@@ -322,7 +296,29 @@ feature 'Votes' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario "Anonymous user trying to vote", :js do
|
scenario 'Anonymous user trying to vote debates', :js do
|
||||||
|
user = create(:user)
|
||||||
|
debate = create(:debate)
|
||||||
|
|
||||||
|
Setting.find_by(key: "max_ratio_anon_votes_on_debates").update(value: 50)
|
||||||
|
debate.update(cached_anonymous_votes_total: 520, cached_votes_total: 1000)
|
||||||
|
|
||||||
|
login_as(user)
|
||||||
|
|
||||||
|
visit debates_path
|
||||||
|
within("#debate_#{debate.id}") do
|
||||||
|
find("div.votes").hover
|
||||||
|
expect_message_to_many_anonymous_votes
|
||||||
|
end
|
||||||
|
|
||||||
|
visit debate_path(debate)
|
||||||
|
within("#debate_#{debate.id}") do
|
||||||
|
find("div.votes").hover
|
||||||
|
expect_message_to_many_anonymous_votes
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Anonymous user trying to vote proposals", :js do
|
||||||
user = create(:user)
|
user = create(:user)
|
||||||
proposal = create(:proposal)
|
proposal = create(:proposal)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user