addresses #2674: aliases+updates should migrate saved searches
This commit is contained in:
@@ -17,6 +17,13 @@ module Moderator
|
|||||||
tags = (post.tag_array - normalized_antecedent + normalized_consequent).join(" ")
|
tags = (post.tag_array - normalized_antecedent + normalized_consequent).join(" ")
|
||||||
post.update_attributes(:tag_string => tags)
|
post.update_attributes(:tag_string => tags)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
escaped = Regexp.escape(antecedent)
|
||||||
|
SavedSearch.where("tag_query like ?", "%#{antecedent}%").find_each do |ss|
|
||||||
|
ss.tag_query = ss.tag_query.sub(/(?:^| )#{escaped}(?:$| )/, " #{consequent} ").strip.gsub(/ /, " ")
|
||||||
|
ss.save
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ class TagAlias < ActiveRecord::Base
|
|||||||
CurrentUser.scoped(admin, "127.0.0.1") do
|
CurrentUser.scoped(admin, "127.0.0.1") do
|
||||||
update_column(:status, "processing")
|
update_column(:status, "processing")
|
||||||
move_aliases_and_implications
|
move_aliases_and_implications
|
||||||
|
move_saved_searches
|
||||||
clear_all_cache
|
clear_all_cache
|
||||||
ensure_category_consistency
|
ensure_category_consistency
|
||||||
update_posts
|
update_posts
|
||||||
@@ -166,6 +167,14 @@ class TagAlias < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def move_saved_searches
|
||||||
|
escaped = Regexp.escape(antecedent_name)
|
||||||
|
SavedSearch.where("tag_query like ?", "%#{antecedent_name}%").find_each do |ss|
|
||||||
|
ss.tag_query = ss.tag_query.sub(/(?:^| )#{escaped}(?:$| )/, " #{consequent_name} ").strip.gsub(/ /, " ")
|
||||||
|
ss.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def move_aliases_and_implications
|
def move_aliases_and_implications
|
||||||
aliases = TagAlias.where(["consequent_name = ?", antecedent_name])
|
aliases = TagAlias.where(["consequent_name = ?", antecedent_name])
|
||||||
aliases.each do |ta|
|
aliases.each do |ta|
|
||||||
|
|||||||
@@ -16,14 +16,22 @@ module Moderator
|
|||||||
end
|
end
|
||||||
|
|
||||||
should "execute" do
|
should "execute" do
|
||||||
tag_batch_change = TagBatchChange.new("aaa", "bbb", @user, "127.0.0.1")
|
tag_batch_change = TagBatchChange.new("aaa", "bbb", @user.id, "127.0.0.1")
|
||||||
tag_batch_change.perform
|
tag_batch_change.perform
|
||||||
@post.reload
|
@post.reload
|
||||||
assert_equal("bbb", @post.tag_string)
|
assert_equal("bbb", @post.tag_string)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "move saved searches" do
|
||||||
|
ss = FactoryGirl.create(:saved_search, :user => @user, :tag_query => "123 ... 456")
|
||||||
|
tag_batch_change = TagBatchChange.new("...", "bbb", @user.id, "127.0.0.1")
|
||||||
|
tag_batch_change.perform
|
||||||
|
ss.reload
|
||||||
|
assert_equal("123 bbb 456", ss.tag_query)
|
||||||
|
end
|
||||||
|
|
||||||
should "raise an error if there is no predicate" do
|
should "raise an error if there is no predicate" do
|
||||||
tag_batch_change = TagBatchChange.new("", "bbb", @user, "127.0.0.1")
|
tag_batch_change = TagBatchChange.new("", "bbb", @user.id, "127.0.0.1")
|
||||||
assert_raises(TagBatchChange::Error) do
|
assert_raises(TagBatchChange::Error) do
|
||||||
tag_batch_change.perform
|
tag_batch_change.perform
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -41,6 +41,15 @@ class TagAliasTest < ActiveSupport::TestCase
|
|||||||
assert_nil(Cache.get("ta:aaa"))
|
assert_nil(Cache.get("ta:aaa"))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "move saved searches" do
|
||||||
|
tag1 = FactoryGirl.create(:tag, :name => "...")
|
||||||
|
tag2 = FactoryGirl.create(:tag, :name => "bbb")
|
||||||
|
ss = FactoryGirl.create(:saved_search, :tag_query => "123 ... 456", :user => CurrentUser.user)
|
||||||
|
ta = FactoryGirl.create(:tag_alias, :antecedent_name => "...", :consequent_name => "bbb")
|
||||||
|
ss.reload
|
||||||
|
assert_equal("123 bbb 456", ss.tag_query)
|
||||||
|
end
|
||||||
|
|
||||||
should "update any affected posts when saved" do
|
should "update any affected posts when saved" do
|
||||||
assert_equal(0, TagAlias.count)
|
assert_equal(0, TagAlias.count)
|
||||||
post1 = FactoryGirl.create(:post, :tag_string => "aaa bbb")
|
post1 = FactoryGirl.create(:post, :tag_string => "aaa bbb")
|
||||||
|
|||||||
Reference in New Issue
Block a user