FIX: prevents error if the associated post has been destroyed

This commit is contained in:
jjaffeux 2020-05-10 17:42:14 +02:00
parent ea0dd41046
commit cced2c8c02
2 changed files with 36 additions and 1 deletions

View File

@ -169,7 +169,7 @@ after_initialize do
end
add_to_serializer(:post, :include_event?) do
SiteSetting.discourse_post_event_enabled
SiteSetting.discourse_post_event_enabled && !object.nil? && !object.deleted_at.present?
end
on(:post_process_cooked) do |doc, post|

View File

@ -0,0 +1,35 @@
# frozen_string_literal: true
require "rails_helper"
require_relative '../../fabricators/event_fabricator'
describe PostSerializer do
before do
Jobs.run_immediately!
SiteSetting.calendar_enabled = true
SiteSetting.discourse_post_event_enabled = true
end
context 'post has an event' do
let(:user) { Fabricate(:user, admin: true) }
let(:topic_1) { Fabricate(:topic, user: user) }
let(:post_1) { Fabricate(:post, topic: topic_1) }
let!(:post_event_1) { Fabricate(:event, post: post_1) }
it 'serializes the associated event' do
json = PostSerializer.new(post_1, scope: Guardian.new).as_json
expect(json[:post][:event]).to be_present
end
context 'the post has been destroyed' do
before do
PostDestroyer.new(Discourse.system_user, post_1).destroy
end
it 'doesnt serialize the associated event' do
json = PostSerializer.new(post_1, scope: Guardian.new).as_json
expect(json[:post][:event]).to_not be_present
end
end
end
end