diff --git a/app/controllers/categories_controller.rb b/app/controllers/categories_controller.rb index 6fb2bd07ccc..027a5ddf629 100644 --- a/app/controllers/categories_controller.rb +++ b/app/controllers/categories_controller.rb @@ -42,7 +42,8 @@ class CategoriesController < ApplicationController style = SiteSetting.desktop_category_page_style topic_options = { per_page: SiteSetting.categories_topics, - no_definitions: true + no_definitions: true, + exclude_category_ids: Category.where(suppress_from_latest: true).pluck(:id) } if style == "categories_and_latest_topics".freeze diff --git a/spec/requests/categories_controller_spec.rb b/spec/requests/categories_controller_spec.rb index 9934db2450a..9f0b113aecf 100644 --- a/spec/requests/categories_controller_spec.rb +++ b/spec/requests/categories_controller_spec.rb @@ -1,24 +1,42 @@ require 'rails_helper' -describe GroupsController do - let(:admin) { Fabricate(:admin) } - let(:category) { Fabricate(:category, user: admin) } +describe CategoriesController do - before do - category - sign_in(admin) + context 'index' do + + it 'suppresses categories correctly' do + post = create_post(title: 'super AMAZING AMAZING post') + + get "/categories" + expect(response.body).to include('AMAZING AMAZING') + + post.topic.category.update_columns(suppress_from_latest: true) + + get "/categories" + expect(response.body).not_to include('AMAZING AMAZING') + end end - it "triggers a extensibility event" do - event = DiscourseEvent.track_events { - put "/categories/#{category.id}.json", params: { - name: 'hello', - color: 'ff0', - text_color: 'fff' - } - }.last + context 'extensibility event' do + let(:admin) { Fabricate(:admin) } + let(:category) { Fabricate(:category, user: admin) } - expect(event[:event_name]).to eq(:category_updated) - expect(event[:params].first).to eq(category) + before do + category + sign_in(admin) + end + + it "triggers a extensibility event" do + event = DiscourseEvent.track_events { + put "/categories/#{category.id}.json", params: { + name: 'hello', + color: 'ff0', + text_color: 'fff' + } + }.last + + expect(event[:event_name]).to eq(:category_updated) + expect(event[:params].first).to eq(category) + end end end