Files
danbooru/test/functional/bulk_update_requests_controller_test.rb
evazion b4ce2d83a6 models: remove belongs_to_creator macro.
The belongs_to_creator macro was used to initialize the creator_id field
to the CurrentUser. This made tests complicated because it meant you had
to create and set the current user every time you wanted to create an
object, when lead to the current user being set over and over again. It
also meant you had to constantly be aware of what the CurrentUser was in
many different contexts, which was often confusing. Setting creators
explicitly simplifies everything greatly.
2020-01-21 00:09:38 -06:00

96 lines
3.0 KiB
Ruby

require 'test_helper'
class BulkUpdateRequestsControllerTest < ActionDispatch::IntegrationTest
context "BulkUpdateRequestsController" do
setup do
@user = create(:user)
@admin = create(:admin_user)
@bulk_update_request = create(:bulk_update_request, user: @user)
end
context "#new" do
should "render" do
get_auth bulk_update_requests_path, @user
assert_response :success
end
end
context "#create" do
should "succeed" do
assert_difference("BulkUpdateRequest.count", 1) do
post_auth bulk_update_requests_path, @user, params: {bulk_update_request: {skip_secondary_validations: "1", script: "create alias aaa -> bbb", title: "xxx"}}
end
end
end
context "#update" do
should "still handle enabled secondary validations correctly" do
put_auth bulk_update_request_path(@bulk_update_request.id), @user, params: {bulk_update_request: {script: "create alias zzz -> 222", skip_secondary_validations: "0"}}
@bulk_update_request.reload
assert_equal("create alias zzz -> 222", @bulk_update_request.script)
end
should "still handle disabled secondary validations correctly" do
put_auth bulk_update_request_path(@bulk_update_request.id), @user, params: {bulk_update_request: {script: "create alias zzz -> 222", skip_secondary_validations: "1"}}
@bulk_update_request.reload
assert_equal("create alias zzz -> 222", @bulk_update_request.script)
end
end
context "#index" do
should "render" do
get bulk_update_requests_path
assert_response :success
end
end
context "#destroy" do
context "for the creator" do
should "succeed" do
delete_auth bulk_update_request_path(@bulk_update_request), @user
@bulk_update_request.reload
assert_equal("rejected", @bulk_update_request.status)
end
end
context "for another member" do
setup do
@another_user = create(:user)
end
should "fail" do
assert_difference("BulkUpdateRequest.count", 0) do
delete_auth bulk_update_request_path(@bulk_update_request), @another_user
end
end
end
context "for an admin" do
should "succeed" do
delete_auth bulk_update_request_path(@bulk_update_request), @admin
@bulk_update_request.reload
assert_equal("rejected", @bulk_update_request.status)
end
end
end
context "#approve" do
context "for a member" do
should "fail" do
post_auth approve_bulk_update_request_path(@bulk_update_request), @user
@bulk_update_request.reload
assert_equal("pending", @bulk_update_request.status)
end
end
context "for an admin" do
should "succeed" do
post_auth approve_bulk_update_request_path(@bulk_update_request), @admin
@bulk_update_request.reload
assert_equal("approved", @bulk_update_request.status)
end
end
end
end
end