discourse/spec/serializers/web_hook_post_serializer_spec.rb
Daniel Waterworth 6e161d3e75
DEV: Allow fab! without block (#24314)
The most common thing that we do with fab! is:

    fab!(:thing) { Fabricate(:thing) }

This commit adds a shorthand for this which is just simply:

    fab!(:thing)

i.e. If you omit the block, then, by default, you'll get a `Fabricate`d object using the fabricator of the same name.
2023-11-09 16:47:59 -06:00

78 lines
1.7 KiB
Ruby

# frozen_string_literal: true
RSpec.describe WebHookPostSerializer do
fab!(:admin)
fab!(:post)
def serialized_for_user(u)
WebHookPostSerializer.new(post, scope: Guardian.new(u), root: false).as_json
end
it "should only include the required keys" do
expect(serialized_for_user(admin).keys).to contain_exactly(
:id,
:name,
:username,
:avatar_template,
:created_at,
:cooked,
:post_number,
:post_type,
:updated_at,
:reply_count,
:reply_to_post_number,
:quote_count,
:incoming_link_count,
:reads,
:score,
:topic_id,
:topic_slug,
:topic_title,
:category_id,
:display_username,
:primary_group_name,
:flair_name,
:flair_group_id,
:version,
:user_title,
:bookmarked,
:raw,
:moderator,
:admin,
:staff,
:user_id,
:hidden,
:trust_level,
:deleted_at,
:user_deleted,
:edit_reason,
:wiki,
:reviewable_id,
:reviewable_score_count,
:reviewable_score_pending_count,
:topic_posts_count,
:topic_filtered_posts_count,
:topic_archetype,
:category_slug,
)
end
it "includes category_id" do
expect(serialized_for_user(admin)[:category_id]).to eq(post.topic.category_id)
end
it "should only include deleted topic title for staffs" do
topic = post.topic
PostDestroyer.new(Discourse.system_user, post).destroy
post.reload
[nil, post.user, Fabricate(:user)].each do |user|
expect(serialized_for_user(user)[:topic_title]).to eq(nil)
end
[Fabricate(:moderator), admin].each do |user|
expect(serialized_for_user(user)[:topic_title]).to eq(topic.title)
end
end
end