Include tests for recommendations feature

This commit is contained in:
Angel Perez
2018-06-05 12:21:03 -04:00
parent a58f6a2662
commit 4275069a1e
3 changed files with 129 additions and 29 deletions

View File

@@ -174,4 +174,30 @@ feature 'Account' do
expect(page).to have_content "Invalid login or password"
end
context 'Recommendations' do
background do
Setting['feature.user.recommendations'] = true
Setting['feature.user.recommendations_on_debates'] = true
Setting['feature.user.recommendations_on_proposals'] = true
end
after do
Setting['feature.user.recommendations'] = nil
Setting['feature.user.recommendations_on_debates'] = nil
Setting['feature.user.recommendations_on_proposals'] = nil
end
scenario 'show checkboxes to enable/disable recommendations (disabled by default)' 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
end
end
end

View File

@@ -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,17 +411,27 @@ 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', :js do
scenario 'Debates can not ordered by recommendations when there is not an user logged' 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")
user = create(:user)
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
@@ -432,10 +442,11 @@ feature 'Debates' do
expect(page).to have_link "See more recommendations"
end
scenario 'Should display text when there are not recommendeds results', :js do
user = create(:user)
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")
create(:follow, followable: proposal, user: user)
login_as(user)
visit debates_path
@@ -444,8 +455,8 @@ feature 'Debates' do
expect(page).to have_content "There are not debates related to your interests"
end
scenario 'Should display text when user has not related interests', :js do
user = create(:user)
scenario 'Should display text when user has not related interests' do
user = create(:user, recommended_debates: true)
login_as(user)
visit debates_path
@@ -454,12 +465,12 @@ feature 'Debates' do
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', :js do
scenario 'Debates are ordered by recommendations when there is a user logged' do
user = create(:user, recommended_debates: true)
proposal = create(:proposal, tag_list: "Sport")
user = create(:user)
create(:follow, followable: proposal, user: user)
login_as(user)
login_as(user)
visit debates_path
click_link 'recommendations'
@@ -474,6 +485,24 @@ feature 'Debates' do
expect(current_url).to include('order=recommendations')
expect(current_url).to include('page=1')
end
scenario 'Recommendations are not shown if feature is disabled' do
user = create(:user)
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)
expect(page).not_to have_link('recommendations')
end
end
end
@@ -883,10 +912,13 @@ feature 'Debates' do
end
end
scenario "Reorder by recommendations results maintaing search", :js do
scenario "Reorder by recommendations results maintaing search" do
Setting['feature.user.recommendations'] = true
user = create(:user)
Setting['feature.user.recommendations_for_debates'] = true
user = create(:user, recommended_debates: true)
login_as(user)
debate1 = create(:debate, title: "Show you got", cached_votes_total: 10, tag_list: "Sport")
debate2 = create(:debate, title: "Show what you got", cached_votes_total: 1, tag_list: "Sport")
debate3 = create(:debate, title: "Do not display with same tag", cached_votes_total: 100, tag_list: "Sport")
@@ -906,7 +938,9 @@ feature 'Debates' do
expect(page).not_to have_content "Do not display with same tag"
expect(page).not_to have_content "Do not display"
end
Setting['feature.user.recommendations'] = nil
Setting['feature.user.recommendations_for_debates'] = nil
end
scenario 'After a search do not show featured debates' do

View File

@@ -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,18 +735,29 @@ 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', :js do
scenario 'Proposals can not ordered by recommendations when there is not an user logged' 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")
user = create(:user)
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)
@@ -756,11 +767,13 @@ feature 'Proposals' do
expect(page).to have_link "See more recommendations"
end
scenario 'Should display text when there are not recommendeds results', :js do
user = create(:user)
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")
create(:follow, followable: proposal, user: user)
login_as(user)
visit proposals_path
click_link 'recommendations'
@@ -768,9 +781,11 @@ feature 'Proposals' do
expect(page).to have_content "There are not proposals related to your interests"
end
scenario 'Should display text when user has not related interests', :js do
user = create(:user)
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'
@@ -778,10 +793,11 @@ feature 'Proposals' do
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', :js do
user = create(:user)
scenario 'Proposals are ordered by recommendations when there is an user logged' do
user = create(:user, recommended_proposals: true)
proposal = create(:proposal, tag_list: "Sport")
create(:follow, followable: proposal, user: user)
login_as(user)
visit proposals_path
@@ -798,6 +814,25 @@ feature 'Proposals' do
expect(current_url).to include('order=recommendations')
expect(current_url).to include('page=1')
end
scenario 'Recommendations are not shown if feature is disabled' do
user = create(:user)
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)
expect(page).not_to have_link('recommendations')
end
end
end
@@ -1334,10 +1369,13 @@ feature 'Proposals' do
end
end
scenario "Reorder by recommendations results maintaing search", :js do
scenario "Reorder by recommendations results maintaing search" do
Setting['feature.user.recommendations'] = true
user = create(:user)
Setting['feature.user.recommendations_for_proposals'] = true
user = create(:user, recommended_proposals: true)
login_as(user)
proposal1 = create(:proposal, title: "Show you got", cached_votes_up: 10, tag_list: "Sport")
proposal2 = create(:proposal, title: "Show what you got", cached_votes_up: 1, tag_list: "Sport")
proposal3 = create(:proposal, title: "Do not display with same tag", cached_votes_up: 100, tag_list: "Sport")
@@ -1357,7 +1395,9 @@ feature 'Proposals' do
expect(page).not_to have_content "Do not display with same tag"
expect(page).not_to have_content "Do not display"
end
Setting['feature.user.recommendations'] = nil
Setting['feature.user.recommendations_for_proposals'] = nil
end
scenario 'After a search do not show featured proposals' do