2
0
mirror of https://github.com/moebooru/moebooru synced 2025-08-22 01:47:48 +00:00
moebooru/test/controllers/post_controller_test.rb
2021-02-11 17:04:13 +09:00

220 lines
6.5 KiB
Ruby

require "test_helper"
class PostControllerTest < ActionController::TestCase
fixtures :users
def create_post(tags, post_number = 1, params = {})
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
def update_post(post, params = {})
post.update({ :updater_user_id => 1, :updater_ip_addr => "127.0.0.1" }.merge(params))
end
def create_default_posts
p1 = create_post("tag1", 1)
p2 = create_post("tag2", 2)
p3 = create_post("tag3", 3)
p4 = create_post("tag4", 4)
[p1, p2, p3, p4]
end
def test_create
get :upload, :session => { :user_id => 3 }
assert_response :success
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))
# TODO: test duplicates
# TODO: test privileges
# TODO: test daily limits
end
def test_moderate
p1 = create_post("hoge", 1, :status => "pending")
p2 = create_post("hoge", 2)
create_post("moge", 3)
p2.flag!("sage", 1)
get :moderate, :session => { :user_id => 1 }
assert_response :success
get :moderate, :params => { :query => "moge" }, :session => { :user_id => 1 }
assert_response :success
post :moderate, :params => { :ids => { p1.id => "1" }, :commit => "Approve" }, :session => { :user_id => 1 }
p1.reload
assert_equal("active", p1.status)
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
def test_update
p1 = create_post("hoge", 1)
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
test "update with empty params" do
p1 = create_post("hoge", 1)
post :update, :params => { :id => p1.id, :format => :json }, :session => { :user_id => 3 }
assert_response :unprocessable_entity
end
def test_destroy
p1 = create_post("hoge", 1, :user_id => 3)
get :delete, :params => { :id => p1.id }, :session => { :user_id => 3 }
assert_response :success
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)
post :destroy, :params => { :id => p1.id, :reason => "sage" }, :session => { :user_id => 3 }
p1.reload
assert_equal("deleted", p1.status)
assert_not_nil(p1.flag_detail)
assert_equal("sage", p1.flag_detail.reason)
p1.undelete
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)
post :destroy, :params => { :id => p1.id, :reason => "sage", :destroy => 1 }, :session => { :user_id => 1 }
assert_nil(Post.find_by_id(p1.id))
end
def test_deleted_index
get :deleted_index, :session => { :user_id => 3 }
assert_response :success
get :deleted_index, :params => { :user_id => 1 }, :session => { :user_id => 3 }
assert_response :success
end
def test_index
create_default_posts
get :index, :session => { :user_id => 3 }
assert_response :success
get :index, :params => { :tags => "tag1" }, :session => { :user_id => 3 }
assert_response :success
get :index, :params => { :format => "json" }, :session => { :user_id => 3 }
assert_response :success
get :index, :params => { :format => "xml" }, :session => { :user_id => 3 }
assert_response :success
end
def test_atom
create_default_posts
get :atom, :params => { :format => :atom }, :session => { :user_id => 3 }
assert_response :success
get :atom, :params => { :format => :atom, :tags => "tag1" }, :session => { :user_id => 3 }
assert_response :success
end
def test_piclens
create_default_posts
get :piclens, :params => { :format => :rss }, :session => { :user_id => 3 }
assert_response :success
get :piclens, :params => { :format => :rss, :tags => "tag1" }, :session => { :user_id => 3 }
assert_response :success
end
def test_show
get :show, :params => { :id => 1 }, :session => { :user_id => 3 }
assert_response :success
end
def test_popular
get :popular_by_day, :session => { :user_id => 3 }
assert_response :success
end
def test_revert_tags
p1 = create_post("tag1", 1)
update_post(p1, :tags => "hoge")
update_post(p1, :tags => "moge")
history_id = p1.tag_history[-1].id
post :revert_tags, :params => { :id => p1.id, :history_id => history_id }, :session => { :user_id => 3 }
p1.reload
assert_equal("tag1", p1.cached_tags)
end
def test_vote
p1 = create_post("tag1", 1)
post :vote, :params => { :id => p1.id, :score => 1 }, :session => { :user_id => 3 }
p1.reload
assert_equal(1, p1.score)
p2 = create_post("tag2", 2)
post :vote, :params => { :id => p2.id, :score => 5 }, :session => { :user_id => 3 }
p2.reload
assert_equal(0, p2.score)
end
def test_flag
p1 = create_post("tag1", 1)
post :flag, :params => { :id => p1.id, :reason => "sage" }, :session => { :user_id => 3 }
p1.reload
assert_equal("flagged", p1.status)
assert_not_nil(p1.flag_detail)
assert_equal("sage", p1.flag_detail.reason)
end
def test_random
get :random, :session => { :user_id => 3 }
assert_response :redirect
end
def test_undelete
p1 = create_post("tag1", 1, :status => "deleted")
post :undelete, :params => { :id => p1.id }, :session => { :user_id => 2 }
p1.reload
assert_equal("active", p1.status)
end
test "accessing #activate without parameter doesn't fail" do
post :activate, :session => { :user_id => 2 }
assert_response :success
end
end