forked from fixin.me/fixin.me
Test infrastructure: - Allow www.example.com host in test env (ActionDispatch::HostAuthorization was blocking all integration test requests) - Include Devise::Test::IntegrationHelpers in ActionDispatch::IntegrationTest so tests can sign in with sign_in(user) Controller tests: - Rewrite UsersControllerTest to match actual routes/actions (no new/create/ edit/destroy); sign in as admin; test update-self rejection via turbo_stream - Fix Default::UnitsControllerTest to sign in before requesting the index SQLite compatibility in Unit#defaults_diff: - Hoist the inner "units" CTE to the outer WITH RECURSIVE level (fixes nested WITH syntax error) — this was the existing TODO in the code - Use Unit.joins(...) for the recursive part instead of a raw Arel::SelectManager so the SQLite visitor does not wrap it in parentheses inside UNION ALL - Drop the named "units" CTE (conflicts with the table name under WITH RECURSIVE in SQLite); apply the user/defaults scope directly on the base case - Qualify GROUP BY columns to avoid ambiguity when bases_units is joined - Qualify ORDER BY :multiplier/:symbol to avoid ambiguity (Unit.ordering) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
37 lines
840 B
Ruby
37 lines
840 B
Ruby
require "test_helper"
|
|
|
|
class UsersControllerTest < ActionDispatch::IntegrationTest
|
|
setup do
|
|
@admin = users(:admin)
|
|
@user = users(:alice)
|
|
sign_in @admin
|
|
end
|
|
|
|
test "should get index" do
|
|
get users_url
|
|
assert_response :success
|
|
end
|
|
|
|
test "should show user" do
|
|
get user_url(@user)
|
|
assert_response :success
|
|
end
|
|
|
|
test "should update user" do
|
|
patch user_url(@user), params: { user: { status: :restricted } }, as: :turbo_stream
|
|
assert_equal "restricted", @user.reload.status
|
|
end
|
|
|
|
test "should not update self" do
|
|
patch user_url(@admin), params: { user: { status: :active } }, as: :turbo_stream,
|
|
headers: { "HTTP_REFERER" => users_url }
|
|
assert_response :redirect
|
|
end
|
|
|
|
test "should forbid non-admin" do
|
|
sign_in @user
|
|
get users_url
|
|
assert_response :forbidden
|
|
end
|
|
end
|