Refactor recommendations specs to improve DRYness
This commit is contained in:
@@ -189,7 +189,7 @@ feature 'Account' do
|
||||
Setting['feature.user.recommendations_on_proposals'] = nil
|
||||
end
|
||||
|
||||
scenario 'show checkboxes to enable/disable recommendations (disabled by default)' do
|
||||
scenario 'are disabled by default' do
|
||||
visit account_path
|
||||
|
||||
expect(page).to have_content('Recommendations')
|
||||
@@ -199,5 +199,28 @@ feature 'Account' do
|
||||
expect(find("#account_recommended_proposals")).not_to be_checked
|
||||
end
|
||||
|
||||
scenario "can be enabled through 'My account' page" do
|
||||
visit account_path
|
||||
|
||||
expect(page).to have_content('Recommendations')
|
||||
expect(page).to have_content('Show debates recommendations')
|
||||
expect(page).to have_content('Show proposals recommendations')
|
||||
expect(find("#account_recommended_debates")).not_to be_checked
|
||||
expect(find("#account_recommended_proposals")).not_to be_checked
|
||||
|
||||
check 'account_recommended_debates'
|
||||
check 'account_recommended_proposals'
|
||||
|
||||
click_button 'Save changes'
|
||||
|
||||
expect(find("#account_recommended_debates")).to be_checked
|
||||
expect(find("#account_recommended_proposals")).to be_checked
|
||||
|
||||
@user.reload
|
||||
|
||||
expect(@user.recommended_debates).to be(true)
|
||||
expect(@user.recommended_proposals).to be(true)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -397,9 +397,9 @@ 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") }
|
||||
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
|
||||
@@ -411,40 +411,29 @@ feature 'Debates' do
|
||||
Setting['feature.user.recommendations_on_debates'] = nil
|
||||
end
|
||||
|
||||
scenario 'Debates can not ordered by recommendations when there is not an user logged' do
|
||||
scenario "Debates can't be ordered by recommendations if there's no logged user" do
|
||||
visit debates_path
|
||||
expect(page).not_to have_selector('a', text: 'recommendations')
|
||||
end
|
||||
|
||||
scenario 'Show recommended debates on index header' do
|
||||
user = create(:user)
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
scenario 'Show recommended debates on index header when user has recommendations enabled' do
|
||||
user = create(:user, recommended_debates: true)
|
||||
proposal = create(:proposal, tag_list: 'Sport')
|
||||
create(:follow, followable: proposal, user: user)
|
||||
|
||||
login_as(user)
|
||||
visit account_path
|
||||
|
||||
expect(page).to have_content('Recommendations')
|
||||
expect(page).to have_content('Show debates recommendations')
|
||||
expect(find("#account_recommended_debates")).not_to be_checked
|
||||
|
||||
check 'account_recommended_debates'
|
||||
click_button 'Save changes'
|
||||
|
||||
expect(find("#account_recommended_debates")).to be_checked
|
||||
|
||||
visit debates_path
|
||||
|
||||
expect(page).to have_css('.recommendation', count: 3)
|
||||
expect(page).to have_link "Best"
|
||||
expect(page).to have_link "Medium"
|
||||
expect(page).to have_link "Worst"
|
||||
expect(page).to have_link "See more recommendations"
|
||||
expect(page).to have_link 'Best'
|
||||
expect(page).to have_link 'Medium'
|
||||
expect(page).to have_link 'Worst'
|
||||
expect(page).to have_link 'See more recommendations'
|
||||
end
|
||||
|
||||
scenario 'Should display text when there are not recommended results' do
|
||||
user = create(:user, recommended_debates: true)
|
||||
proposal = create(:proposal, tag_list: "Distinct_to_sport")
|
||||
proposal = create(:proposal, tag_list: 'Distinct_to_sport')
|
||||
create(:follow, followable: proposal, user: user)
|
||||
|
||||
login_as(user)
|
||||
@@ -452,22 +441,23 @@ feature 'Debates' do
|
||||
|
||||
click_link 'recommendations'
|
||||
|
||||
expect(page).to have_content "There are not debates related to your interests"
|
||||
expect(page).to have_content 'There are not debates related to your interests'
|
||||
end
|
||||
|
||||
scenario 'Should display text when user has not related interests' do
|
||||
user = create(:user, recommended_debates: true)
|
||||
|
||||
login_as(user)
|
||||
visit debates_path
|
||||
|
||||
click_link 'recommendations'
|
||||
|
||||
expect(page).to have_content "Follow proposals so we can give you recommendations"
|
||||
expect(page).to have_content 'Follow proposals so we can give you recommendations'
|
||||
end
|
||||
|
||||
scenario 'Debates are ordered by recommendations when there is a user logged' do
|
||||
scenario "Debates are ordered by recommendations when there's an user logged" do
|
||||
user = create(:user, recommended_debates: true)
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
proposal = create(:proposal, tag_list: 'Sport')
|
||||
create(:follow, followable: proposal, user: user)
|
||||
|
||||
login_as(user)
|
||||
@@ -486,18 +476,12 @@ feature 'Debates' do
|
||||
expect(current_url).to include('page=1')
|
||||
end
|
||||
|
||||
scenario 'Recommendations are not shown if feature is disabled' do
|
||||
scenario 'are not shown if user does not have recommendations enabled' do
|
||||
user = create(:user)
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
proposal = create(:proposal, tag_list: 'Sport')
|
||||
create(:follow, followable: proposal, user: user)
|
||||
|
||||
login_as(user)
|
||||
visit account_path
|
||||
|
||||
expect(page).to have_content('Recommendations')
|
||||
expect(page).to have_content('Show debates recommendations')
|
||||
expect(find("#account_recommended_debates")).not_to be_checked
|
||||
|
||||
visit debates_path
|
||||
|
||||
expect(page).not_to have_css('.recommendation', count: 3)
|
||||
@@ -506,11 +490,10 @@ feature 'Debates' do
|
||||
|
||||
scenario 'Recommendations shown in index are dismissable', :js do
|
||||
user = create(:user, recommended_debates: true)
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
proposal = create(:proposal, tag_list: 'Sport')
|
||||
create(:follow, followable: proposal, user: user)
|
||||
|
||||
login_as(user)
|
||||
|
||||
visit debates_path
|
||||
|
||||
within("#recommendations") do
|
||||
|
||||
@@ -721,9 +721,9 @@ 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") }
|
||||
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
|
||||
@@ -735,71 +735,56 @@ feature 'Proposals' do
|
||||
Setting['feature.user.recommendations_on_proposals'] = nil
|
||||
end
|
||||
|
||||
scenario 'Proposals can not ordered by recommendations when there is not an user logged' do
|
||||
scenario "Proposals can't be ordered by recommendations if there's no logged user" do
|
||||
visit proposals_path
|
||||
expect(page).not_to have_selector('a', text: 'recommendations')
|
||||
end
|
||||
|
||||
scenario 'Show recommended proposals on index header' do
|
||||
user = create(:user)
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
scenario 'Show recommended proposals on index header when user has recommendations enabled' do
|
||||
user = create(:user, recommended_proposals: true)
|
||||
proposal = create(:proposal, tag_list: 'Sport')
|
||||
create(:follow, followable: proposal, user: user)
|
||||
|
||||
login_as(user)
|
||||
|
||||
visit account_path
|
||||
|
||||
expect(page).to have_content('Recommendations')
|
||||
expect(page).to have_content('Show proposals recommendations')
|
||||
expect(find("#account_recommended_proposals")).not_to be_checked
|
||||
|
||||
check 'account_recommended_proposals'
|
||||
click_button 'Save changes'
|
||||
|
||||
expect(find("#account_recommended_proposals")).to be_checked
|
||||
|
||||
visit proposals_path
|
||||
|
||||
expect(page).to have_css('.recommendation', count: 3)
|
||||
expect(page).to have_link "Best"
|
||||
expect(page).to have_link "Medium"
|
||||
expect(page).to have_link "Worst"
|
||||
expect(page).to have_link "See more recommendations"
|
||||
expect(page).to have_link 'Best'
|
||||
expect(page).to have_link 'Medium'
|
||||
expect(page).to have_link 'Worst'
|
||||
expect(page).to have_link 'See more recommendations'
|
||||
end
|
||||
|
||||
scenario 'Should display text when there are not recommended results' do
|
||||
user = create(:user, recommended_proposals: true)
|
||||
proposal = create(:proposal, tag_list: "Distinct_to_sport")
|
||||
proposal = create(:proposal, tag_list: 'Distinct_to_sport')
|
||||
create(:follow, followable: proposal, user: user)
|
||||
|
||||
login_as(user)
|
||||
|
||||
visit proposals_path
|
||||
|
||||
click_link 'recommendations'
|
||||
|
||||
expect(page).to have_content "There are not proposals related to your interests"
|
||||
expect(page).to have_content 'There are not proposals related to your interests'
|
||||
end
|
||||
|
||||
scenario 'Should display text when user has not related interests' do
|
||||
user = create(:user, recommended_proposals: true)
|
||||
|
||||
login_as(user)
|
||||
|
||||
visit proposals_path
|
||||
|
||||
click_link 'recommendations'
|
||||
|
||||
expect(page).to have_content "Follow proposals so we can give you recommendations"
|
||||
expect(page).to have_content 'Follow proposals so we can give you recommendations'
|
||||
end
|
||||
|
||||
scenario 'Proposals are ordered by recommendations when there is an user logged' do
|
||||
scenario "Proposals are ordered by recommendations when there's an user logged" do
|
||||
user = create(:user, recommended_proposals: true)
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
proposal = create(:proposal, tag_list: 'Sport')
|
||||
create(:follow, followable: proposal, user: user)
|
||||
|
||||
login_as(user)
|
||||
|
||||
visit proposals_path
|
||||
|
||||
click_link 'recommendations'
|
||||
@@ -815,19 +800,12 @@ feature 'Proposals' do
|
||||
expect(current_url).to include('page=1')
|
||||
end
|
||||
|
||||
scenario 'Recommendations are not shown if feature is disabled' do
|
||||
scenario 'are not shown if user does not have recommendations enabled' do
|
||||
user = create(:user)
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
proposal = create(:proposal, tag_list: 'Sport')
|
||||
create(:follow, followable: proposal, user: user)
|
||||
|
||||
login_as(user)
|
||||
|
||||
visit account_path
|
||||
|
||||
expect(page).to have_content('Recommendations')
|
||||
expect(page).to have_content('Show proposals recommendations')
|
||||
expect(find("#account_recommended_proposals")).not_to be_checked
|
||||
|
||||
visit proposals_path
|
||||
|
||||
expect(page).not_to have_css('.recommendation', count: 3)
|
||||
@@ -836,11 +814,10 @@ feature 'Proposals' do
|
||||
|
||||
scenario 'Recommendations shown in index are dismissable', :js do
|
||||
user = create(:user, recommended_proposals: true)
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
proposal = create(:proposal, tag_list: 'Sport')
|
||||
create(:follow, followable: proposal, user: user)
|
||||
|
||||
login_as(user)
|
||||
|
||||
visit proposals_path
|
||||
|
||||
within("#recommendations") do
|
||||
|
||||
Reference in New Issue
Block a user