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:
C Çağrı Özkan 2021-01-06 20:53:06 +03:00 committed by GitHub
parent ca202b0883
commit 2b3b31a88e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 0 deletions

View file

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

View file

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

View file

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