diff --git a/app/controllers/debates_controller.rb b/app/controllers/debates_controller.rb index 09dfc940e..33817166b 100644 --- a/app/controllers/debates_controller.rb +++ b/app/controllers/debates_controller.rb @@ -6,6 +6,7 @@ class DebatesController < ApplicationController before_action :parse_tag_filter, only: :index before_action :authenticate_user!, except: [:index, :show, :map] before_action :set_view, only: :index + before_action :debates_recommendations, only: :index, if: :current_user feature_flag :debates @@ -57,4 +58,7 @@ class DebatesController < ApplicationController @view = (params[:view] == "minimal") ? "minimal" : "default" end + def debates_recommendations + @recommended_debates = Debate.recommendations(current_user).sort_by_random.limit(3) + end end diff --git a/app/views/debates/index.html.erb b/app/views/debates/index.html.erb index e5355b975..478103ed1 100644 --- a/app/views/debates/index.html.erb +++ b/app/views/debates/index.html.erb @@ -35,6 +35,10 @@ <%= render "shared/section_header", i18n_namespace: "debates.index.section_header", image: "debates" %> <% end %> + <% if feature?("user.recommendations_on_debates") && @recommended_debates.present? %> + <%= render "shared/recommended_index", recommended: @recommended_debates %> + <% end %> +
diff --git a/config/locales/en/settings.yml b/config/locales/en/settings.yml index 938717187..aea65f7f3 100644 --- a/config/locales/en/settings.yml +++ b/config/locales/en/settings.yml @@ -43,6 +43,7 @@ en: user: recommendations: Recommendations skip_verification: Skip user verification + recommendations_on_debates: Recommendeds on debates 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 57dfaae50..cc70f6aa3 100644 --- a/config/locales/es/settings.yml +++ b/config/locales/es/settings.yml @@ -43,6 +43,7 @@ es: user: recommendations: Recomendaciones skip_verification: Omitir verificación de usuarios + recommendations_on_debates: Recomendaciones en debates 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 868dec2ad..00f5cce2d 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -82,6 +82,7 @@ Setting['feature.budgets'] = true Setting['feature.signature_sheets'] = true Setting['feature.legislation'] = true Setting['feature.user.recommendations'] = true +Setting['feature.user.recommendations_on_debates'] = true Setting['feature.community'] = true Setting['feature.map'] = nil Setting['feature.allow_images'] = true diff --git a/spec/features/debates_spec.rb b/spec/features/debates_spec.rb index c4018ce76..2f55dba85 100644 --- a/spec/features/debates_spec.rb +++ b/spec/features/debates_spec.rb @@ -403,10 +403,12 @@ feature 'Debates' do background do Setting['feature.user.recommendations'] = true + Setting['feature.user.recommendations_on_debates'] = true end after do Setting['feature.user.recommendations'] = nil + Setting['feature.user.recommendations_on_debates'] = nil end scenario 'Debates can not ordered by recommendations when there is not an user logged', :js do @@ -415,6 +417,21 @@ feature 'Debates' do expect(page).not_to have_selector('a', text: 'recommendations') end + scenario 'Show recommended debates on index header' do + proposal = create(:proposal, tag_list: "Sport") + user = create(:user) + create(:follow, followable: proposal, user: user) + login_as(user) + + 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" + end + scenario 'Should display text when there are not recommendeds results', :js do user = create(:user) proposal = create(:proposal, tag_list: "Distinct_to_sport")