diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 462ae01..dda9d83 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -3,7 +3,9 @@ class AccountsController < ApplicationController before_action :set_account def edit - set_page_and_extract_portion_from account_users.ordered, per_page: 500 + users = account_users.ordered.without_bots + @administrators, @members = users.partition(&:administrator?) + set_page_and_extract_portion_from users, per_page: 500 end def update diff --git a/app/views/accounts/edit.html.erb b/app/views/accounts/edit.html.erb index 1f9f868..cfa750d 100644 --- a/app/views/accounts/edit.html.erb +++ b/app/views/accounts/edit.html.erb @@ -100,7 +100,13 @@
diff --git a/test/controllers/accounts_controller_test.rb b/test/controllers/accounts_controller_test.rb index 5475f60..8292c6f 100644 --- a/test/controllers/accounts_controller_test.rb +++ b/test/controllers/accounts_controller_test.rb @@ -10,6 +10,38 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest assert_response :ok 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("#{name}") + 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("#{name}") + 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?