mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-06 23:00:11 +09:00
1cb2f69786
Rails main compiles HTML templates through Herb under the 8.2 framework
defaults, which Campfire loads. Herb rejects `case` and its first `when`
in a single ERB tag, so the three pwa/ partials failed to compile, and
`herb:check` rejects ERB output in attribute names, which the account
settings' switch used for `checked`. Give `case` its own tag and build
the switch with tag.input; both render the same under Erubi.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 244e77241b)
72 lines
2.3 KiB
Ruby
72 lines
2.3 KiB
Ruby
require "test_helper"
|
|
|
|
class AccountsControllerTest < ActionDispatch::IntegrationTest
|
|
setup do
|
|
sign_in :david
|
|
end
|
|
|
|
test "edit" do
|
|
get edit_account_url
|
|
assert_response :ok
|
|
end
|
|
|
|
test "edit shows whether room creation is restricted to administrators" do
|
|
get edit_account_url
|
|
assert_select "label.switch input.switch__input[type=checkbox]:not([checked])"
|
|
|
|
accounts(:signal).update!(settings: { restrict_room_creation_to_administrators: true })
|
|
|
|
get edit_account_url
|
|
assert_select "label.switch input.switch__input[type=checkbox][checked][data-action='change->form#submit']"
|
|
end
|
|
|
|
test "edit groups administrators separately from members with a divider" do
|
|
get edit_account_url
|
|
|
|
assert_response :ok
|
|
|
|
# Verify the divider exists between administrator and member sections
|
|
assert_select "turbo-frame#account_users hr.separator.full-width"
|
|
|
|
# Verify administrators appear before the divider and members appear after
|
|
# by checking the order of user names in the response body
|
|
administrators = users(:david, :jason).map(&:name)
|
|
members = users(:jz, :kevin).map(&:name)
|
|
|
|
response_body = response.body
|
|
|
|
# Find positions of divider and user names
|
|
divider_position = response_body.index('hr class="separator full-width"')
|
|
assert divider_position, "Divider should exist in the response"
|
|
|
|
administrators.each do |name|
|
|
name_position = response_body.index("<strong>#{name}</strong>")
|
|
assert name_position, "Administrator #{name} should appear in the response"
|
|
assert name_position < divider_position, "Administrator #{name} should appear before the divider"
|
|
end
|
|
|
|
members.each do |name|
|
|
name_position = response_body.index("<strong>#{name}</strong>")
|
|
assert name_position, "Member #{name} should appear in the response"
|
|
assert name_position > divider_position, "Member #{name} should appear after the divider"
|
|
end
|
|
end
|
|
|
|
test "update" do
|
|
assert users(:david).administrator?
|
|
|
|
put account_url, params: { account: { name: "Different" } }
|
|
|
|
assert_redirected_to edit_account_url
|
|
assert_equal accounts(:signal).name, "Different"
|
|
end
|
|
|
|
test "non-admins cannot update" do
|
|
sign_in :kevin
|
|
assert users(:kevin).member?
|
|
|
|
put account_url, params: { account: { name: "Different" } }
|
|
assert_response :forbidden
|
|
end
|
|
end
|