# frozen_string_literal: true RSpec.describe PendingPostSerializer do subject(:serializer) { described_class.new(post, scope: guardian, root: false) } let(:guardian) { Guardian.new(author) } let(:author) { post.target_created_by } before { freeze_time } context "when creating a new topic" do let(:post) { Fabricate(:reviewable_queued_post_topic) } let(:expected_attributes) do { id: post.id, avatar_template: author.avatar_template, category_id: post.category_id, created_at: Time.current, created_by_id: author.id, name: author.name, raw_text: post.payload["raw"], title: post.payload["title"], topic_id: nil, topic_url: nil, username: author.username, } end it "serializes a pending post properly" do expect(serializer.as_json).to match expected_attributes end end context "when not creating a new topic" do let(:post) { Fabricate(:reviewable_queued_post) } let(:topic) { post.topic } let(:expected_attributes) do { id: post.id, avatar_template: author.avatar_template, category_id: post.category_id, created_at: Time.current, created_by_id: author.id, name: author.name, raw_text: post.payload["raw"], title: topic.title, topic_id: topic.id, topic_url: topic.url, username: author.username, } end it "serializes a pending post properly" do expect(serializer.as_json).to match expected_attributes end end end