forked from e621ng/e621ng
132 lines
3.4 KiB
Ruby
132 lines
3.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "test_helper"
|
|
|
|
class PostEventTest < ActiveSupport::TestCase
|
|
setup do
|
|
travel_to(1.month.ago) do
|
|
@user = create(:user)
|
|
@janitor = create(:janitor_user)
|
|
@admin = create(:admin_user)
|
|
end
|
|
|
|
@post2 = create(:post, uploader: @user)
|
|
@post = create(:post, uploader: @user, parent: @post2)
|
|
end
|
|
|
|
def assert_post_events_created(user, events, &block)
|
|
count = Array.wrap(events).count
|
|
as user do
|
|
assert_difference(-> { PostEvent.count }, count, &block)
|
|
assert_equal Array.wrap(events).map(&:to_s), PostEvent.last(count).map(&:action)
|
|
end
|
|
end
|
|
|
|
context "certain actions" do
|
|
should "create a post event" do
|
|
assert_post_events_created(@janitor, :approved) do
|
|
@post.approve!(@janitor)
|
|
end
|
|
|
|
assert_post_events_created(@janitor, :unapproved) do
|
|
@post.unapprove!
|
|
end
|
|
|
|
assert_post_events_created(@user, :flag_created) do
|
|
create(:post_flag, post: @post)
|
|
end
|
|
|
|
assert_post_events_created(@janitor, :flag_removed) do
|
|
@post.unflag!
|
|
end
|
|
|
|
assert_post_events_created(@janitor, :deleted) do
|
|
@post.delete!("reason")
|
|
end
|
|
|
|
assert_post_events_created(@janitor, :undeleted) do
|
|
@post.undelete!
|
|
end
|
|
|
|
assert_post_events_created(@janitor, [:favorites_moved, :favorites_received]) do
|
|
TransferFavoritesJob.new.perform @post.id, @janitor.id
|
|
end
|
|
|
|
assert_post_events_created(@admin, :rating_locked) do
|
|
@post.is_rating_locked = true
|
|
@post.save
|
|
end
|
|
|
|
assert_post_events_created(@admin, :rating_unlocked) do
|
|
@post.is_rating_locked = false
|
|
@post.save
|
|
end
|
|
|
|
assert_post_events_created(@admin, :status_locked) do
|
|
@post.is_status_locked = true
|
|
@post.save
|
|
end
|
|
|
|
assert_post_events_created(@admin, :status_unlocked) do
|
|
@post.is_status_locked = false
|
|
@post.save
|
|
end
|
|
|
|
assert_post_events_created(@admin, :comment_locked) do
|
|
@post.is_comment_locked = true
|
|
@post.save
|
|
end
|
|
|
|
assert_post_events_created(@admin, :comment_unlocked) do
|
|
@post.is_comment_locked = false
|
|
@post.save
|
|
end
|
|
|
|
assert_post_events_created(@admin, :note_locked) do
|
|
@post.is_note_locked = true
|
|
@post.save
|
|
end
|
|
|
|
assert_post_events_created(@admin, :note_unlocked) do
|
|
@post.is_note_locked = false
|
|
@post.save
|
|
end
|
|
|
|
assert_post_events_created(@janitor, :changed_bg_color) do
|
|
@post.bg_color = "FFFFFF"
|
|
@post.save
|
|
end
|
|
|
|
assert_post_events_created(@admin, :expunged) do
|
|
@post.expunge!
|
|
end
|
|
end
|
|
|
|
context "replacements" do
|
|
setup do
|
|
upload = UploadService.new(attributes_for(:upload).merge(file: fixture_file_upload("test.gif"), uploader: @user, tag_string: "tst")).start!
|
|
@post = upload.post
|
|
@replacement = create(:png_replacement, creator: @user, post: @post)
|
|
end
|
|
|
|
should "reject" do
|
|
assert_post_events_created(@admin, :replacement_rejected) do
|
|
@replacement.reject!
|
|
end
|
|
end
|
|
|
|
should "approve" do
|
|
assert_post_events_created(@admin, :replacement_accepted) do
|
|
@replacement.approve! penalize_current_uploader: true
|
|
end
|
|
end
|
|
|
|
should "destroy" do
|
|
assert_post_events_created(@admin, :replacement_deleted) do
|
|
@replacement.destroy!
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|