Fix boosted posts and add spec (#521)
This commit is contained in:
parent
6bae46fbbf
commit
71c94b6546
4 changed files with 57 additions and 5 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
23
spec/requests/follows_api_spec.rb
Normal file
23
spec/requests/follows_api_spec.rb
Normal 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
|
||||
16
spec/services/suggester/articles/boosted_spec.rb
Normal file
16
spec/services/suggester/articles/boosted_spec.rb
Normal 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
|
||||
Loading…
Add table
Reference in a new issue