BURs: don't update OP when approving BUR.
When approving or rejecting a BUR, don't edit the OP forum post to add an EDIT: line stating the request has been approved. Instead just let the embedded BUR state who it was approved by, and post a reply saying that the request has been approved.
This commit is contained in:
@@ -109,7 +109,7 @@ class DText
|
|||||||
end
|
end
|
||||||
|
|
||||||
if obj.is_approved?
|
if obj.is_approved?
|
||||||
"The \"bulk update request ##{obj.id}\":/bulk_update_requests/#{obj.id} is active.\n\n#{embedded_script}"
|
"The \"bulk update request ##{obj.id}\":/bulk_update_requests/#{obj.id} has been approved by <@#{obj.approver.pretty_name}>.\n\n#{embedded_script}"
|
||||||
elsif obj.is_pending?
|
elsif obj.is_pending?
|
||||||
"The \"bulk update request ##{obj.id}\":/bulk_update_requests/#{obj.id} is pending approval.\n\n#{embedded_script}"
|
"The \"bulk update request ##{obj.id}\":/bulk_update_requests/#{obj.id} is pending approval.\n\n#{embedded_script}"
|
||||||
elsif obj.is_rejected?
|
elsif obj.is_rejected?
|
||||||
|
|||||||
@@ -1,28 +1,13 @@
|
|||||||
class ForumUpdater
|
class ForumUpdater
|
||||||
attr_reader :forum_topic, :forum_post
|
attr_reader :forum_topic
|
||||||
|
|
||||||
def initialize(forum_topic, options = {})
|
def initialize(forum_topic)
|
||||||
@forum_topic = forum_topic
|
@forum_topic = forum_topic
|
||||||
@forum_post = options[:forum_post]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def update(message)
|
def update(message)
|
||||||
return if forum_topic.nil?
|
|
||||||
|
|
||||||
CurrentUser.scoped(User.system) do
|
CurrentUser.scoped(User.system) do
|
||||||
create_response(message)
|
forum_topic.forum_posts.create(body: message, skip_mention_notifications: true, creator: User.system)
|
||||||
|
|
||||||
if forum_post
|
|
||||||
update_post(message)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_response(body)
|
|
||||||
forum_topic.forum_posts.create(body: body, skip_mention_notifications: true, creator: User.system)
|
|
||||||
end
|
|
||||||
|
|
||||||
def update_post(body)
|
|
||||||
forum_post.update(body: "#{forum_post.body}\n\nEDIT: #{body}", skip_mention_notifications: true)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -60,14 +60,7 @@ class BulkUpdateRequest < ApplicationRecord
|
|||||||
|
|
||||||
module ApprovalMethods
|
module ApprovalMethods
|
||||||
def forum_updater
|
def forum_updater
|
||||||
@forum_updater ||= begin
|
@forum_updater ||= ForumUpdater.new(forum_topic)
|
||||||
post = if forum_topic
|
|
||||||
forum_post || forum_topic.forum_posts.first
|
|
||||||
else
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
ForumUpdater.new(forum_topic, forum_post: post)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def approve!(approver)
|
def approve!(approver)
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class BulkUpdateRequestPrunerTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
BulkUpdateRequestPruner.reject_expired
|
BulkUpdateRequestPruner.reject_expired
|
||||||
assert_equal("rejected", bur.reload.status)
|
assert_equal("rejected", bur.reload.status)
|
||||||
assert_match(/rejected because it was not approved within 60 days/, bur.forum_post.body)
|
assert_match(/rejected because it was not approved within 60 days/, ForumPost.second.body)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -422,10 +422,6 @@ class BulkUpdateRequestTest < ActiveSupport::TestCase
|
|||||||
@ti = TagImplication.where(:antecedent_name => "bar", :consequent_name => "baz").first
|
@ti = TagImplication.where(:antecedent_name => "bar", :consequent_name => "baz").first
|
||||||
end
|
end
|
||||||
|
|
||||||
should "reference the approver in the automated message" do
|
|
||||||
assert_match(Regexp.compile(@admin.name), @bur.forum_post.body)
|
|
||||||
end
|
|
||||||
|
|
||||||
should "set the BUR approver" do
|
should "set the BUR approver" do
|
||||||
assert_equal(@admin.id, @bur.approver.id)
|
assert_equal(@admin.id, @bur.approver.id)
|
||||||
end
|
end
|
||||||
@@ -481,29 +477,6 @@ class BulkUpdateRequestTest < ActiveSupport::TestCase
|
|||||||
assert_equal("pending", @req.status)
|
assert_equal("pending", @req.status)
|
||||||
end
|
end
|
||||||
|
|
||||||
should "update the topic when processed" do
|
|
||||||
assert_difference("ForumPost.count") do
|
|
||||||
@req.approve!(@admin)
|
|
||||||
end
|
|
||||||
|
|
||||||
assert_match(/approved/, @post.reload.body)
|
|
||||||
end
|
|
||||||
|
|
||||||
should "update the topic when rejected" do
|
|
||||||
@req.approver_id = @admin.id
|
|
||||||
|
|
||||||
assert_difference("ForumPost.count") do
|
|
||||||
@req.reject!(@admin)
|
|
||||||
end
|
|
||||||
|
|
||||||
assert_match(/rejected/, @post.reload.body)
|
|
||||||
end
|
|
||||||
|
|
||||||
should "reference the rejector in the automated message" do
|
|
||||||
@req.reject!(@admin)
|
|
||||||
assert_match(Regexp.compile(@admin.name), @req.forum_post.body)
|
|
||||||
end
|
|
||||||
|
|
||||||
should "not send @mention dmails to the approver" do
|
should "not send @mention dmails to the approver" do
|
||||||
assert_no_difference("Dmail.count") do
|
assert_no_difference("Dmail.count") do
|
||||||
@req.approve!(@admin)
|
@req.approve!(@admin)
|
||||||
|
|||||||
Reference in New Issue
Block a user