Remove recommended investments
This commit is contained in:
@@ -30,27 +30,31 @@ module WelcomeHelper
|
||||
image_tag(image_path) if image_path.present?
|
||||
end
|
||||
|
||||
def calculate_size(debates, proposals, budget_investments)
|
||||
size = debates.any? && proposals.any? && budget_investments.any? ? 4 : 6
|
||||
"medium-#{size} large-#{size}"
|
||||
def calculate_carousel_size(debates, proposals, apply_offset)
|
||||
offset = calculate_offset(debates, proposals, apply_offset)
|
||||
centered = calculate_centered(debates, proposals)
|
||||
"#{offset if offset} #{centered if centered}"
|
||||
end
|
||||
|
||||
def calculate_centered(debates, proposals, budget_investments)
|
||||
if debates.blank? && proposals.blank? && budget_investments.any? ||
|
||||
debates.blank? && proposals.any? && budget_investments.blank? ||
|
||||
debates.any? && proposals.blank? && budget_investments.blank?
|
||||
centered = "medium-centered large-centered"
|
||||
def calculate_centered(debates, proposals)
|
||||
if (debates.blank? && proposals.any?) ||
|
||||
(debates.any? && proposals.blank?)
|
||||
centered = "medium-centered large-centered"
|
||||
end
|
||||
end
|
||||
|
||||
def calculate_carousel_size(debates, proposals, budget_investments)
|
||||
size = calculate_size(debates, proposals, budget_investments)
|
||||
centered = calculate_centered(debates, proposals, budget_investments)
|
||||
"#{size} #{centered if centered}"
|
||||
def calculate_offset(debates, proposals, apply_offset)
|
||||
if (debates.any? && proposals.any?)
|
||||
if apply_offset
|
||||
offset = "medium-offset-2 large-offset-2"
|
||||
else
|
||||
offset = "end"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def display_recommendeds(debates, proposals, budget_investments)
|
||||
debates.any? || proposals.any? || budget_investments.any?
|
||||
def display_recommendeds(debates, proposals)
|
||||
debates.any? || proposals.any?
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -336,18 +336,6 @@ class User < ActiveRecord::Base
|
||||
proposals_list.order("cached_votes_up DESC").limit(3)
|
||||
end
|
||||
|
||||
def recommended_budget_investments
|
||||
investments_list = Budget::Investment.where("author_id != ?", id)
|
||||
investments_list_with_tagged = investments_list.tagged_with(interests, any: true)
|
||||
|
||||
if interests.any? && investments_list_with_tagged.any?
|
||||
followed_investments_ids = Budget::Investment.followed_by_user(self).pluck(:id)
|
||||
investments_list = investments_list_with_tagged.where("id NOT IN (?)", followed_investments_ids)
|
||||
end
|
||||
|
||||
investments_list.order("cached_votes_up DESC").limit(3)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def clean_document_number
|
||||
|
||||
@@ -2,10 +2,9 @@
|
||||
<div class="row">
|
||||
|
||||
<h2 class="text-center"><%= t("welcome.recommended.title") %></h2>
|
||||
<!-- Add the carousel-image class to show the pictures -->
|
||||
<div class="small-12 column carousel-image">
|
||||
<% carousel_size = calculate_carousel_size(recommended_debates, recommended_proposals, recommended_budget_investments) %>
|
||||
<% if recommended_debates.any? %>
|
||||
<% carousel_size = calculate_carousel_size(recommended_debates, recommended_proposals, true) %>
|
||||
<%= render "recommended_carousel", recommendeds: recommended_debates,
|
||||
key: "debates",
|
||||
image_field: nil,
|
||||
@@ -15,6 +14,7 @@
|
||||
<% end %>
|
||||
|
||||
<% if recommended_proposals.any? %>
|
||||
<% carousel_size = calculate_carousel_size(recommended_debates, recommended_proposals, false) %>
|
||||
<%= render "recommended_carousel", recommendeds: recommended_proposals,
|
||||
key: "proposals",
|
||||
image_field: nil,
|
||||
@@ -22,16 +22,6 @@
|
||||
image_default: "https://dummyimage.com/600x400/000/fff",
|
||||
carousel_size: carousel_size %>
|
||||
<% end %>
|
||||
|
||||
<% if recommended_budget_investments.any? %>
|
||||
<%= render "recommended_carousel", recommendeds: recommended_budget_investments,
|
||||
key: "budget-investments",
|
||||
image_field: nil, #example value :image (PR#1691)
|
||||
image_version: nil, #example value :thumb (PR#1691)
|
||||
image_default: "https://dummyimage.com/600x400/000/fff",
|
||||
carousel_size: carousel_size %>
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="small-12 <%= carousel_size %> column text-center <%= key %> ">
|
||||
<div class="small-12 medium-4 large-4 <%= carousel_size %> column text-center <%= key %> ">
|
||||
<div class="card small-centered <%= key %>-inner">
|
||||
|
||||
<h4><%= t("welcome.recommended.#{key.underscore}.title") %></h4>
|
||||
|
||||
@@ -27,12 +27,10 @@
|
||||
|
||||
<% recommended_debates = current_user.recommended_debates %>
|
||||
<% recommended_proposals = current_user.recommended_proposals %>
|
||||
<% recommended_budget_investments = current_user.recommended_budget_investments %>
|
||||
|
||||
<% if display_recommendeds(recommended_debates, recommended_proposals, recommended_budget_investments) %>
|
||||
<% if display_recommendeds(recommended_debates, recommended_proposals) %>
|
||||
<%= render "recommended", recommended_debates: recommended_debates,
|
||||
recommended_proposals: recommended_proposals,
|
||||
recommended_budget_investments: recommended_budget_investments %>
|
||||
recommended_proposals: recommended_proposals %>
|
||||
<% end %>
|
||||
|
||||
<% end %>
|
||||
|
||||
@@ -54,15 +54,6 @@ feature "Home" do
|
||||
expect(page).to have_content proposal.description
|
||||
end
|
||||
|
||||
scenario 'Display investments' do
|
||||
budget_investment = create(:budget_investment)
|
||||
|
||||
visit root_path
|
||||
|
||||
expect(page).to have_content budget_investment.title
|
||||
expect(page).to have_content budget_investment.description
|
||||
end
|
||||
|
||||
scenario 'Display orbit carrousel' do
|
||||
debate = create_list(:debate, 3)
|
||||
|
||||
@@ -82,7 +73,7 @@ feature "Home" do
|
||||
expect(current_path).to eq debate_path(debate)
|
||||
end
|
||||
|
||||
scenario 'Do not display recommended section when there are not debates, proposals and investments' do
|
||||
scenario 'Do not display recommended section when there are not debates and proposals' do
|
||||
visit root_path
|
||||
|
||||
expect(page).not_to have_content "Recommendations that may interest you"
|
||||
@@ -90,34 +81,27 @@ feature "Home" do
|
||||
|
||||
feature 'Carousel size' do
|
||||
|
||||
scenario 'Display debates centered when there are not proposals and investments' do
|
||||
scenario 'Display debates centered when there is not proposals' do
|
||||
debate = create(:debate)
|
||||
|
||||
visit root_path
|
||||
|
||||
expect(page).to have_selector('.medium-6.large-6.medium-centered.large-centered')
|
||||
expect(page).to have_selector('.medium-centered.large-centered')
|
||||
end
|
||||
|
||||
scenario 'Correct display debates and proposals when there are not investments' do
|
||||
scenario 'Correct display debates and proposals' do
|
||||
proposal = create(:proposal)
|
||||
budget_investment = create(:budget_investment)
|
||||
debates = create(:debate)
|
||||
|
||||
visit root_path
|
||||
|
||||
expect(page).to have_selector('.medium-6.large-6')
|
||||
expect(page).to have_selector('.debates.medium-offset-2.large-offset-2')
|
||||
expect(page).not_to have_selector('.proposals.medium-offset-2.large-offset-2')
|
||||
expect(page).not_to have_selector('.debates.end')
|
||||
expect(page).to have_selector('.proposals.end')
|
||||
expect(page).not_to have_selector('.medium-centered.large-centered')
|
||||
end
|
||||
|
||||
scenario 'Correct display debates, proposals and investments' do
|
||||
debate = create(:debate)
|
||||
proposal = create(:proposal)
|
||||
budget_investment = create(:budget_investment)
|
||||
|
||||
visit root_path
|
||||
|
||||
expect(page).to have_selector('.medium-4.large-4')
|
||||
expect(page).not_to have_selector('.medium-centered.large-centered')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -782,58 +782,4 @@ describe User do
|
||||
|
||||
end
|
||||
|
||||
describe "#recommended_budget_investments" do
|
||||
|
||||
let(:user) { create(:user) }
|
||||
|
||||
it "Should return up to 3 investments" do
|
||||
create_list(:budget_investment, 4)
|
||||
|
||||
expect(user.recommended_budget_investments.size).to eq 3
|
||||
end
|
||||
|
||||
it "Should return budget_investments ordered by cached_votes_up" do
|
||||
budget_investment1 = create(:budget_investment, cached_votes_up: 1 )
|
||||
budget_investment2 = create(:budget_investment, cached_votes_up: 5 )
|
||||
budget_investment3 = create(:budget_investment, cached_votes_up: 10 )
|
||||
|
||||
result = user.recommended_budget_investments
|
||||
|
||||
expect(result.first).to eq budget_investment3
|
||||
expect(result.second).to eq budget_investment2
|
||||
expect(result.third).to eq budget_investment1
|
||||
end
|
||||
|
||||
it "Should return budget_investments related with user interests" do
|
||||
budget_investment1 = create(:budget_investment, tag_list: "Sport")
|
||||
budget_investment2 = create(:budget_investment, tag_list: "Sport")
|
||||
budget_investment3 = create(:budget_investment, tag_list: "Politics")
|
||||
create(:follow, followable: budget_investment1, user: user)
|
||||
|
||||
result = user.recommended_budget_investments
|
||||
|
||||
expect(result.size).to eq 1
|
||||
expect(result).to eq [budget_investment2]
|
||||
end
|
||||
|
||||
it "Should not return budget_investments when user is follower" do
|
||||
budget_investment1 = create(:budget_investment, tag_list: "Sport")
|
||||
create(:follow, followable: budget_investment1, user: user)
|
||||
|
||||
result = user.recommended_budget_investments
|
||||
|
||||
expect(result.size).to eq 0
|
||||
end
|
||||
|
||||
it "Should not return budget_investments when user is the author" do
|
||||
budget_investment1 = create(:budget_investment, author: user)
|
||||
budget_investment2 = create(:budget_investment)
|
||||
|
||||
result = user.recommended_budget_investments
|
||||
|
||||
expect(result.size).to eq 1
|
||||
expect(result).to eq [budget_investment2]
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user