diff --git a/app/controllers/admin/managers_controller.rb b/app/controllers/admin/managers_controller.rb index 5023a1380..865ead3be 100644 --- a/app/controllers/admin/managers_controller.rb +++ b/app/controllers/admin/managers_controller.rb @@ -6,16 +6,10 @@ class Admin::ManagersController < Admin::BaseController end def search - @user = User.find_by(email: params[:email]) - - respond_to do |format| - if @user - @manager = Manager.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(:manager) + .page(params[:page]) + .for_render end def create diff --git a/app/views/admin/managers/_manager.html.erb b/app/views/admin/managers/_manager.html.erb deleted file mode 100644 index 3e709eb60..000000000 --- a/app/views/admin/managers/_manager.html.erb +++ /dev/null @@ -1,24 +0,0 @@ -
- - - - - - -
- <%= manager.name %> - - <%= manager.email %> - - <% if manager.persisted? %> - <%= link_to t('admin.managers.manager.delete'), - admin_manager_path(manager), - method: :delete, - class: "button hollow alert" - %> - <% else %> - <%= link_to t('admin.managers.manager.add'),{ controller: "admin/managers", action: :create, user_id: manager.user_id }, - method: :post, class: "button success" %> - <% end %> -
-
diff --git a/app/views/admin/managers/index.html.erb b/app/views/admin/managers/index.html.erb index d479ba303..2291f8384 100644 --- a/app/views/admin/managers/index.html.erb +++ b/app/views/admin/managers/index.html.erb @@ -1,39 +1,27 @@

<%= t("admin.managers.index.title") %>

-
- <%= form_tag search_admin_managers_path, method: :get, remote: true do %> -
- <%= text_field_tag :email, '', placeholder: t('admin.managers.search.email_placeholder') %> -
-
- <%= submit_tag t('admin.managers.search.search'), class: 'button' %> -
- <% end %> -
- -
+<%= render 'admin/shared/user_search', url: search_admin_managers_path %>

<%= page_entries_info @managers %>

<% @managers.each do |manager| %> - - + + diff --git a/app/views/admin/managers/search.html.erb b/app/views/admin/managers/search.html.erb new file mode 100644 index 000000000..c6ea3c2cd --- /dev/null +++ b/app/views/admin/managers/search.html.erb @@ -0,0 +1,29 @@ +

<%= t("admin.managers.search.title") %>

+ +<%= render 'admin/shared/user_search', url: search_admin_managers_path %> + +

<%= page_entries_info @users %>

+ +
- <%= manager.name %> - - <%= manager.email %> - <%= manager.name %><%= manager.email %> <% if manager.persisted? %> <%= link_to t('admin.managers.manager.delete'), - admin_manager_path(manager), - method: :delete, - class: "button hollow alert" - %> + admin_manager_path(manager), + method: :delete, + class: "button hollow alert" %> <% else %> - <%= link_to t('admin.managers.manager.add'),{ controller: "admin/managers", action: :create, user_id: manager.user_id }, - method: :post, class: "button success" %> + <%= link_to t('admin.managers.manager.add'), + { controller: "admin/managers", + action: :create, + user_id: manager.user_id }, + method: :post, + class: "button success" %> <% end %>
+ <% @users.each do |user| %> + + + + + + <% end %> +
<%= user.name %><%= user.email %> + <% if user.manager? && user.manager.persisted? %> + <%= link_to t('admin.managers.manager.delete'), + admin_manager_path(user), + method: :delete, + class: "button hollow alert" %> + <% else %> + <%= link_to t('admin.managers.manager.add'), + { controller: "admin/managers", + action: :create, + user_id: user }, + method: :post, + class: "button success" %> + <% end %> +
diff --git a/app/views/admin/managers/search.js.erb b/app/views/admin/managers/search.js.erb deleted file mode 100644 index e54b84293..000000000 --- a/app/views/admin/managers/search.js.erb +++ /dev/null @@ -1 +0,0 @@ -$("#search-result").html("<%= j render 'manager', manager: @manager %>"); diff --git a/app/views/admin/managers/user_not_found.js.erb b/app/views/admin/managers/user_not_found.js.erb deleted file mode 100644 index 53e9d7e20..000000000 --- a/app/views/admin/managers/user_not_found.js.erb +++ /dev/null @@ -1 +0,0 @@ -$("#search-result").html("
<%= j t('admin.managers.search.user_not_found') %>
"); diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index 6bb8bfecf..e94f803c5 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -386,9 +386,7 @@ en: add: Add delete: Delete search: - email_placeholder: Search user by email - search: Search - user_not_found: User not found + title: 'Managers: User search' menu: activity: Moderator activity admin: Admin menu diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index 94700154a..48ea7b4d2 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -395,9 +395,7 @@ es: add: Añadir como Gestor delete: Borrar search: - email_placeholder: Buscar usuario por email - search: Buscar - user_not_found: Usuario no encontrado + title: 'Gestores: Búsqueda de usuarios' menu: activity: Actividad de moderadores admin: Menú de administración diff --git a/spec/features/admin/managers_spec.rb b/spec/features/admin/managers_spec.rb index 54b8cc77a..5fe1b3892 100644 --- a/spec/features/admin/managers_spec.rb +++ b/spec/features/admin/managers_spec.rb @@ -16,7 +16,7 @@ feature 'Admin managers' do end scenario 'Create Manager', :js do - fill_in 'email', with: @user.email + fill_in 'name_or_email', with: @user.email click_button 'Search' expect(page).to have_content @user.name @@ -34,4 +34,52 @@ feature 'Admin managers' do end end -end \ No newline at end of file + context 'Search' do + + background do + user = create(:user, username: 'Taylor Swift', email: 'taylor@swift.com') + user2 = create(:user, username: 'Stephanie Corneliussen', email: 'steph@mrrobot.com') + @manager1 = create(:manager, user: user) + @manager2 = create(:manager, user: user2) + visit admin_managers_path + end + + scenario 'returns no results if search term is empty' do + expect(page).to have_content(@manager1.name) + expect(page).to have_content(@manager2.name) + + fill_in 'name_or_email', with: ' ' + click_button 'Search' + + expect(page).to have_content('Managers: User search') + expect(page).to have_content('users cannot be found') + expect(page).to_not have_content(@manager1.name) + expect(page).to_not have_content(@manager2.name) + end + + scenario 'search by name' do + expect(page).to have_content(@manager1.name) + expect(page).to have_content(@manager2.name) + + fill_in 'name_or_email', with: 'Taylor' + click_button 'Search' + + expect(page).to have_content('Managers: User search') + expect(page).to have_content(@manager1.name) + expect(page).to_not have_content(@manager2.name) + end + + scenario 'search by email' do + expect(page).to have_content(@manager1.email) + expect(page).to have_content(@manager2.email) + + fill_in 'name_or_email', with: @manager2.email + click_button 'Search' + + expect(page).to have_content('Managers: User search') + expect(page).to have_content(@manager2.email) + expect(page).to_not have_content(@manager1.email) + end + end + +end