mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-24 06:29:24 +08:00
This is necessary when "lazy load categories" feature is enabled to make sure the categories are rendered for topics and posts.
44 lines
1.6 KiB
Ruby
Vendored
44 lines
1.6 KiB
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
RSpec.describe UserBookmarkListSerializer do
|
|
fab!(:user)
|
|
|
|
context "for polymorphic bookmarks" do
|
|
before do
|
|
register_test_bookmarkable
|
|
Fabricate(:topic_user, user: user, topic: post_bookmark.bookmarkable.topic)
|
|
Fabricate(:topic_user, user: user, topic: topic_bookmark.bookmarkable)
|
|
user_bookmark
|
|
end
|
|
|
|
after { DiscoursePluginRegistry.reset! }
|
|
|
|
let(:post_bookmark) { Fabricate(:bookmark, user: user, bookmarkable: Fabricate(:post)) }
|
|
let(:topic_bookmark) { Fabricate(:bookmark, user: user, bookmarkable: Fabricate(:topic)) }
|
|
let(:user_bookmark) { Fabricate(:bookmark, user: user, bookmarkable: Fabricate(:user)) }
|
|
|
|
def run_serializer
|
|
bookmark_list = UserBookmarkList.new(user: user, guardian: Guardian.new(user))
|
|
bookmark_list.load
|
|
UserBookmarkListSerializer.new(bookmark_list)
|
|
end
|
|
|
|
it "chooses the correct class of serializer for all the bookmarkable types" do
|
|
serializer = run_serializer
|
|
expect(serializer.bookmarks.map(&:class).map(&:to_s)).to match_array(
|
|
%w[UserTestBookmarkSerializer UserTopicBookmarkSerializer UserPostBookmarkSerializer],
|
|
)
|
|
end
|
|
|
|
it "serializes categories" do
|
|
topic_category = Fabricate(:category)
|
|
topic_bookmark.bookmarkable.update!(category: topic_category)
|
|
post_category = Fabricate(:category)
|
|
post_bookmark.bookmarkable.topic.update!(category: post_category)
|
|
|
|
serializer = run_serializer
|
|
|
|
expect(serializer.categories).to contain_exactly(topic_category, post_category)
|
|
end
|
|
end
|
|
end
|