mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 09:42:07 +08:00
FEATURE: Change tags sent in topic_tags_changed trigger in automation plugin (#28318)
* FEATURE: Change tags sent in topic_tags_changed trigger in discourse_automation Before, it was sending the old tags and the current tags in topic. Now, it sends the removed tags and the added tags in the topic. * DEV: update `missing_tags` to be `removed_tags` * DEV: add spacing for better readability
This commit is contained in:
parent
79f871b558
commit
157c8e660a
|
@ -206,12 +206,16 @@ module DiscourseAutomation
|
||||||
next if !watching_categories["value"].include?(topic.category_id)
|
next if !watching_categories["value"].include?(topic.category_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
removed_tags = old_tag_names - new_tag_names
|
||||||
|
added_tags = new_tag_names - old_tag_names
|
||||||
|
|
||||||
watching_tags = automation.trigger_field("watching_tags")
|
watching_tags = automation.trigger_field("watching_tags")
|
||||||
|
|
||||||
if watching_tags["value"]
|
if watching_tags["value"]
|
||||||
should_skip = false
|
should_skip = false
|
||||||
watching_tags["value"].each do |tag|
|
watching_tags["value"].each do |tag|
|
||||||
should_skip = true if !old_tag_names.empty? && !old_tag_names.include?(tag)
|
should_skip = true if !removed_tags.empty? && !removed_tags.include?(tag)
|
||||||
should_skip = true if !new_tag_names.empty? && !new_tag_names.include?(tag)
|
should_skip = true if !added_tags.empty? && !added_tags.include?(tag)
|
||||||
end
|
end
|
||||||
next if should_skip
|
next if should_skip
|
||||||
end
|
end
|
||||||
|
@ -219,8 +223,8 @@ module DiscourseAutomation
|
||||||
automation.trigger!(
|
automation.trigger!(
|
||||||
"kind" => name,
|
"kind" => name,
|
||||||
"topic" => topic,
|
"topic" => topic,
|
||||||
"removed_tags" => old_tag_names,
|
"removed_tags" => removed_tags,
|
||||||
"added_tags" => new_tag_names,
|
"added_tags" => added_tags,
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,6 +5,8 @@ describe DiscourseAutomation::Triggers::TOPIC_TAGS_CHANGED do
|
||||||
|
|
||||||
fab!(:cool_tag) { Fabricate(:tag) }
|
fab!(:cool_tag) { Fabricate(:tag) }
|
||||||
fab!(:bad_tag) { Fabricate(:tag) }
|
fab!(:bad_tag) { Fabricate(:tag) }
|
||||||
|
fab!(:another_tag) { Fabricate(:tag) }
|
||||||
|
|
||||||
fab!(:category)
|
fab!(:category)
|
||||||
|
|
||||||
fab!(:user)
|
fab!(:user)
|
||||||
|
@ -132,5 +134,41 @@ describe DiscourseAutomation::Triggers::TOPIC_TAGS_CHANGED do
|
||||||
expect(list.length).to eq(1)
|
expect(list.length).to eq(1)
|
||||||
expect(list[0]["kind"]).to eq(DiscourseAutomation::Triggers::TOPIC_TAGS_CHANGED)
|
expect(list[0]["kind"]).to eq(DiscourseAutomation::Triggers::TOPIC_TAGS_CHANGED)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should send the correct removed tags in context" do
|
||||||
|
topic_0 = Fabricate(:topic, user: user, tags: [cool_tag], category: category)
|
||||||
|
|
||||||
|
list =
|
||||||
|
capture_contexts do
|
||||||
|
DiscourseTagging.tag_topic_by_names(
|
||||||
|
topic_0,
|
||||||
|
Guardian.new(user),
|
||||||
|
[bad_tag.name, another_tag.name],
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(list.length).to eq(1)
|
||||||
|
expect(list[0]["kind"]).to eq(DiscourseAutomation::Triggers::TOPIC_TAGS_CHANGED)
|
||||||
|
expect(list[0]["added_tags"]).to eq([bad_tag.name, another_tag.name])
|
||||||
|
expect(list[0]["removed_tags"]).to eq([cool_tag.name])
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should send the correct added tags in context" do
|
||||||
|
topic_0 = Fabricate(:topic, user: user, tags: [cool_tag], category: category)
|
||||||
|
|
||||||
|
list =
|
||||||
|
capture_contexts do
|
||||||
|
DiscourseTagging.tag_topic_by_names(
|
||||||
|
topic_0,
|
||||||
|
Guardian.new(user),
|
||||||
|
[cool_tag.name, another_tag.name],
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(list.length).to eq(1)
|
||||||
|
expect(list[0]["kind"]).to eq(DiscourseAutomation::Triggers::TOPIC_TAGS_CHANGED)
|
||||||
|
expect(list[0]["added_tags"]).to eq([another_tag.name])
|
||||||
|
expect(list[0]["removed_tags"]).to eq([])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user