diff --git a/app/logical/bulk_update_request_processor.rb b/app/logical/bulk_update_request_processor.rb index 332e90f3f..2b4f59cfe 100644 --- a/app/logical/bulk_update_request_processor.rb +++ b/app/logical/bulk_update_request_processor.rb @@ -15,6 +15,7 @@ class BulkUpdateRequestProcessor class Error < StandardError; end attr_reader :bulk_update_request + delegate :script, :forum_topic, to: :bulk_update_request validate :validate_script validate :validate_script_length @@ -153,6 +154,12 @@ class BulkUpdateRequestProcessor TagBatchChangeJob.perform_later(args[0], args[1]) when :nuke + # Reject existing implications from any other tag to the one we're nuking + # otherwise the tag won't be removed from posts that have those other tags + if PostQueryBuilder.new(args[0]).is_simple_tag? + TagImplication.active.where(consequent_name: args[0]).each(&:reject!) + end + TagBatchChangeJob.perform_later(args[0], "-#{args[0]}") when :rename diff --git a/test/unit/bulk_update_request_test.rb b/test/unit/bulk_update_request_test.rb index 8990f36d2..a0dc2fba1 100644 --- a/test/unit/bulk_update_request_test.rb +++ b/test/unit/bulk_update_request_test.rb @@ -320,11 +320,11 @@ class BulkUpdateRequestTest < ActiveSupport::TestCase context "the nuke command" do should "remove tags" do - @p1 = create(:post, tag_string: "foo") - @p2 = create(:post, tag_string: "bar") - @bur = create_bur!("nuke foo", @admin) + @post = create(:post, tag_string: "foo bar") + @bur1 = create_bur!("imply foo -> bar", @admin) + @bur2 = create_bur!("nuke bar", @admin) - assert_equal("tagme", @p1.reload.tag_string) + assert_equal("foo", @post.reload.tag_string) end should "remove pools" do