From 6e2063310fc98712289ab8f65d387ea5ac9e82fa Mon Sep 17 00:00:00 2001 From: taitus Date: Fri, 4 Aug 2017 13:27:03 +0200 Subject: [PATCH] Add empty recommended messages text. --- app/controllers/proposals_controller.rb | 2 +- app/helpers/debates_helper.rb | 10 +++++++- app/helpers/proposals_helper.rb | 10 +++++++- app/views/debates/index.html.erb | 8 ++++-- app/views/proposals/index.html.erb | 6 ++++- config/locales/en/general.yml | 6 +++++ config/locales/es/general.yml | 8 +++++- spec/features/debates_spec.rb | 22 ++++++++++++++++ spec/features/proposals_spec.rb | 34 +++++++++++++++++++++---- 9 files changed, 94 insertions(+), 12 deletions(-) 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