diff --git a/app/controllers/admin/valuators_controller.rb b/app/controllers/admin/valuators_controller.rb
index 4b52a753e..d567a38b2 100644
--- a/app/controllers/admin/valuators_controller.rb
+++ b/app/controllers/admin/valuators_controller.rb
@@ -6,16 +6,10 @@ class Admin::ValuatorsController < Admin::BaseController
end
def search
- @user = User.find_by(email: params[:email])
-
- respond_to do |format|
- if @user
- @valuator = Valuator.find_or_initialize_by(user: @user)
- format.js
- else
- format.js { render "user_not_found" }
- end
- end
+ @users = User.search(params[:name_or_email])
+ .includes(:valuator)
+ .page(params[:page])
+ .for_render
end
def create
@@ -36,4 +30,4 @@ class Admin::ValuatorsController < Admin::BaseController
params.require(:valuator).permit(:user_id, :description)
end
-end
\ No newline at end of file
+end
diff --git a/app/views/admin/valuators/index.html.erb b/app/views/admin/valuators/index.html.erb
index 30132e66f..d496b1ecd 100644
--- a/app/views/admin/valuators/index.html.erb
+++ b/app/views/admin/valuators/index.html.erb
@@ -1,34 +1,15 @@
<%= t("admin.valuators.index.title") %>
-
- <%= form_tag search_admin_valuators_path, method: :get, remote: true do %>
-
- <%= text_field_tag :email, '', placeholder: t('admin.valuators.search.email_placeholder') %>
-
-
- <%= submit_tag t('admin.valuators.search.search'), class: 'button radius' %>
-
- <% end %>
-
-
-
+<%= render 'admin/shared/user_search', url: search_admin_valuators_path %>
<%= page_entries_info @valuators %>
<% @valuators.each do |valuator| %>
- |
- <%= valuator.name %>
- |
-
- <%= valuator.email %>
- |
-
- <% if valuator.description.present? %>
- <%= valuator.description %>
- <% end %>
- |
+ <%= valuator.name %> |
+ <%= valuator.email %> |
+ <%= valuator.description if valuator.description.present? %> |
<% end %>
diff --git a/app/views/admin/valuators/search.html.erb b/app/views/admin/valuators/search.html.erb
new file mode 100644
index 000000000..8ca18322d
--- /dev/null
+++ b/app/views/admin/valuators/search.html.erb
@@ -0,0 +1,19 @@
+<%= t("admin.valuators.search.title") %>
+
+<%= render 'admin/shared/user_search', url: search_admin_valuators_path %>
+
+<%= page_entries_info @users %>
+
+
+ <% @users.each do |user| %>
+
+ | <%= user.name %> |
+ <%= user.email %> |
+
+ <% if user.valuator? && user.valuator.description.present? %>
+ <%= user.valuator.description %>
+ <% end %>
+ |
+
+ <% end %>
+
diff --git a/app/views/admin/valuators/search.js.erb b/app/views/admin/valuators/search.js.erb
deleted file mode 100644
index 4068c146e..000000000
--- a/app/views/admin/valuators/search.js.erb
+++ /dev/null
@@ -1 +0,0 @@
-$("#search-result").html("<%= j render 'valuator', valuator: @valuator %>");
diff --git a/app/views/admin/valuators/user_not_found.js.erb b/app/views/admin/valuators/user_not_found.js.erb
deleted file mode 100644
index af3f83a3f..000000000
--- a/app/views/admin/valuators/user_not_found.js.erb
+++ /dev/null
@@ -1 +0,0 @@
-$("#search-result").html("<%= j t('admin.valuators.search.user_not_found') %>
");
diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml
index d18a2daef..6bb8bfecf 100644
--- a/config/locales/en/admin.yml
+++ b/config/locales/en/admin.yml
@@ -459,9 +459,7 @@ en:
user_found: User found
add: Add to valuators
search:
- email_placeholder: Search user by email
- search: Search
- user_not_found: User not found
+ title: 'Valuators: User search'
summary:
title: Valuator summary for investment projects
valuator_name: Valuator
diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml
index ecb4e5179..94700154a 100644
--- a/config/locales/es/admin.yml
+++ b/config/locales/es/admin.yml
@@ -459,9 +459,7 @@ es:
user_found: Usuario encontrado
add: Añadir como evaluador
search:
- email_placeholder: Buscar usuario por email
- search: Buscar
- user_not_found: Usuario no encontrado
+ title: 'Evaluadores: Búsqueda de usuarios'
summary:
title: Resumen de evaluación de propuestas de inversión
valuator_name: Evaluador
diff --git a/spec/features/admin/valuators_spec.rb b/spec/features/admin/valuators_spec.rb
index d95432474..10db62933 100644
--- a/spec/features/admin/valuators_spec.rb
+++ b/spec/features/admin/valuators_spec.rb
@@ -15,8 +15,8 @@ feature 'Admin valuators' do
expect(page).to_not have_content @user.name
end
- scenario 'Create Valuator', :js do
- fill_in 'email', with: @user.email
+ pending 'Create Valuator', :js do
+ fill_in 'name_or_email', with: @user.email
click_button 'Search'
expect(page).to have_content @user.name
@@ -29,5 +29,52 @@ feature 'Admin valuators' do
end
end
-end
+ context 'Search' do
+ background do
+ user = create(:user, username: 'David Foster Wallace', email: 'david@wallace.com')
+ user2 = create(:user, username: 'Steven Erikson', email: 'steven@erikson.com')
+ @valuator1 = create(:valuator, user: user)
+ @valuator2 = create(:valuator, user: user2)
+ visit admin_valuators_path
+ end
+
+ scenario 'returns no results if search term is empty' do
+ expect(page).to have_content(@valuator1.name)
+ expect(page).to have_content(@valuator2.name)
+
+ fill_in 'name_or_email', with: ' '
+ click_button 'Search'
+
+ expect(page).to have_content('Valuators: User search')
+ expect(page).to have_content('users cannot be found')
+ expect(page).to_not have_content(@valuator1.name)
+ expect(page).to_not have_content(@valuator2.name)
+ end
+
+ scenario 'search by name' do
+ expect(page).to have_content(@valuator1.name)
+ expect(page).to have_content(@valuator2.name)
+
+ fill_in 'name_or_email', with: 'Foster'
+ click_button 'Search'
+
+ expect(page).to have_content('Valuators: User search')
+ expect(page).to have_content(@valuator1.name)
+ expect(page).to_not have_content(@valuator2.name)
+ end
+
+ scenario 'search by email' do
+ expect(page).to have_content(@valuator1.email)
+ expect(page).to have_content(@valuator2.email)
+
+ fill_in 'name_or_email', with: @valuator2.email
+ click_button 'Search'
+
+ expect(page).to have_content('Valuators: User search')
+ expect(page).to have_content(@valuator2.email)
+ expect(page).to_not have_content(@valuator1.email)
+ end
+ end
+
+end