diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb
index c06438076..2a8f71309 100644
--- a/app/controllers/proposals_controller.rb
+++ b/app/controllers/proposals_controller.rb
@@ -110,7 +110,7 @@ class ProposalsController < ApplicationController
end
def load_featured
- return unless !@advanced_search_terms && @search_terms.blank? && @tag_filter.blank? && params[:retired].blank?
+ return unless !@advanced_search_terms && @search_terms.blank? && @tag_filter.blank? && params[:retired].blank? && @current_order != "recommendations"
@featured_proposals = Proposal.not_archived.sort_by_confidence_score.limit(3)
if @featured_proposals.present?
set_featured_proposal_votes(@featured_proposals)
diff --git a/app/helpers/debates_helper.rb b/app/helpers/debates_helper.rb
index 8db989f61..e880f0831 100644
--- a/app/helpers/debates_helper.rb
+++ b/app/helpers/debates_helper.rb
@@ -4,4 +4,12 @@ module DebatesHelper
Debate.all.featured.count > 0
end
-end
\ No newline at end of file
+ def empty_recommended_debates_message_text(user)
+ if user.interests.any?
+ t('debates.index.recommendations.without_results')
+ else
+ t('debates.index.recommendations.without_interests')
+ end
+ end
+
+end
diff --git a/app/helpers/proposals_helper.rb b/app/helpers/proposals_helper.rb
index 37425d573..845cf83ce 100644
--- a/app/helpers/proposals_helper.rb
+++ b/app/helpers/proposals_helper.rb
@@ -32,4 +32,12 @@ module ProposalsHelper
Proposal::RETIRE_OPTIONS.collect { |option| [ t("proposals.retire_options.#{option}"), option ] }
end
-end
\ No newline at end of file
+ def empty_recommended_proposals_message_text(user)
+ if user.interests.any?
+ t('proposals.index.recommendations.without_results')
+ else
+ t('proposals.index.recommendations.without_interests')
+ end
+ end
+
+end
diff --git a/app/views/debates/index.html.erb b/app/views/debates/index.html.erb
index cb21b4f36..816225b9e 100644
--- a/app/views/debates/index.html.erb
+++ b/app/views/debates/index.html.erb
@@ -53,8 +53,12 @@
<%= link_to t("debates.index.start_debate"), new_debate_path, class: 'button expanded' %>
-
- <%= render @debates %>
+
+ <% if @debates.any? %>
+ <%= render @debates %>
+ <% else %>
+ <%= empty_recommended_debates_message_text(current_user) %>
+ <% end %>
<%= paginate @debates %>
diff --git a/app/views/proposals/index.html.erb b/app/views/proposals/index.html.erb
index 5d51ad279..a9f1c3975 100644
--- a/app/views/proposals/index.html.erb
+++ b/app/views/proposals/index.html.erb
@@ -66,7 +66,11 @@
- <%= render partial: 'proposals/proposal', collection: @proposals %>
+ <% if @proposals.any? %>
+ <%= render partial: 'proposals/proposal', collection: @proposals %>
+ <% else %>
+ <%= empty_recommended_proposals_message_text(current_user) %>
+ <% end %>
<%= paginate @proposals %>
diff --git a/config/locales/en/general.yml b/config/locales/en/general.yml
index c6adeb22b..7937c06bf 100644
--- a/config/locales/en/general.yml
+++ b/config/locales/en/general.yml
@@ -109,6 +109,9 @@ en:
most_commented: most commented
relevance: relevance
recommendations: recommendations
+ recommendations:
+ without_results: There are not debates related to your interests
+ without_interests: Follow proposals so we can give you recommendations
search_form:
button: Search
placeholder: Search debates...
@@ -331,6 +334,9 @@ en:
relevance: relevance
archival_date: Archived
recommendations: recommendations
+ recommendations:
+ without_results: There are not proposals related to your interests
+ without_interests: Follow proposals so we can give you recommendations
retired_proposals: Retired proposals
retired_proposals_link: "Proposals retired by the author"
retired_links:
diff --git a/config/locales/es/general.yml b/config/locales/es/general.yml
index fb9167087..0c8b69057 100644
--- a/config/locales/es/general.yml
+++ b/config/locales/es/general.yml
@@ -109,6 +109,9 @@ es:
most_commented: Más comentados
relevance: Más relevantes
recommendations: Recomendaciones
+ recommendations:
+ without_results: No existen debates relacionados con tus intereses
+ without_interests: Sigue propuestas para que podamos darte recomendaciones
search_form:
button: Buscar
placeholder: Buscar debates...
@@ -330,7 +333,10 @@ es:
most_commented: Más comentadas
relevance: Más relevantes
archival_date: Archivadas
- recommendations: Recomendaciones
+ recommendations: Recomendaciones
+ recommendations:
+ without_results: No existen propuestas relacionadas con tus intereses
+ without_interests: Sigue propuestas para que podamos darte recomendaciones
retired_proposals: Propuestas retiradas
retired_proposals_link: "Propuestas retiradas por sus autores"
retired_links:
diff --git a/spec/features/debates_spec.rb b/spec/features/debates_spec.rb
index f5cde8d7d..e418d5100 100644
--- a/spec/features/debates_spec.rb
+++ b/spec/features/debates_spec.rb
@@ -371,6 +371,28 @@ feature 'Debates' do
expect(page).not_to have_selector('a', text: 'recommendations')
end
+ scenario 'Should display text when there are not recommendeds results', :js do
+ user = create(:user)
+ proposal = create(:proposal, tag_list: "Distinct_to_sport")
+ create(:follow, followable: proposal, user: user)
+ login_as(user)
+ visit debates_path
+
+ click_link 'recommendations'
+
+ 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)
+ login_as(user)
+ visit debates_path
+
+ click_link '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', :js do
proposal = create(:proposal, tag_list: "Sport" )
user = create(:user)
diff --git a/spec/features/proposals_spec.rb b/spec/features/proposals_spec.rb
index 7aeb20c1c..353bcfecb 100644
--- a/spec/features/proposals_spec.rb
+++ b/spec/features/proposals_spec.rb
@@ -632,11 +632,11 @@ feature 'Proposals' do
context 'Recommendations' do
- background do
+ before do
Setting['feature.user.recommendations'] = true
- create(:proposal, title: 'Best', cached_votes_up: 10)
- create(:proposal, title: 'Medium', cached_votes_up: 5)
- create(:proposal, title: 'Worst', cached_votes_up: 1)
+ 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
@@ -649,8 +649,32 @@ feature 'Proposals' do
expect(page).not_to have_selector('a', text: 'recommendations')
end
+ scenario 'Should display text when there are not recommendeds results', :js do
+ user = create(:user)
+ 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"
+ end
+
+ scenario 'Should display text when user has not related interests', :js do
+ user = create(:user)
+ login_as(user)
+ visit proposals_path
+
+ click_link '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', :js do
user = create(:user)
+ proposal = create(:proposal, tag_list: "Sport")
+ create(:follow, followable: proposal, user: user)
login_as(user)
visit proposals_path
@@ -659,7 +683,7 @@ feature 'Proposals' do
expect(page).to have_selector('a.active', text: 'recommendations')
- within '#proposals' do
+ within '#proposals-list' do
expect('Best').to appear_before('Medium')
expect('Medium').to appear_before('Worst')
end