From bdb3f30e40552c12430c45f78dcce90d3617a929 Mon Sep 17 00:00:00 2001 From: decabeza Date: Wed, 28 Mar 2018 01:40:51 +0200 Subject: [PATCH] Adds recommendations on proposals index --- app/controllers/proposals_controller.rb | 5 +++++ app/views/proposals/index.html.erb | 4 ++++ config/locales/en/settings.yml | 1 + config/locales/es/settings.yml | 1 + db/seeds.rb | 1 + spec/features/proposals_spec.rb | 17 +++++++++++++++++ 6 files changed, 29 insertions(+) diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb index f43bc8ad9..ee4b9f1d6 100644 --- a/app/controllers/proposals_controller.rb +++ b/app/controllers/proposals_controller.rb @@ -9,6 +9,7 @@ class ProposalsController < ApplicationController before_action :authenticate_user!, except: [:index, :show, :map, :summary] before_action :destroy_map_location_association, only: :update before_action :set_view, only: :index + before_action :proposals_recommendations, only: :index, if: :current_user feature_flag :proposals @@ -144,4 +145,8 @@ class ProposalsController < ApplicationController end end + def proposals_recommendations + @recommended_proposals = Proposal.recommendations(current_user).sort_by_random.limit(3) + end + end diff --git a/app/views/proposals/index.html.erb b/app/views/proposals/index.html.erb index 61d90a64c..95748bf80 100644 --- a/app/views/proposals/index.html.erb +++ b/app/views/proposals/index.html.erb @@ -37,6 +37,10 @@ <%= render "shared/section_header", i18n_namespace: "proposals.index.section_header", image: "proposals" %> <% end %> + <% if feature?("user.recommendations_on_proposals") && @recommended_proposals.present? %> + <%= render "shared/recommended_index", recommended: @recommended_proposals %> + <% end %> +
diff --git a/config/locales/en/settings.yml b/config/locales/en/settings.yml index aea65f7f3..af5b0dd4a 100644 --- a/config/locales/en/settings.yml +++ b/config/locales/en/settings.yml @@ -44,6 +44,7 @@ en: recommendations: Recommendations skip_verification: Skip user verification recommendations_on_debates: Recommendeds on debates + recommendations_on_proposals: Recommendeds on proposals community: Community on proposals and investments map: Proposals and budget investments geolocation allow_images: Allow upload and show images diff --git a/config/locales/es/settings.yml b/config/locales/es/settings.yml index cc70f6aa3..90f785580 100644 --- a/config/locales/es/settings.yml +++ b/config/locales/es/settings.yml @@ -44,6 +44,7 @@ es: recommendations: Recomendaciones skip_verification: Omitir verificación de usuarios recommendations_on_debates: Recomendaciones en debates + recommendations_on_proposals: Recomendaciones en propuestas community: Comunidad en propuestas y proyectos de gasto map: Geolocalización de propuestas y proyectos de gasto allow_images: Permitir subir y mostrar imágenes diff --git a/db/seeds.rb b/db/seeds.rb index 00f5cce2d..e453495f2 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -83,6 +83,7 @@ Setting['feature.signature_sheets'] = true Setting['feature.legislation'] = true Setting['feature.user.recommendations'] = true Setting['feature.user.recommendations_on_debates'] = true +Setting['feature.user.recommendations_on_proposals'] = true Setting['feature.community'] = true Setting['feature.map'] = nil Setting['feature.allow_images'] = true diff --git a/spec/features/proposals_spec.rb b/spec/features/proposals_spec.rb index ce5987532..95037ca23 100644 --- a/spec/features/proposals_spec.rb +++ b/spec/features/proposals_spec.rb @@ -727,10 +727,12 @@ feature 'Proposals' do before do Setting['feature.user.recommendations'] = true + Setting['feature.user.recommendations_on_proposals'] = true end after do Setting['feature.user.recommendations'] = nil + Setting['feature.user.recommendations_on_proposals'] = nil end scenario 'Proposals can not ordered by recommendations when there is not an user logged', :js do @@ -739,6 +741,21 @@ feature 'Proposals' do expect(page).not_to have_selector('a', text: 'recommendations') end + scenario 'Show recommended proposals on index header' do + proposal = create(:proposal, tag_list: "Sport") + user = create(:user) + create(:follow, followable: proposal, user: user) + login_as(user) + + 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" + end + scenario 'Should display text when there are not recommendeds results', :js do user = create(:user) proposal = create(:proposal, tag_list: "Distinct_to_sport")