Skip to content

Commit 856ab89

Browse files
committed
Add first passing test
Should have started with this! This adds the first test, which surfaced a load of things I'd not done properly. These are now fixed and the test is green
1 parent 6919fe1 commit 856ab89

File tree

5 files changed

+19
-31
lines changed

5 files changed

+19
-31
lines changed

app/controllers/admin/member_search_controller.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@ def index
55
@members = @name.blank? ? Member.none : Member.find_members(@name).select(:id, :name, :surname, :pronouns)
66
@callback_url = @params[:callback] || results_admin_member_search_index_path
77
if (@members.size == 1) && @callback_url.present?
8-
return redirect_to @callback_url, member_id: @members.first.id
8+
query = { member_pick: { members: [@members.pluck(:id)] } }
9+
query_string = query.to_query
10+
@callback_url = "#{@callback_url}?#{query_string}"
11+
redirect_to @callback_url and return
912
end
1013

1114
render 'index', locals: { members: @members, callback: @callback_url }
1215
end
1316

1417
def results
15-
params.require(:member_pick).permit(members: [])
16-
@members = params[:member_pick].present? ? Member.find(params[:member_pick][:members]) : Member.none
18+
@members = Member.find(params[:member_pick][:members])
1719
render 'show', locals: { members: @members }
1820
end
1921
end

app/views/admin/member_search/_search_form.html.haml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
.col-12.col-md-6
44
= f.input :name, label: 'Member Name', input_html: { placeholder: 'Enter member name' }
55
= f.button :submit, 'Search', class: 'btn btn-primary mt-3', name: nil
6+
= f.hidden_field 'callback', :value => @callback_url
Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
require 'spec_helper'
22

33
RSpec.feature 'admin member search', type: :feature do
4-
scenario 'search returns correct member' do
5-
romeo = Fabricate(:member, :name => 'Romeo', :surname => 'Montague')
6-
juliet = Fabricate(:member, :name => 'Juliet', :surname => 'Capulet')
4+
scenario 'search returns single member to requesting service' do
5+
Fabricate(:member, :name => 'Romeo', :surname => 'Montague')
6+
Fabricate(:member, :name => 'Juliet', :surname => 'Capulet')
77
member = Fabricate(:member)
8-
login(member)
9-
visit admin_member_search_index_path(member_search: { name: 'Julie' })
8+
login_as_admin(member)
9+
visit admin_member_search_index_path(callback: results_admin_member_search_index_path)
1010

11-
expect(current_url).to eq(root_url)
11+
fill_in 'member_search_name', with: 'Julie'
12+
click_button 'Search'
13+
14+
expect(page).to have_current_path(results_admin_member_search_index_path, ignore_query: true)
15+
16+
expect(page).to have_content('Juliet Capulet')
1217
end
18+
19+
1320
end

spec/helpers/admin/member_search_helper_spec.rb

Lines changed: 0 additions & 15 deletions
This file was deleted.

spec/requests/admin/member_search_spec.rb

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)