mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-27 09:36:19 -05:00
FIX: Add check to ensure post has been created.
This commit is contained in:
parent
dfdc54957c
commit
9a0797204a
2 changed files with 31 additions and 17 deletions
|
@ -546,10 +546,9 @@ class Topic < ActiveRecord::Base
|
||||||
topic_id: self.id,
|
topic_id: self.id,
|
||||||
skip_validations: true,
|
skip_validations: true,
|
||||||
custom_fields: opts[:custom_fields])
|
custom_fields: opts[:custom_fields])
|
||||||
new_post = creator.create
|
|
||||||
increment!(:moderator_posts_count) if new_post.persisted?
|
|
||||||
|
|
||||||
if new_post.present?
|
if (new_post = creator.create) && new_post.present?
|
||||||
|
increment!(:moderator_posts_count) if new_post.persisted?
|
||||||
# If we are moving posts, we want to insert the moderator post where the previous posts were
|
# If we are moving posts, we want to insert the moderator post where the previous posts were
|
||||||
# in the stream, not at the end.
|
# in the stream, not at the end.
|
||||||
new_post.update_attributes!(post_number: opts[:post_number], sort_order: opts[:post_number]) if opts[:post_number].present?
|
new_post.update_attributes!(post_number: opts[:post_number], sort_order: opts[:post_number]) if opts[:post_number].present?
|
||||||
|
|
|
@ -6,6 +6,7 @@ require_dependency 'post_destroyer'
|
||||||
describe Topic do
|
describe Topic do
|
||||||
|
|
||||||
let(:now) { Time.zone.local(2013,11,20,8,0) }
|
let(:now) { Time.zone.local(2013,11,20,8,0) }
|
||||||
|
let(:user) { Fabricate(:user) }
|
||||||
|
|
||||||
it { is_expected.to validate_presence_of :title }
|
it { is_expected.to validate_presence_of :title }
|
||||||
|
|
||||||
|
@ -312,8 +313,6 @@ describe Topic do
|
||||||
end
|
end
|
||||||
|
|
||||||
context "secure categories" do
|
context "secure categories" do
|
||||||
|
|
||||||
let(:user) { Fabricate(:user) }
|
|
||||||
let(:category) { Fabricate(:category, read_restricted: true) }
|
let(:category) { Fabricate(:category, read_restricted: true) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
@ -499,20 +498,36 @@ describe Topic do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'moderator posts' do
|
context 'moderator posts' do
|
||||||
before do
|
let(:moderator) { Fabricate(:moderator) }
|
||||||
@moderator = Fabricate(:moderator)
|
let(:topic) { Fabricate(:topic) }
|
||||||
@topic = Fabricate(:topic)
|
|
||||||
@mod_post = @topic.add_moderator_post(@moderator, "Moderator did something. http://discourse.org", post_number: 999)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'creates a moderator post' do
|
it 'creates a moderator post' do
|
||||||
expect(@mod_post).to be_present
|
mod_post = topic.add_moderator_post(
|
||||||
expect(@mod_post.post_type).to eq(Post.types[:moderator_action])
|
moderator,
|
||||||
expect(@mod_post.post_number).to eq(999)
|
"Moderator did something. http://discourse.org",
|
||||||
expect(@mod_post.sort_order).to eq(999)
|
post_number: 999
|
||||||
expect(@topic.topic_links.count).to eq(1)
|
)
|
||||||
@topic.reload
|
|
||||||
expect(@topic.moderator_posts_count).to eq(1)
|
expect(mod_post).to be_present
|
||||||
|
expect(mod_post.post_type).to eq(Post.types[:moderator_action])
|
||||||
|
expect(mod_post.post_number).to eq(999)
|
||||||
|
expect(mod_post.sort_order).to eq(999)
|
||||||
|
expect(topic.topic_links.count).to eq(1)
|
||||||
|
expect(topic.reload.moderator_posts_count).to eq(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when moderator post fails to be created" do
|
||||||
|
before do
|
||||||
|
user.toggle!(:blocked)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should not increment moderator_posts_count" do
|
||||||
|
expect(topic.moderator_posts_count).to eq(0)
|
||||||
|
|
||||||
|
topic.add_moderator_post(user, "winter is never coming")
|
||||||
|
|
||||||
|
expect(topic.moderator_posts_count).to eq(0)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue