* Fix a bug where creating posts failed if IQDB wasn't configured. * Fix broken Skeb test caused by changed URL. * Fix broken IP geolocation tests caused by API returning different data. * Fix broken post regeneration tests.
77 lines
2.8 KiB
Ruby
77 lines
2.8 KiB
Ruby
require 'test_helper'
|
|
|
|
class PostRegenerationsControllerTest < ActionDispatch::IntegrationTest
|
|
context "The post regenerations controller" do
|
|
setup do
|
|
@mod = create(:moderator_user, name: "yukari", created_at: 1.month.ago)
|
|
@post = create(:post_with_file, filename: "test.jpg")
|
|
perform_enqueued_jobs # add post to iqdb
|
|
end
|
|
|
|
context "create action" do
|
|
should "render" do
|
|
post_auth post_regenerations_path, @mod, params: { post_id: @post.id, category: "iqdb" }
|
|
|
|
assert_redirected_to @post
|
|
assert_enqueued_jobs(1, only: RegeneratePostJob)
|
|
end
|
|
|
|
should "not allow non-mods to regenerate posts" do
|
|
post_auth post_regenerations_path, create(:user), params: { post_id: @post.id, category: "iqdb" }
|
|
assert_response 403
|
|
end
|
|
|
|
context "for an IQDB regeneration" do
|
|
should "regenerate IQDB" do
|
|
post_auth post_regenerations_path, @mod, params: { post_id: @post.id, category: "iqdb" }
|
|
perform_enqueued_jobs
|
|
end
|
|
|
|
should "log a mod action" do
|
|
post_auth post_regenerations_path, @mod, params: { post_id: @post.id, category: "iqdb" }
|
|
perform_enqueued_jobs
|
|
|
|
assert_equal(@mod, ModAction.last.creator)
|
|
assert_equal("post_regenerate_iqdb", ModAction.last.category)
|
|
assert_equal("<@#{@mod.name}> regenerated IQDB for post ##{@post.id}", ModAction.last.description)
|
|
end
|
|
end
|
|
|
|
context "for an image sample regeneration" do
|
|
should "regenerate missing thumbnails" do
|
|
@preview_file_size = @post.media_asset.variant(:preview).open_file.size
|
|
@post.media_asset.variant(:preview).delete_file!
|
|
assert_raise(Errno::ENOENT) { @post.file(:preview) }
|
|
|
|
post_auth post_regenerations_path, @mod, params: { post_id: @post.id }
|
|
perform_enqueued_jobs
|
|
|
|
assert_equal(@preview_file_size, @post.file(:preview).size)
|
|
end
|
|
|
|
should "log a mod action" do
|
|
post_auth post_regenerations_path, @mod, params: { post_id: @post.id }
|
|
perform_enqueued_jobs
|
|
|
|
assert_equal(@mod, ModAction.last.creator)
|
|
assert_equal("post_regenerate", ModAction.last.category)
|
|
assert_equal("<@#{@mod.name}> regenerated image samples for post ##{@post.id}", ModAction.last.description)
|
|
end
|
|
|
|
should "fix the width and height of exif-rotated images" do
|
|
@post = create(:post_with_file, filename: "test-rotation-90cw.jpg")
|
|
|
|
post_auth post_regenerations_path, @mod, params: { post_id: @post.id }
|
|
perform_enqueued_jobs
|
|
@post.reload
|
|
|
|
assert_equal(96, @post.image_width)
|
|
assert_equal(128, @post.image_height)
|
|
assert_equal(96, @post.media_asset.image_width)
|
|
assert_equal(128, @post.media_asset.image_height)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|