FIX: group's mentions was broken (#27066)

In 1deeff2336 we changed the format of the results given by the API but we forgot to update the `#mentions` endpoint as well.

Context - https://meta.discourse.org/t/-/308044
This commit is contained in:
Régis Hanol 2024-05-17 18:39:05 +02:00 committed by GitHub
parent 501781c2e5
commit 07ecbb5a3b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 58 additions and 1 deletions

View File

@ -218,26 +218,43 @@ class GroupsController < ApplicationController
"#{SiteSetting.title} - #{I18n.t("rss_description.group_posts", group_name: group.name)}"
@link = Discourse.base_url
@description = I18n.t("rss_description.group_posts", group_name: group.name)
render "posts/latest", formats: [:rss]
end
def mentions
raise Discourse::NotFound unless SiteSetting.enable_mentions?
group = find_group(:group_id)
guardian.ensure_can_see_group_members!(group)
posts =
group.mentioned_posts_for(guardian, params.permit(:before_post_id, :category_id)).limit(20)
render_serialized posts.to_a, GroupPostSerializer
response = { posts: serialize_data(posts, GroupPostSerializer) }
if guardian.can_lazy_load_categories?
category_ids = posts.map { |p| p.topic.category_id }.compact.uniq
categories = Category.secured(guardian).with_parents(category_ids)
response[:categories] = serialize_data(categories, CategoryBadgeSerializer)
end
render json: response
end
def mentions_feed
raise Discourse::NotFound unless SiteSetting.enable_mentions?
group = find_group(:group_id)
guardian.ensure_can_see_group_members!(group)
@posts =
group.mentioned_posts_for(guardian, params.permit(:before_post_id, :category_id)).limit(50)
@title =
"#{SiteSetting.title} - #{I18n.t("rss_description.group_mentions", group_name: group.name)}"
@link = Discourse.base_url
@description = I18n.t("rss_description.group_mentions", group_name: group.name)
render "posts/latest", formats: [:rss]
end

View File

@ -526,6 +526,46 @@ RSpec.describe GroupsController do
end
end
describe "#mentions" do
it "ensures mentions are enabled" do
SiteSetting.enable_mentions = false
sign_in(user)
get "/groups/#{group.name}/mentions.json"
expect(response.status).to eq(404)
end
it "ensures the group can be seen" do
sign_in(user)
group.update!(visibility_level: Group.visibility_levels[:owners])
get "/groups/#{group.name}/mentions.json"
expect(response.status).to eq(404)
end
it "ensures the group members can be seen" do
sign_in(user)
group.update!(members_visibility_level: Group.visibility_levels[:owners])
get "/groups/#{group.name}/mentions.json"
expect(response.status).to eq(403)
end
it "returns the right response" do
post = Fabricate(:post)
GroupMention.create!(post: post, group: group)
sign_in(user)
get "/groups/#{group.name}/mentions.json"
expect(response.status).to eq(200)
expect(response.parsed_body["posts"].first["id"]).to eq(post.id)
end
end
describe "#posts" do
it "ensures the group can be seen" do
sign_in(user)