2022-04-21 18:23:42 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
RSpec.describe UserBookmarkListSerializer do
|
2023-11-09 17:47:59 -05:00
|
|
|
fab!(:user)
|
2022-04-21 18:23:42 -04:00
|
|
|
|
|
|
|
context "for polymorphic bookmarks" do
|
|
|
|
before do
|
2022-05-08 19:37:23 -04:00
|
|
|
register_test_bookmarkable
|
2022-04-21 18:23:42 -04:00
|
|
|
Fabricate(:topic_user, user: user, topic: post_bookmark.bookmarkable.topic)
|
|
|
|
Fabricate(:topic_user, user: user, topic: topic_bookmark.bookmarkable)
|
|
|
|
user_bookmark
|
|
|
|
end
|
|
|
|
|
2023-03-07 19:39:12 -05:00
|
|
|
after { DiscoursePluginRegistry.reset! }
|
|
|
|
|
2022-04-21 18:23:42 -04:00
|
|
|
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
|
2023-07-28 07:53:46 -04:00
|
|
|
bookmark_list = UserBookmarkList.new(user: user, guardian: Guardian.new(user))
|
2022-04-21 18:23:42 -04:00
|
|
|
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
|
2024-04-17 10:23:47 -04:00
|
|
|
|
|
|
|
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
|
2022-04-21 18:23:42 -04:00
|
|
|
end
|
|
|
|
end
|