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| %> - - - + + + <% end %>
- <%= valuator.name %> - - <%= valuator.email %> - - <% if valuator.description.present? %> - <%= valuator.description %> - <% end %> - <%= valuator.name %><%= valuator.email %><%= valuator.description if valuator.description.present? %>
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| %> + + + + + + <% end %> +
<%= user.name %><%= user.email %> + <% if user.valuator? && user.valuator.description.present? %> + <%= user.valuator.description %> + <% 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