Fix boosted posts and add spec (#521)

This commit is contained in:
Ben Halpern 2018-06-28 17:22:02 -04:00 committed by GitHub
parent 6bae46fbbf
commit 71c94b6546
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 57 additions and 5 deletions

View file

@ -7,16 +7,21 @@ class AdditionalContentBoxesController < ApplicationController
new(current_user || @article, not_ids: article_ids).get
if (!user_signed_in? || current_user&.display_sponsors) &&
@article.user.permit_adjacent_sponsors &&
rand(2) == 1
randomize
@boosted_article = Suggester::Articles::Boosted.new(
current_user,
@article,
not_ids: (article_ids + [@for_user_article]),
{not_ids: (article_ids + [@for_user_article&.id]), area: "additional_articles"},
).suggest
else
@alt_classic = Suggester::Articles::Classic.
new(@article, not_ids: (article_ids + [@for_user_article])).get
new(@article, {not_ids: (article_ids + [@for_user_article&.id])}).get
end
render "boxes", layout: false
end
def randomize
return true unless Rails.env.production?
rand(2) == 1
end
end

View file

@ -1,8 +1,9 @@
require "rails_helper"
RSpec.describe "AdditionalContentBoxes", type: :request do
let(:regular_article) { create(:article) }
let(:tag) { create(:tag) }
let(:user) { create(:user) }
let(:regular_article) { create(:article, user: user, tags: [tag.name]) }
describe "GET /additional_content_boxes" do
it "returns an article if there is a published/featured one" do
@ -16,5 +17,12 @@ RSpec.describe "AdditionalContentBoxes", type: :request do
get "/additional_content_boxes?article_id=#{regular_article.id}"
expect(response.body).not_to include CGI.escapeHTML(suggestion.title)
end
it "returns boosted article if available" do
organization = create(:organization)
suggestion = create(:article, published: true, featured: true)
boosted_sugg = create(:article, tags: [tag.name], featured: true, boosted_additional_articles: true, organization_id: organization.id)
get "/additional_content_boxes?article_id=#{regular_article.id}"
expect(response.body).to include CGI.escapeHTML(boosted_sugg.title)
end
end
end

View file

@ -0,0 +1,23 @@
require "rails_helper"
RSpec.describe "FollowsApi", type: :request do
describe "POST /api/follows" do
let(:user) { create(:user) }
let(:user_2) { create(:user) }
let(:user_3) { create(:user) }
let(:user_4) { create(:user) }
let(:user_5) { create(:user) }
it "returns empty if user not signed in" do
users_hash = [{id: user_2.id}, {id: user_3.id}, {id: user_4.id}, {id: user_5.id}].to_json
post "/api/follows", params: { users: users_hash }
expect(response.body.size).to eq(0)
end
it "makes successful ping" do
sign_in user
users_hash = [{id: user_2.id}, {id: user_3.id}, {id: user_4.id}, {id: user_5.id}].to_json
post "/api/follows", params: { users: users_hash }
expect(response.body).to include("outcome")
end
end
end

View file

@ -0,0 +1,16 @@
require 'rails_helper'
RSpec.describe Suggester::Articles::Boosted do
let(:user) { create(:user) }
let(:organization) { create(:organization) }
let(:tag) { create(:tag, supported: true) }
let(:article) { create(:article, tags: [tag.name], featured: true) }
let(:article_3) { create(:article, tags: [tag.name], featured: true, boosted_additional_articles: true, organization_id: organization.id) }
let(:reaction) { create(:reaction, user_id: user.id, reactable_id: article.id) }
it "returns an article" do
user.follow(tag)
article_2 = create(:article, tags: [tag.name], featured: true, boosted_additional_articles: true, organization_id: organization.id)
expect(described_class.new(user, article, {area: "additional_articles"}).suggest.id).to eq article_2.id
end
end