FIX: enabling suppress_from_homepage should only remove the category from the homepage

This commit is contained in:
Régis Hanol 2016-01-20 17:55:58 +01:00
parent a601d4b4ba
commit 74b5d063f9
2 changed files with 35 additions and 7 deletions

View File

@ -54,15 +54,17 @@ class ListController < ApplicationController
list_opts.merge!(options) if options
user = list_target_user
if filter == :latest && params[:category].blank?
list_opts[:no_definitions] = true
end
if filter.to_s == current_homepage
list_opts.merge!(exclude_category_ids: get_excluded_category_ids(list_opts[:category]))
if params[:category].blank?
if filter == :latest
list_opts[:no_definitions] = true
end
if filter.to_s == current_homepage
list_opts[:exclude_category_ids] = get_excluded_category_ids(list_opts[:category])
end
end
list = TopicQuery.new(user, list_opts).public_send("list_#{filter}")
list.more_topics_url = construct_url_with(:next, list_opts)
list.prev_topics_url = construct_url_with(:prev, list_opts)
if Discourse.anonymous_filters.include?(filter)
@ -165,7 +167,7 @@ class ListController < ApplicationController
top_options[:per_page] = SiteSetting.topics_per_period_in_top_page
if "top".freeze == current_homepage
top_options.merge!(exclude_category_ids: get_excluded_category_ids(top_options[:category]))
top_options[:exclude_category_ids] = get_excluded_category_ids(top_options[:category])
end
user = list_target_user

View File

@ -248,4 +248,30 @@ describe ListController do
end
describe "categories suppression" do
let(:category_one) { Fabricate(:category) }
let(:sub_category) { Fabricate(:category, parent_category: category_one, suppress_from_homepage: true) }
let!(:topic_in_sub_category) { Fabricate(:topic, category: sub_category) }
let(:category_two) { Fabricate(:category, suppress_from_homepage: true) }
let!(:topic_in_category_two) { Fabricate(:topic, category: category_two) }
it "suppresses categories from the homepage" do
get SiteSetting.homepage, format: :json
expect(response).to be_success
topic_titles = JSON.parse(response.body)["topic_list"]["topics"].map { |t| t["title"] }
expect(topic_titles).not_to include(topic_in_sub_category.title, topic_in_category_two.title)
end
it "does not suppress" do
get SiteSetting.homepage, category: category_one.id, format: :json
expect(response).to be_success
topic_titles = JSON.parse(response.body)["topic_list"]["topics"].map { |t| t["title"] }
expect(topic_titles).to include(topic_in_sub_category.title)
end
end
end