Remove recommended investments

This commit is contained in:
taitus
2017-07-28 11:15:45 +02:00
parent ede7b9b135
commit c6a9ffc19c
7 changed files with 32 additions and 122 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 %>

View File

@@ -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

View File

@@ -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