diff --git a/app/models/post.rb b/app/models/post.rb index 9187c3ea8..aa2685c01 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -509,7 +509,7 @@ class Post < ApplicationRecord return unless tag_string_diff.present? current_tags = tag_array - diff = TagQuery.scan(tag_string_diff.downcase) + diff = TagQuery.scan(tag_string_diff) to_remove, to_add = diff.partition {|x| x =~ /\A-/i} to_remove = to_remove.map {|x| x[1..-1]} to_remove = TagAlias.to_aliased(to_remove) @@ -696,7 +696,7 @@ class Post < ApplicationRecord when /^newpool:(.+)$/i pool = Pool.find_by_name($1) if pool.nil? - pool = Pool.create(:name => $1, :description => "This pool was automatically generated") + pool = Pool.create(name: $1, description: "") end end end @@ -741,7 +741,7 @@ class Post < ApplicationRecord end when /^-pool:(.+)$/i - pool = Pool.find_by(name: $1) + pool = Pool.find_by_name($1) if pool pool.remove!(self) if pool.errors.any? @@ -759,7 +759,7 @@ class Post < ApplicationRecord end when /^(?:new)?pool:(.+)$/i - pool = Pool.find_by(name: $1) + pool = Pool.find_by_name($1) if pool pool.add!(self) if pool.errors.any? diff --git a/test/unit/post_test.rb b/test/unit/post_test.rb index 4e45acbe6..6b4008159 100644 --- a/test/unit/post_test.rb +++ b/test/unit/post_test.rb @@ -2331,6 +2331,7 @@ class PostTest < ActiveSupport::TestCase context "pool:" do setup do @pool = create(:pool) + @pool2 = create(:pool, name: "Test_Pool") @post = create(:post) end @@ -2357,6 +2358,12 @@ class PostTest < ActiveSupport::TestCase assert_equal("pool:#{@pool.id}", @post.pool_string) end + should "work with capital letters" do + @post.update(tag_string_diff: "pool:#{@pool2.name}") + assert_equal([@post.id], @pool2.reload.post_ids) + assert_equal("pool:#{@pool2.id}", @post.pool_string) + end + should "gracefully fail if the pool is full" do Danbooru.config.stubs(:pool_post_limit).returns(0) @post.update(tag_string_diff: "pool:#{@pool.name}") @@ -2379,6 +2386,17 @@ class PostTest < ActiveSupport::TestCase @pool = Pool.last assert_equal([@post.id], @pool.reload.post_ids) assert_equal("pool:#{@pool.id}", @post.pool_string) + assert_equal("test", @pool.name) + end + + should "work with capital letters" do + assert_difference("Pool.count", 1) do + @post.update(tag_string_diff: "newpool:Test2_Pool") + end + @pool = Pool.last + assert_equal([@post.id], @pool.reload.post_ids) + assert_equal("pool:#{@pool.id}", @post.pool_string) + assert_equal("Test2_Pool", @pool.name) end end end