2
0
mirror of https://github.com/moebooru/moebooru synced 2025-08-22 09:57:31 +00:00
moebooru/test/controllers/post_controller_test.rb

220 lines
6.0 KiB
Ruby
Raw Permalink Normal View History

require "test_helper"
class PostControllerTest < ActionController::TestCase
fixtures :users
def create_post(tags, post_number = 1, params = {})
2024-01-08 19:39:01 +09:00
Post.create({ user_id: 1, score: 0, source: "", rating: "s", width: 100, height: 100, ip_addr: "127.0.0.1", updater_ip_addr: "127.0.0.1", updater_user_id: 1, tags: tags, status: "active", file: upload_file("#{Rails.root}/test/mocks/test/test#{post_number}.jpg") }.merge(params))
end
2014-08-23 16:19:01 +09:00
def update_post(post, params = {})
2024-01-08 19:39:01 +09:00
post.update({ updater_user_id: 1, updater_ip_addr: "127.0.0.1" }.merge(params))
end
2014-08-23 16:19:01 +09:00
def create_default_posts
p1 = create_post("tag1", 1)
p2 = create_post("tag2", 2)
p3 = create_post("tag3", 3)
p4 = create_post("tag4", 4)
2024-01-08 19:39:01 +09:00
[ p1, p2, p3, p4 ]
end
2014-08-23 16:19:01 +09:00
def test_create
2024-01-08 19:39:01 +09:00
get :upload, session: { user_id: 3 }
assert_response :success
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
post :create, params: { post: { source: "", file: fixture_file_upload("../../mocks/test/test1.jpg"), tags: "hoge", rating: "Safe" } }
p = Post.last
assert_equal("hoge", p.cached_tags)
assert_equal("jpg", p.file_ext)
assert_equal("s", p.rating)
assert_equal(3, p.user_id)
assert_equal(true, File.exist?(p.file_path))
assert_equal(true, File.exist?(p.preview_path))
2014-08-23 16:19:01 +09:00
# TODO: test duplicates
# TODO: test privileges
# TODO: test daily limits
end
2014-08-23 16:19:01 +09:00
def test_moderate
2024-01-08 19:39:01 +09:00
p1 = create_post("hoge", 1, status: "pending")
p2 = create_post("hoge", 2)
create_post("moge", 3)
2014-08-23 16:19:01 +09:00
p2.flag!("sage", 1)
2024-01-08 19:39:01 +09:00
get :moderate, session: { user_id: 1 }
assert_response :success
2024-01-08 19:39:01 +09:00
get :moderate, params: { query: "moge" }, session: { user_id: 1 }
assert_response :success
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
post :moderate, params: { ids: { p1.id => "1" }, commit: "Approve" }, session: { user_id: 1 }
p1.reload
assert_equal("active", p1.status)
2024-01-08 19:39:01 +09:00
post :moderate, params: { ids: { p2.id => "1" }, reason: "sage", commit: "Delete" }, session: { user_id: 1 }
p2.reload
assert_equal("deleted", p2.status)
assert_not_nil(p2.flag_detail)
assert_equal("sage", p2.flag_detail.reason)
end
2014-08-23 16:19:01 +09:00
def test_update
p1 = create_post("hoge", 1)
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
post :update, params: { post: { tags: "moge", rating: "Explicit" }, id: p1.id }, session: { user_id: 3 }
p1.reload
assert_equal("moge", p1.cached_tags)
assert_equal("e", p1.rating)
end
2014-08-23 16:19:01 +09:00
test "update with empty params" do
p1 = create_post("hoge", 1)
2024-01-08 19:39:01 +09:00
post :update, params: { id: p1.id, format: :json }, session: { user_id: 3 }
assert_response :unprocessable_entity
end
def test_destroy
2024-01-08 19:39:01 +09:00
p1 = create_post("hoge", 1, user_id: 3)
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
get :delete, params: { id: p1.id }, session: { user_id: 3 }
assert_response :success
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
post :destroy, params: { id: p1.id, reason: "sage" }, session: { user_id: 4 }
assert_redirected_to controller: "user", action: "login"
p1.reload
assert_equal("active", p1.status)
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
post :destroy, params: { id: p1.id, reason: "sage" }, session: { user_id: 3 }
p1.reload
2017-03-02 13:00:50 +09:00
assert_equal("deleted", p1.status)
assert_not_nil(p1.flag_detail)
assert_equal("sage", p1.flag_detail.reason)
p1.undelete
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
post :destroy, params: { id: p1.id, reason: "sage" }, session: { user_id: 1 }
p1.reload
assert_equal("deleted", p1.status)
assert_not_nil(p1.flag_detail)
assert_equal("sage", p1.flag_detail.reason)
2024-01-08 19:39:01 +09:00
post :destroy, params: { id: p1.id, reason: "sage", destroy: 1 }, session: { user_id: 1 }
assert_nil(Post.find_by_id(p1.id))
end
2014-08-23 16:19:01 +09:00
def test_deleted_index
2024-01-08 19:39:01 +09:00
get :deleted_index, session: { user_id: 3 }
assert_response :success
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
get :deleted_index, params: { user_id: 1 }, session: { user_id: 3 }
assert_response :success
end
2014-08-23 16:19:01 +09:00
def test_index
create_default_posts
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
get :index, session: { user_id: 3 }
assert_response :success
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
get :index, params: { tags: "tag1" }, session: { user_id: 3 }
assert_response :success
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
get :index, params: { format: "json" }, session: { user_id: 3 }
assert_response :success
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
get :index, params: { format: "xml" }, session: { user_id: 3 }
assert_response :success
end
2014-08-23 16:19:01 +09:00
def test_atom
create_default_posts
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
get :atom, params: { format: :atom }, session: { user_id: 3 }
assert_response :success
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
get :atom, params: { format: :atom, tags: "tag1" }, session: { user_id: 3 }
assert_response :success
end
2014-08-23 16:19:01 +09:00
def test_piclens
create_default_posts
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
get :piclens, params: { format: :rss }, session: { user_id: 3 }
assert_response :success
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
get :piclens, params: { format: :rss, tags: "tag1" }, session: { user_id: 3 }
assert_response :success
end
2014-08-23 16:19:01 +09:00
def test_show
2024-01-08 19:39:01 +09:00
get :show, params: { id: 1 }, session: { user_id: 3 }
assert_response :success
end
2014-08-23 16:19:01 +09:00
def test_popular
2024-01-08 19:39:01 +09:00
get :popular_by_day, session: { user_id: 3 }
assert_response :success
end
2014-08-23 16:19:01 +09:00
def test_revert_tags
p1 = create_post("tag1", 1)
2024-01-08 19:39:01 +09:00
update_post(p1, tags: "hoge")
update_post(p1, tags: "moge")
2014-08-23 16:19:01 +09:00
history_id = p1.tag_history[-1].id
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
post :revert_tags, params: { id: p1.id, history_id: history_id }, session: { user_id: 3 }
p1.reload
assert_equal("tag1", p1.cached_tags)
end
2014-08-23 16:19:01 +09:00
def test_vote
p1 = create_post("tag1", 1)
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
post :vote, params: { id: p1.id, score: 1 }, session: { user_id: 3 }
p1.reload
assert_equal(1, p1.score)
2014-08-23 16:19:01 +09:00
p2 = create_post("tag2", 2)
2024-01-08 19:39:01 +09:00
post :vote, params: { id: p2.id, score: 5 }, session: { user_id: 3 }
p2.reload
assert_equal(0, p2.score)
end
2014-08-23 16:19:01 +09:00
def test_flag
p1 = create_post("tag1", 1)
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
post :flag, params: { id: p1.id, reason: "sage" }, session: { user_id: 3 }
2014-08-23 16:19:01 +09:00
p1.reload
assert_equal("flagged", p1.status)
assert_not_nil(p1.flag_detail)
assert_equal("sage", p1.flag_detail.reason)
end
2014-08-23 16:19:01 +09:00
def test_random
2024-01-08 19:39:01 +09:00
get :random, session: { user_id: 3 }
assert_response :redirect
end
2014-08-23 16:19:01 +09:00
def test_undelete
2024-01-08 19:39:01 +09:00
p1 = create_post("tag1", 1, status: "deleted")
2014-08-23 16:19:01 +09:00
2024-01-08 19:39:01 +09:00
post :undelete, params: { id: p1.id }, session: { user_id: 2 }
2014-08-23 16:19:01 +09:00
p1.reload
assert_equal("active", p1.status)
end
2015-06-17 15:04:48 +09:00
test "accessing #activate without parameter doesn't fail" do
2024-01-08 19:39:01 +09:00
post :activate, session: { user_id: 2 }
2015-06-17 15:04:48 +09:00
assert_response :success
end
end