eBooru/test/unit/post_event_test.rb

132 lines
3.4 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require "test_helper"
class PostEventTest < ActiveSupport::TestCase
2022-11-26 08:02:06 -05:00
setup do
2022-01-07 06:29:11 -05:00
travel_to(1.month.ago) do
@user = create(:user)
@janitor = create(:janitor_user)
@admin = create(:admin_user)
end
2022-01-07 06:29:11 -05:00
@post2 = create(:post, uploader: @user)
@post = create(:post, uploader: @user, parent: @post2)
end
2022-01-07 06:29:11 -05:00
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
2022-01-07 06:29:11 -05:00
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
2022-05-16 08:20:11 -04:00
assert_post_events_created(@admin, :comment_locked) do
@post.is_comment_locked = true
2022-05-16 08:20:11 -04:00
@post.save
end
assert_post_events_created(@admin, :comment_unlocked) do
@post.is_comment_locked = false
2022-05-16 08:20:11 -04:00
@post.save
end
2022-01-07 06:29:11 -05:00
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
2022-01-07 06:29:11 -05:00
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!
2022-09-29 08:54:17 -04:00
@post = upload.post
@replacement = create(:png_replacement, creator: @user, post: @post)
2022-01-07 06:29:11 -05:00
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