From 5ffd6d552a5eddb95ee15bb5c18bcbf23e8aa046 Mon Sep 17 00:00:00 2001 From: albert Date: Thu, 22 Dec 2011 18:22:32 -0500 Subject: [PATCH] fix tests --- app/controllers/moderator/tags_controller.rb | 5 ++-- app/logical/moderator/tag_batch_change.rb | 27 +++++++++----------- app/models/post_appeal.rb | 4 +-- config/danbooru_default_config.rb | 4 +++ test/unit/moderator/tag_batch_change_test.rb | 8 +++--- test/unit/post_appeal_test.rb | 3 ++- 6 files changed, 26 insertions(+), 25 deletions(-) diff --git a/app/controllers/moderator/tags_controller.rb b/app/controllers/moderator/tags_controller.rb index d97d9ffdb..7bc4bc7fd 100644 --- a/app/controllers/moderator/tags_controller.rb +++ b/app/controllers/moderator/tags_controller.rb @@ -7,9 +7,8 @@ module Moderator end def update - tag_batch_change = TagBatchChange.new(params[:tag][:antecedent], params[:tag][:consequent]) - tag_batch_change.execute - redirect_to edit_moderator_tag_path, :notice => "Posts updated" + Delayed::Job.enqueue(TagBatchChange.new(params[:tag][:antecedent], params[:tag][:consequent], CurrentUser.user, CurrentUser.ip_addr)) + redirect_to edit_moderator_tag_path, :notice => "Post changes queued" end def error diff --git a/app/logical/moderator/tag_batch_change.rb b/app/logical/moderator/tag_batch_change.rb index 835612239..08453060e 100644 --- a/app/logical/moderator/tag_batch_change.rb +++ b/app/logical/moderator/tag_batch_change.rb @@ -1,23 +1,20 @@ module Moderator - class TagBatchChange + class TagBatchChange < Struct.new(:antecedent, :consequent, :updater_id, :updater_ip_addr) class Error < Exception ; end - attr_reader :predicate, :consequent - - def initialize(predicate, consequent) - @predicate = predicate - @consequent = consequent - end - - def execute - raise Error.new("Predicate is missing") if predicate.blank? + def perform + raise Error.new("antecedent is missing") if antecedent.blank? - normalized_predicate = TagAlias.to_aliased(::Tag.scan_tags(predicate)) + normalized_antecedent = TagAlias.to_aliased(::Tag.scan_tags(antecedent)) normalized_consequent = TagAlias.to_aliased(::Tag.scan_tags(consequent)) - - ::Post.tag_match(predicate).each do |post| - tags = (post.tag_array - normalized_predicate + normalized_consequent).join(" ") - post.update_attributes(:tag_string => tags) + + updater = User.find(updater_id) + + CurrentUser.scoped(updater, updater_ip_addr) do + ::Post.tag_match(antecedent).each do |post| + tags = (post.tag_array - normalized_antecedent + normalized_consequent).join(" ") + post.update_attributes(:tag_string => tags) + end end end end diff --git a/app/models/post_appeal.rb b/app/models/post_appeal.rb index c7c407416..6c838e036 100644 --- a/app/models/post_appeal.rb +++ b/app/models/post_appeal.rb @@ -12,8 +12,8 @@ class PostAppeal < ActiveRecord::Base scope :recent, lambda {where(["created_at >= ?", 1.day.ago])} def validate_creator_is_not_limited - if appeal_count_for_creator >= 1 - errors[:creator] << "can appeal one post a day" + if appeal_count_for_creator >= Danbooru.config.max_appeals_per_day + errors[:creator] << "can appeal at most #{Danbooru.config.max_appeals_per_day} post a day" false else true diff --git a/config/danbooru_default_config.rb b/config/danbooru_default_config.rb index aa11bd47e..e2ebbbe8d 100644 --- a/config/danbooru_default_config.rb +++ b/config/danbooru_default_config.rb @@ -243,6 +243,10 @@ module Danbooru posts.select {|x| can_user_see_post?(user, x)} end + def max_appeals_per_day + 1 + end + def pixiv_login nil end diff --git a/test/unit/moderator/tag_batch_change_test.rb b/test/unit/moderator/tag_batch_change_test.rb index c547b6a45..8c6ba8512 100644 --- a/test/unit/moderator/tag_batch_change_test.rb +++ b/test/unit/moderator/tag_batch_change_test.rb @@ -16,16 +16,16 @@ module Moderator end should "execute" do - tag_batch_change = TagBatchChange.new("aaa", "bbb") - tag_batch_change.execute + tag_batch_change = TagBatchChange.new("aaa", "bbb", @user, "127.0.0.1") + tag_batch_change.perform @post.reload assert_equal("bbb", @post.tag_string) end should "raise an error if there is no predicate" do - tag_batch_change = TagBatchChange.new("", "bbb") + tag_batch_change = TagBatchChange.new("", "bbb", @user, "127.0.0.1") assert_raises(TagBatchChange::Error) do - tag_batch_change.execute + tag_batch_change.perform end end end diff --git a/test/unit/post_appeal_test.rb b/test/unit/post_appeal_test.rb index 8281a02cf..5b8922e9e 100644 --- a/test/unit/post_appeal_test.rb +++ b/test/unit/post_appeal_test.rb @@ -7,6 +7,7 @@ class PostAppealTest < ActiveSupport::TestCase CurrentUser.user = @alice CurrentUser.ip_addr = "127.0.0.1" MEMCACHE.flush_all + Danbooru.config.stubs(:max_appeals_per_day).returns(5) end teardown do @@ -37,7 +38,7 @@ class PostAppealTest < ActiveSupport::TestCase assert_difference("PostAppeal.count", 0) do @post_appeal.save end - assert_equal(["You can appeal 5 posts a day"], @post_appeal.errors.full_messages) + assert_equal(["You can appeal at most 5 post a day"], @post_appeal.errors.full_messages) end should "not be able to appeal an active post" do