Files
fizzy/test/controllers/users_controller_test.rb
T
Jorge Manrubia 540254def4 Fix tests after removing the index action
The show action makes more sense in the controller. Also, the filter
scoped was failing due to Rails raising on missing actions (because we
have deleted the index action). Inlining the concern fixes it and clarifies
where this action is implemented.
2025-06-05 09:12:07 +02:00

73 lines
1.8 KiB
Ruby

require "test_helper"
class UsersControllerTest < ActionDispatch::IntegrationTest
test "new" do
get new_user_path(params: { join_code: "bad" })
assert_response :forbidden
get new_user_path(params: { join_code: accounts(:"37s").join_code })
assert_response :ok
end
test "create" do
assert_difference -> { User.active.count }, +1 do
post users_path(params: { join_code: accounts(:"37s").join_code }),
params: { user: { name: "Dash", email_address: "dash@example.com", password: "123" } }
assert_redirected_to root_path
end
follow_redirect!
assert_response :ok
end
test "show" do
sign_in_as :kevin
get user_path(users(:david))
assert_in_body users(:david).name
end
test "update oneself" do
sign_in_as :kevin
get edit_user_path(users(:kevin))
assert_response :ok
put user_path(users(:kevin)), params: { user: { name: "New Kevin" } }
assert_redirected_to user_path(users(:kevin))
assert_equal "New Kevin", users(:kevin).reload.name
end
test "update other as admin" do
sign_in_as :kevin
get edit_user_path(users(:david))
assert_response :ok
put user_path(users(:david)), params: { user: { name: "New David" } }
assert_redirected_to user_path(users(:david))
assert_equal "New David", users(:david).reload.name
end
test "destroy" do
sign_in_as :kevin
assert_difference -> { User.active.count }, -1 do
delete user_path(users(:david))
end
assert_redirected_to users_path
assert_nil User.active.find_by(id: users(:david).id)
end
test "non-admins cannot perform actions" do
sign_in_as :jz
put user_path(users(:david)), params: { user: { role: "admin" } }
assert_response :forbidden
delete user_path(users(:david))
assert_response :forbidden
end
end