diff --git a/.rubocop.yml b/.rubocop.yml index dd7793ad7..98c7b6f7d 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -74,4 +74,7 @@ RSpec/ExampleLength: Enabled: false RSpec/ExampleWording: + Enabled: true + +RSpec/ExpectActual: Enabled: true \ No newline at end of file diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb index 94aaf2563..8f80e66bd 100644 --- a/spec/features/budgets/investments_spec.rb +++ b/spec/features/budgets/investments_spec.rb @@ -203,17 +203,20 @@ feature 'Budget Investments' do end scenario 'Proposals are ordered by confidence_score', :js do - create(:budget_investment, heading: heading, title: 'Best proposal').update_column(:confidence_score, 10) - create(:budget_investment, heading: heading, title: 'Worst proposal').update_column(:confidence_score, 2) - create(:budget_investment, heading: heading, title: 'Medium proposal').update_column(:confidence_score, 5) + best_proposal = create(:budget_investment, heading: heading, title: 'Best proposal') + best_proposal.update_column(:confidence_score, 10) + worst_proposal = create(:budget_investment, heading: heading, title: 'Worst proposal') + worst_proposal.update_column(:confidence_score, 2) + medium_proposal = create(:budget_investment, heading: heading, title: 'Medium proposal') + medium_proposal.update_column(:confidence_score, 5) visit budget_investments_path(budget, heading_id: heading.id) click_link 'highest rated' expect(page).to have_selector('a.active', text: 'highest rated') within '#budget-investments' do - expect('Best proposal').to appear_before('Medium proposal') - expect('Medium proposal').to appear_before('Worst proposal') + expect(best_proposal.title).to appear_before(medium_proposal.title) + expect(medium_proposal.title).to appear_before(worst_proposal.title) end expect(current_url).to include('order=confidence_score') @@ -739,9 +742,11 @@ feature 'Budget Investments' do end scenario 'Order by cost (only when balloting)' do - create(:budget_investment, :selected, heading: heading, title: 'Build a nice house', price: 1000).update_column(:confidence_score, 10) - create(:budget_investment, :selected, heading: heading, title: 'Build an ugly house', price: 1000).update_column(:confidence_score, 5) - create(:budget_investment, :selected, heading: heading, title: 'Build a skyscraper', price: 20000) + mid_investment = create(:budget_investment, :selected, heading: heading, title: 'Build a nice house', price: 1000) + mid_investment.update_column(:confidence_score, 10) + low_investment = create(:budget_investment, :selected, heading: heading, title: 'Build an ugly house', price: 1000) + low_investment.update_column(:confidence_score, 5) + high_investment = create(:budget_investment, :selected, heading: heading, title: 'Build a skyscraper', price: 20000) visit budget_investments_path(budget, heading_id: heading.id) @@ -749,8 +754,8 @@ feature 'Budget Investments' do expect(page).to have_selector('a.active', text: 'by price') within '#budget-investments' do - expect('Build a skyscraper').to appear_before('Build a nice house') - expect('Build a nice house').to appear_before('Build an ugly house') + expect(high_investment.title).to appear_before(mid_investment.title) + expect(mid_investment.title).to appear_before(low_investment.title) end expect(current_url).to include('order=price') diff --git a/spec/features/debates_spec.rb b/spec/features/debates_spec.rb index 47d9ff71a..cce6f59b3 100644 --- a/spec/features/debates_spec.rb +++ b/spec/features/debates_spec.rb @@ -309,20 +309,26 @@ feature 'Debates' do feature 'Debate index order filters' do scenario 'Default order is hot_score', :js do - create(:debate, title: 'Best').update_column(:hot_score, 10) - create(:debate, title: 'Worst').update_column(:hot_score, 2) - create(:debate, title: 'Medium').update_column(:hot_score, 5) + best_debate = create(:debate, title: 'Best') + best_debate.update_column(:hot_score, 10) + worst_debate = create(:debate, title: 'Worst') + worst_debate.update_column(:hot_score, 2) + medium_debate = create(:debate, title: 'Medium') + medium_debate.update_column(:hot_score, 5) visit debates_path - expect('Best').to appear_before('Medium') - expect('Medium').to appear_before('Worst') + expect(best_debate.title).to appear_before(medium_debate.title) + expect(medium_debate.title).to appear_before(worst_debate.title) end scenario 'Debates are ordered by confidence_score', :js do - create(:debate, title: 'Best').update_column(:confidence_score, 10) - create(:debate, title: 'Worst').update_column(:confidence_score, 2) - create(:debate, title: 'Medium').update_column(:confidence_score, 5) + best_debate = create(:debate, title: 'Best') + best_debate.update_column(:confidence_score, 10) + worst_debate = create(:debate, title: 'Worst') + worst_debate.update_column(:confidence_score, 2) + medium_debate = create(:debate, title: 'Medium') + medium_debate.update_column(:confidence_score, 5) visit debates_path click_link 'highest rated' @@ -330,8 +336,8 @@ feature 'Debates' do expect(page).to have_selector('a.active', text: 'highest rated') within '#debates' do - expect('Best').to appear_before('Medium') - expect('Medium').to appear_before('Worst') + expect(best_debate.title).to appear_before(medium_debate.title) + expect(medium_debate.title).to appear_before(worst_debate.title) end expect(current_url).to include('order=confidence_score') @@ -339,9 +345,9 @@ feature 'Debates' do end scenario 'Debates are ordered by newest', :js do - create(:debate, title: 'Best', created_at: Time.current) - create(:debate, title: 'Medium', created_at: Time.current - 1.hour) - create(:debate, title: 'Worst', created_at: Time.current - 1.day) + best_debate = create(:debate, title: 'Best', created_at: Time.current) + medium_debate = create(:debate, title: 'Medium', created_at: Time.current - 1.hour) + worst_debate = create(:debate, title: 'Worst', created_at: Time.current - 1.day) visit debates_path click_link 'newest' @@ -349,8 +355,8 @@ feature 'Debates' do expect(page).to have_selector('a.active', text: 'newest') within '#debates' do - expect('Best').to appear_before('Medium') - expect('Medium').to appear_before('Worst') + expect(best_debate.title).to appear_before(medium_debate.title) + expect(medium_debate.title).to appear_before(worst_debate.title) end expect(current_url).to include('order=created_at') @@ -359,11 +365,12 @@ feature 'Debates' do context 'Recommendations' do + let!(:best_debate) { create(:debate, title: 'Best', cached_votes_total: 10, tag_list: "Sport") } + let!(:medium_debate) { create(:debate, title: 'Medium', cached_votes_total: 5, tag_list: "Sport") } + let!(:worst_debate) { create(:debate, title: 'Worst', cached_votes_total: 1, tag_list: "Sport") } + background do Setting['feature.user.recommendations'] = true - create(:debate, title: 'Best', cached_votes_total: 10, tag_list: "Sport") - create(:debate, title: 'Medium', cached_votes_total: 5, tag_list: "Sport") - create(:debate, title: 'Worst', cached_votes_total: 1, tag_list: "Sport") end after do @@ -411,8 +418,8 @@ feature 'Debates' do expect(page).to have_selector('a.active', text: 'recommendations') within '#debates' do - expect('Best').to appear_before('Medium') - expect('Medium').to appear_before('Worst') + expect(best_debate.title).to appear_before(medium_debate.title) + expect(medium_debate.title).to appear_before(worst_debate.title) end expect(current_url).to include('order=recommendations') diff --git a/spec/features/management/budget_investments_spec.rb b/spec/features/management/budget_investments_spec.rb index f0fbbefe3..714f32132 100644 --- a/spec/features/management/budget_investments_spec.rb +++ b/spec/features/management/budget_investments_spec.rb @@ -275,10 +275,10 @@ feature 'Budget Investments' do scenario "Filtering budget investments by heading to be printed", :js do district_9 = create(:budget_heading, group: @group, name: "District Nine") - create(:budget_investment, budget: @budget, title: 'Change district 9', heading: district_9, cached_votes_up: 10) - create(:budget_investment, budget: @budget, title: 'Destroy district 9', heading: district_9, cached_votes_up: 100) - create(:budget_investment, budget: @budget, title: 'Nuke district 9', heading: district_9, cached_votes_up: 1) - create(:budget_investment, budget: @budget, title: 'Add new districts to the city') + low_investment = create(:budget_investment, budget: @budget, title: 'Nuke district 9', heading: district_9, cached_votes_up: 1) + mid_investment = create(:budget_investment, budget: @budget, title: 'Change district 9', heading: district_9, cached_votes_up: 10) + top_investment = create(:budget_investment, budget: @budget, title: 'Destroy district 9', heading: district_9, cached_votes_up: 100) + unvoted_investment = create(:budget_investment, budget: @budget, title: 'Add new districts to the city') user = create(:user, :level_two) login_managed_user(user) @@ -290,19 +290,19 @@ feature 'Budget Investments' do end within '#budget-investments' do - expect(page).to have_content('Add new districts to the city') - expect(page).to have_content('Change district 9') - expect(page).to have_content('Destroy district 9') - expect(page).to have_content('Nuke district 9') + expect(page).to have_content(unvoted_investment.title) + expect(page).to have_content(mid_investment.title) + expect(page).to have_content(top_investment.title) + expect(page).to have_content(low_investment.title) end select 'Whole city: District Nine', from: 'heading_id' click_button("Search") within '#budget-investments' do - expect(page).to_not have_content('Add new districts to the city') - expect('Destroy district 9').to appear_before('Change district 9') - expect('Change district 9').to appear_before('Nuke district 9') + expect(page).to_not have_content(unvoted_investment.title) + expect(top_investment.title).to appear_before(mid_investment.title) + expect(mid_investment.title).to appear_before(low_investment.title) end end diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index b28eddbac..d73b14b06 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -194,9 +194,12 @@ feature 'Proposals' do end scenario "Filtering proposals to be printed", :js do - create(:proposal, title: 'Worst proposal').update_column(:confidence_score, 2) - create(:proposal, title: 'Best proposal').update_column(:confidence_score, 10) - create(:proposal, title: 'Medium proposal').update_column(:confidence_score, 5) + worst_proposal = create(:proposal, title: 'Worst proposal') + worst_proposal.update_column(:confidence_score, 2) + best_proposal = create(:proposal, title: 'Best proposal') + best_proposal.update_column(:confidence_score, 10) + medium_proposal = create(:proposal, title: 'Medium proposal') + medium_proposal.update_column(:confidence_score, 5) user = create(:user, :level_two) login_managed_user(user) @@ -206,8 +209,8 @@ feature 'Proposals' do expect(page).to have_selector('.js-order-selector[data-order="confidence_score"]') within(".proposals-list") do - expect('Best proposal').to appear_before('Medium proposal') - expect('Medium proposal').to appear_before('Worst proposal') + expect(best_proposal.title).to appear_before(medium_proposal.title) + expect(medium_proposal.title).to appear_before(worst_proposal.title) end select 'newest', from: 'order-selector' @@ -218,8 +221,8 @@ feature 'Proposals' do expect(current_url).to include('page=1') within(".proposals-list") do - expect('Medium proposal').to appear_before('Best proposal') - expect('Best proposal').to appear_before('Worst proposal') + expect(medium_proposal.title).to appear_before(best_proposal.title) + expect(best_proposal.title).to appear_before(worst_proposal.title) end end diff --git a/spec/features/moderation/comments_spec.rb b/spec/features/moderation/comments_spec.rb index dc3604c3a..ea6821a8d 100644 --- a/spec/features/moderation/comments_spec.rb +++ b/spec/features/moderation/comments_spec.rb @@ -170,27 +170,27 @@ feature 'Moderate comments' do end scenario "sorting comments" do - create(:comment, body: "Flagged comment", created_at: Time.current - 1.day, flags_count: 5) - create(:comment, body: "Flagged newer comment", created_at: Time.current - 12.hours, flags_count: 3) - create(:comment, body: "Newer comment", created_at: Time.current) + flagged_comment = create(:comment, body: "Flagged comment", created_at: Time.current - 1.day, flags_count: 5) + flagged_new_comment = create(:comment, body: "Flagged new comment", created_at: Time.current - 12.hours, flags_count: 3) + newer_comment = create(:comment, body: "Newer comment", created_at: Time.current) visit moderation_comments_path(order: 'newest') - expect("Flagged newer comment").to appear_before("Flagged comment") + expect(flagged_new_comment.body).to appear_before(flagged_comment.body) visit moderation_comments_path(order: 'flags') - expect("Flagged comment").to appear_before("Flagged newer comment") + expect(flagged_comment.body).to appear_before(flagged_new_comment.body) visit moderation_comments_path(filter: 'all', order: 'newest') - expect("Newer comment").to appear_before("Flagged newer comment") - expect("Flagged newer comment").to appear_before("Flagged comment") + expect(newer_comment.body).to appear_before(flagged_new_comment.body) + expect(flagged_new_comment.body).to appear_before(flagged_comment.body) visit moderation_comments_path(filter: 'all', order: 'flags') - expect("Flagged comment").to appear_before("Flagged newer comment") - expect("Flagged newer comment").to appear_before("Newer comment") + expect(flagged_comment.body).to appear_before(flagged_new_comment.body) + expect(flagged_new_comment.body).to appear_before(newer_comment.body) end end end diff --git a/spec/features/moderation/debates_spec.rb b/spec/features/moderation/debates_spec.rb index 5a74dd976..a642eb0a4 100644 --- a/spec/features/moderation/debates_spec.rb +++ b/spec/features/moderation/debates_spec.rb @@ -179,27 +179,27 @@ feature 'Moderate debates' do end scenario "sorting debates" do - create(:debate, title: "Flagged debate", created_at: Time.current - 1.day, flags_count: 5) - create(:debate, title: "Flagged newer debate", created_at: Time.current - 12.hours, flags_count: 3) - create(:debate, title: "Newer debate", created_at: Time.current) + flagged_debate = create(:debate, title: "Flagged debate", created_at: Time.current - 1.day, flags_count: 5) + flagged_new_debate = create(:debate, title: "Flagged new debate", created_at: Time.current - 12.hours, flags_count: 3) + newer_debate = create(:debate, title: "Newer debate", created_at: Time.current) visit moderation_debates_path(order: 'created_at') - expect("Flagged newer debate").to appear_before("Flagged debate") + expect(flagged_new_debate.title).to appear_before(flagged_debate.title) visit moderation_debates_path(order: 'flags') - expect("Flagged debate").to appear_before("Flagged newer debate") + expect(flagged_debate.title).to appear_before(flagged_new_debate.title) visit moderation_debates_path(filter: 'all', order: 'created_at') - expect("Newer debate").to appear_before("Flagged newer debate") - expect("Flagged newer debate").to appear_before("Flagged debate") + expect(newer_debate.title).to appear_before(flagged_new_debate.title) + expect(flagged_new_debate.title).to appear_before(flagged_debate.title) visit moderation_debates_path(filter: 'all', order: 'flags') - expect("Flagged debate").to appear_before("Flagged newer debate") - expect("Flagged newer debate").to appear_before("Newer debate") + expect(flagged_debate.title).to appear_before(flagged_new_debate.title) + expect(flagged_new_debate.title).to appear_before(newer_debate.title) end end end diff --git a/spec/features/moderation/proposals_spec.rb b/spec/features/moderation/proposals_spec.rb index 86ab40836..df0a92395 100644 --- a/spec/features/moderation/proposals_spec.rb +++ b/spec/features/moderation/proposals_spec.rb @@ -179,27 +179,27 @@ feature 'Moderate proposals' do end scenario "sorting proposals" do - create(:proposal, title: "Flagged proposal", created_at: Time.current - 1.day, flags_count: 5) - create(:proposal, title: "Flagged newer proposal", created_at: Time.current - 12.hours, flags_count: 3) - create(:proposal, title: "Newer proposal", created_at: Time.current) + flagged_proposal = create(:proposal, title: "Flagged proposal", created_at: Time.current - 1.day, flags_count: 5) + flagged_new_proposal = create(:proposal, title: "Flagged new proposal", created_at: Time.current - 12.hours, flags_count: 3) + newer_proposal = create(:proposal, title: "Newer proposal", created_at: Time.current) visit moderation_proposals_path(order: 'created_at') - expect("Flagged newer proposal").to appear_before("Flagged proposal") + expect(flagged_new_proposal.title).to appear_before(flagged_proposal.title) visit moderation_proposals_path(order: 'flags') - expect("Flagged proposal").to appear_before("Flagged newer proposal") + expect(flagged_proposal.title).to appear_before(flagged_new_proposal.title) visit moderation_proposals_path(filter: 'all', order: 'created_at') - expect("Newer proposal").to appear_before("Flagged newer proposal") - expect("Flagged newer proposal").to appear_before("Flagged proposal") + expect(newer_proposal.title).to appear_before(flagged_new_proposal.title) + expect(flagged_new_proposal.title).to appear_before(flagged_proposal.title) visit moderation_proposals_path(filter: 'all', order: 'flags') - expect("Flagged proposal").to appear_before("Flagged newer proposal") - expect("Flagged newer proposal").to appear_before("Newer proposal") + expect(flagged_proposal.title).to appear_before(flagged_new_proposal.title) + expect(flagged_new_proposal.title).to appear_before(newer_proposal.title) end end end diff --git a/spec/features/proposals_spec.rb b/spec/features/proposals_spec.rb index d5a0d9511..168da9d9c 100644 --- a/spec/features/proposals_spec.rb +++ b/spec/features/proposals_spec.rb @@ -634,30 +634,36 @@ feature 'Proposals' do scenario 'Default order is hot_score', :js do create_featured_proposals - create(:proposal, title: 'Best proposal').update_column(:hot_score, 10) - create(:proposal, title: 'Worst proposal').update_column(:hot_score, 2) - create(:proposal, title: 'Medium proposal').update_column(:hot_score, 5) + best_proposal = create(:proposal, title: 'Best proposal') + best_proposal.update_column(:hot_score, 10) + worst_proposal = create(:proposal, title: 'Worst proposal') + worst_proposal.update_column(:hot_score, 2) + medium_proposal = create(:proposal, title: 'Medium proposal') + medium_proposal.update_column(:hot_score, 5) visit proposals_path - expect('Best proposal').to appear_before('Medium proposal') - expect('Medium proposal').to appear_before('Worst proposal') + expect(best_proposal.title).to appear_before(medium_proposal.title) + expect(medium_proposal.title).to appear_before(worst_proposal.title) end scenario 'Proposals are ordered by confidence_score', :js do create_featured_proposals - create(:proposal, title: 'Best proposal').update_column(:confidence_score, 10) - create(:proposal, title: 'Worst proposal').update_column(:confidence_score, 2) - create(:proposal, title: 'Medium proposal').update_column(:confidence_score, 5) + best_proposal = create(:proposal, title: 'Best proposal') + best_proposal.update_column(:confidence_score, 10) + worst_proposal = create(:proposal, title: 'Worst proposal') + worst_proposal.update_column(:confidence_score, 2) + medium_proposal = create(:proposal, title: 'Medium proposal') + medium_proposal.update_column(:confidence_score, 5) visit proposals_path click_link 'highest rated' expect(page).to have_selector('a.active', text: 'highest rated') within '#proposals' do - expect('Best proposal').to appear_before('Medium proposal') - expect('Medium proposal').to appear_before('Worst proposal') + expect(best_proposal.title).to appear_before(medium_proposal.title) + expect(medium_proposal.title).to appear_before(worst_proposal.title) end expect(current_url).to include('order=confidence_score') @@ -667,17 +673,17 @@ feature 'Proposals' do scenario 'Proposals are ordered by newest', :js do create_featured_proposals - create(:proposal, title: 'Best proposal', created_at: Time.current) - create(:proposal, title: 'Medium proposal', created_at: Time.current - 1.hour) - create(:proposal, title: 'Worst proposal', created_at: Time.current - 1.day) + best_proposal = create(:proposal, title: 'Best proposal', created_at: Time.current) + medium_proposal = create(:proposal, title: 'Medium proposal', created_at: Time.current - 1.hour) + worst_proposal = create(:proposal, title: 'Worst proposal', created_at: Time.current - 1.day) visit proposals_path click_link 'newest' expect(page).to have_selector('a.active', text: 'newest') within '#proposals' do - expect('Best proposal').to appear_before('Medium proposal') - expect('Medium proposal').to appear_before('Worst proposal') + expect(best_proposal.title).to appear_before(medium_proposal.title) + expect(medium_proposal.title).to appear_before(worst_proposal.title) end expect(current_url).to include('order=created_at') @@ -686,11 +692,12 @@ feature 'Proposals' do context 'Recommendations' do + let!(:best_proposal) { create(:proposal, title: 'Best', cached_votes_up: 10, tag_list: "Sport") } + let!(:medium_proposal) { create(:proposal, title: 'Medium', cached_votes_up: 5, tag_list: "Sport") } + let!(:worst_proposal) { create(:proposal, title: 'Worst', cached_votes_up: 1, tag_list: "Sport") } + before do Setting['feature.user.recommendations'] = true - create(:proposal, title: 'Best', cached_votes_up: 10, tag_list: "Sport") - create(:proposal, title: 'Medium', cached_votes_up: 5, tag_list: "Sport") - create(:proposal, title: 'Worst', cached_votes_up: 1, tag_list: "Sport") end after do @@ -738,8 +745,8 @@ feature 'Proposals' do expect(page).to have_selector('a.active', text: 'recommendations') within '#proposals-list' do - expect('Best').to appear_before('Medium') - expect('Medium').to appear_before('Worst') + expect(best_proposal.title).to appear_before(medium_proposal.title) + expect(medium_proposal.title).to appear_before(worst_proposal.title) end expect(current_url).to include('order=recommendations') @@ -1621,14 +1628,17 @@ feature 'Proposals' do scenario "Orders proposals by votes" do create(:tag, :category, name: 'culture') - create(:proposal, title: 'Best', tag_list: 'culture').update_column(:confidence_score, 10) - create(:proposal, title: 'Worst', tag_list: 'culture').update_column(:confidence_score, 2) - create(:proposal, title: 'Medium', tag_list: 'culture').update_column(:confidence_score, 5) + best_proposal = create(:proposal, title: 'Best', tag_list: 'culture') + best_proposal.update_column(:confidence_score, 10) + worst_proposal = create(:proposal, title: 'Worst', tag_list: 'culture') + worst_proposal.update_column(:confidence_score, 2) + medium_proposal = create(:proposal, title: 'Medium', tag_list: 'culture') + medium_proposal.update_column(:confidence_score, 5) visit summary_proposals_path - expect('Best').to appear_before('Medium') - expect('Medium').to appear_before('Worst') + expect(best_proposal.title).to appear_before(medium_proposal.title) + expect(medium_proposal.title).to appear_before(worst_proposal.title) end scenario "Displays proposals from last week" do