Skip to content

Commit 4e2c0b0

Browse files
committed
feat(admin): migrate member search to params.expect
- Convert index action to use conditional params.expect for optional member_search - Convert results action to use params.expect with nested array syntax - Add test coverage for results action - Handles optional parameters gracefully with conditional check
1 parent 1165ee6 commit 4e2c0b0

2 files changed

Lines changed: 27 additions & 4 deletions

File tree

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
class Admin::MemberSearchController < Admin::ApplicationController
22
def index
3-
member_params = params[:member_search] || {}
4-
name = member_params[:name]
3+
search_params = if params.key?(:member_search)
4+
params.expect(member_search: [:name, :callback_url])
5+
else
6+
{}
7+
end
8+
9+
callback_url = search_params[:callback_url] || params[:callback_url] || results_admin_member_search_index_path
10+
name = search_params[:name]
511
members = name.blank? ? Member.none : Member.find_members_by_name(name).select(:id, :name, :surname, :pronouns)
6-
callback_url = member_params[:callback_url] || params[:callback_url] || results_admin_member_search_index_path
12+
713
if members.size == 1
814
query = { member_pick: { members: [members.first.id] } }
915
query_string = query.to_query
@@ -15,7 +21,8 @@ def index
1521
end
1622

1723
def results
18-
members = Member.find(params[:member_pick][:members])
24+
pick_params = params.expect(member_pick: { members: [] })
25+
members = Member.find(pick_params[:members])
1926
render 'show', locals: { members: members }
2027
end
2128
end

spec/controllers/admin/member_search_controller_spec.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,20 @@
5353
end
5454
end
5555
end
56+
57+
describe 'GET #results' do
58+
context 'when user is an admin' do
59+
let(:member1) { Fabricate(:member, name: 'Alice') }
60+
let(:member2) { Fabricate(:member, name: 'Bob') }
61+
62+
before do
63+
login_as_admin(member)
64+
end
65+
66+
it 'finds members by ids using params.expect' do
67+
get :results, params: { member_pick: { members: [member1.id, member2.id] } }
68+
expect(response).to have_http_status(:ok)
69+
end
70+
end
71+
end
5672
end

0 commit comments

Comments
 (0)