Add ability to get latest articles on RSS feed (#11956)
* Add query string option for filtering latest articles * Show last featured articles on /feed/latest * Add handle_latest_feed method * Add support for page query * Use better naming * Use functionailty of LargeForemExperimental#latest_feed instead of calling the service * Include 'not featured articles' on feed * Cleanup
This commit is contained in:
parent
ca202b0883
commit
2b3b31a88e
3 changed files with 20 additions and 0 deletions
|
|
@ -26,6 +26,9 @@ class ArticlesController < ApplicationController
|
|||
handle_user_or_organization_feed
|
||||
elsif params[:tag]
|
||||
handle_tag_feed
|
||||
elsif request.path == latest_feed_path
|
||||
@articles.where("score > ?", Articles::Feeds::LargeForemExperimental::MINIMUM_SCORE_LATEST_FEED)
|
||||
.includes(:user)
|
||||
else
|
||||
@articles.where(featured: true).includes(:user)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -495,6 +495,7 @@ Rails.application.routes.draw do
|
|||
|
||||
get "/feed" => "articles#feed", :as => "feed", :defaults => { format: "rss" }
|
||||
get "/feed/tag/:tag" => "articles#feed", :as => "tag_feed", :defaults => { format: "rss" }
|
||||
get "/feed/latest" => "articles#feed", :as => "latest_feed", :defaults => { format: "rss" }
|
||||
get "/feed/:username" => "articles#feed", :as => "user_feed", :defaults => { format: "rss" }
|
||||
get "/rss" => "articles#feed", :defaults => { format: "rss" }
|
||||
|
||||
|
|
|
|||
|
|
@ -159,6 +159,22 @@ RSpec.describe "Articles", type: :request do
|
|||
end
|
||||
end
|
||||
|
||||
describe "GET /feed/latest" do
|
||||
let!(:last_article) { create(:article, featured: true) }
|
||||
let!(:not_featured_article) { create(:article, featured: false) }
|
||||
let!(:article_with_low_score) do
|
||||
create(:article, score: Articles::Feeds::LargeForemExperimental::MINIMUM_SCORE_LATEST_FEED)
|
||||
end
|
||||
|
||||
before { get "/feed/latest" }
|
||||
|
||||
it "contains latest articles" do
|
||||
expect(response.body).to include(last_article.title)
|
||||
expect(response.body).to include(not_featured_article.title)
|
||||
expect(response.body).not_to include(article_with_low_score.title)
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET /feed/tag" do
|
||||
context "when :tag param is given and tag exists" do
|
||||
before do
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue