From 8ef4afb07d90a739824d4cf9e00fd88772ade8d9 Mon Sep 17 00:00:00 2001 From: Angel Perez Date: Mon, 23 Oct 2017 12:39:36 -0400 Subject: [PATCH 1/5] Enable search by name/email for Administrators --- .../admin/administrators_controller.rb | 14 ++--- .../administrators/_administrator.html.erb | 26 ---------- app/views/admin/administrators/index.html.erb | 27 +++------- .../admin/administrators/search.html.erb | 29 +++++++++++ app/views/admin/administrators/search.js.erb | 1 - .../administrators/user_not_found.js.erb | 1 - config/locales/en/admin.yml | 4 +- config/locales/es/admin.yml | 4 +- spec/features/admin/administrators_spec.rb | 52 ++++++++++++++++++- 9 files changed, 91 insertions(+), 67 deletions(-) delete mode 100644 app/views/admin/administrators/_administrator.html.erb create mode 100644 app/views/admin/administrators/search.html.erb delete mode 100644 app/views/admin/administrators/search.js.erb delete mode 100644 app/views/admin/administrators/user_not_found.js.erb diff --git a/app/controllers/admin/administrators_controller.rb b/app/controllers/admin/administrators_controller.rb index 938a7570d..3467ee0c0 100644 --- a/app/controllers/admin/administrators_controller.rb +++ b/app/controllers/admin/administrators_controller.rb @@ -6,16 +6,10 @@ class Admin::AdministratorsController < Admin::BaseController end def search - @user = User.find_by(email: params[:email]) - - respond_to do |format| - if @user - @administrator = Administrator.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(:administrator) + .page(params[:page]) + .for_render end def create diff --git a/app/views/admin/administrators/_administrator.html.erb b/app/views/admin/administrators/_administrator.html.erb deleted file mode 100644 index d948e1eed..000000000 --- a/app/views/admin/administrators/_administrator.html.erb +++ /dev/null @@ -1,26 +0,0 @@ -
- - - - - - - - -
- <%= administrator.name %> - - <%= administrator.email %> - - <% if administrator.persisted? %> - <%= link_to t('admin.administrators.administrator.delete'), - admin_administrator_path(administrator), - method: :delete, - class: "button hollow alert" %> - <% else %> - <%= link_to t('admin.administrators.administrator.add'),{ controller: "admin/administrators", action: :create, user_id: administrator.user_id }, - method: :post, - class: "button success" %> - <% end %> -
-
diff --git a/app/views/admin/administrators/index.html.erb b/app/views/admin/administrators/index.html.erb index 1cfbf5079..b23a85d61 100644 --- a/app/views/admin/administrators/index.html.erb +++ b/app/views/admin/administrators/index.html.erb @@ -1,39 +1,24 @@

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

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

<%= page_entries_info @administrators %>

<% @administrators.each do |administrator| %> - - + +
- <%= administrator.name %> - - <%= administrator.email %> - <%= administrator.name %><%= administrator.email %> <% if administrator.persisted? %> <%= link_to t('admin.administrators.administrator.delete'), admin_administrator_path(administrator), method: :delete, - class: "button hollow alert" - %> + class: "button hollow alert" %> <% else %> <%= link_to t('admin.administrators.administrator.add'), - { controller: "admin/administrators", action: :create, + { controller: "admin/administrators", + action: :create, user_id: administrator.user_id }, method: :post, class: "button success" %> diff --git a/app/views/admin/administrators/search.html.erb b/app/views/admin/administrators/search.html.erb new file mode 100644 index 000000000..3f3c269f1 --- /dev/null +++ b/app/views/admin/administrators/search.html.erb @@ -0,0 +1,29 @@ +

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

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

<%= page_entries_info @users %>

+ + + <% @users.each do |user| %> + + + + + + <% end %> +
<%= user.name %><%= user.email %> + <% if user.administrator? && user.administrator.persisted? %> + <%= link_to t('admin.administrators.administrator.delete'), + admin_administrator_path(user), + method: :delete, + class: "button hollow alert" %> + <% else %> + <%= link_to t('admin.administrators.administrator.add'), + { controller: "admin/administrators", + action: :create, + user_id: user }, + method: :post, + class: "button success" %> + <% end %> +
diff --git a/app/views/admin/administrators/search.js.erb b/app/views/admin/administrators/search.js.erb deleted file mode 100644 index 1c30d9595..000000000 --- a/app/views/admin/administrators/search.js.erb +++ /dev/null @@ -1 +0,0 @@ -$("#search-result").html("<%= j render 'administrator', administrator: @administrator %>"); diff --git a/app/views/admin/administrators/user_not_found.js.erb b/app/views/admin/administrators/user_not_found.js.erb deleted file mode 100644 index ba707fc9d..000000000 --- a/app/views/admin/administrators/user_not_found.js.erb +++ /dev/null @@ -1 +0,0 @@ -$("#search-result").html("
<%= j t('admin.administrators.search.user_not_found') %>
"); diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index 50e0b84ff..29117be66 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -438,9 +438,7 @@ en: delete: Delete restricted_removal: "Sorry, you can't remove yourself from the administrators" search: - email_placeholder: Search user by email - search: Search - user_not_found: User not found + title: 'Administrators: User search' moderators: index: title: Moderators diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index 76747ecf2..d998e1f33 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -387,9 +387,7 @@ es: delete: Borrar restricted_removal: "Lo sentimos, no puedes eliminarte a ti mismo de la lista" search: - email_placeholder: Buscar usuario por email - search: Buscar - user_not_found: Usuario no encontrado + title: 'Administradores: Búsqueda de usuarios' managers: index: title: Gestores diff --git a/spec/features/admin/administrators_spec.rb b/spec/features/admin/administrators_spec.rb index bef57b75d..4e2091d11 100644 --- a/spec/features/admin/administrators_spec.rb +++ b/spec/features/admin/administrators_spec.rb @@ -16,7 +16,7 @@ feature 'Admin administrators' do end scenario 'Create Administrator', :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 @@ -41,5 +41,53 @@ feature 'Admin administrators' do expect(page).to have_content I18n.t("admin.administrators.administrator.restricted_removal") end end -end + context 'Search' do + + background do + user = create(:user, username: 'Bernard Sumner', email: 'bernard@sumner.com') + user2 = create(:user, username: 'Tony Soprano', email: 'tony@soprano.com') + @administrator1 = create(:administrator, user: user) + @administrator2 = create(:administrator, user: user2) + visit admin_administrators_path + end + + scenario 'returns no results if search term is empty' do + expect(page).to have_content(@administrator1.name) + expect(page).to have_content(@administrator2.name) + + fill_in 'name_or_email', with: ' ' + click_button 'Search' + + expect(page).to have_content('Administrators: User search') + expect(page).to have_content('users cannot be found') + expect(page).to_not have_content(@administrator1.name) + expect(page).to_not have_content(@administrator2.name) + end + + scenario 'search by name' do + expect(page).to have_content(@administrator1.name) + expect(page).to have_content(@administrator2.name) + + fill_in 'name_or_email', with: 'Sumn' + click_button 'Search' + + expect(page).to have_content('Administrators: User search') + expect(page).to have_content(@administrator1.name) + expect(page).to_not have_content(@administrator2.name) + end + + scenario 'search by email' do + expect(page).to have_content(@administrator1.email) + expect(page).to have_content(@administrator2.email) + + fill_in 'name_or_email', with: @administrator2.email + click_button 'Search' + + expect(page).to have_content('Administrators: User search') + expect(page).to have_content(@administrator2.email) + expect(page).to_not have_content(@administrator1.email) + end + end + +end From 41f1f4e695ca5a5cdd55777acb10323e42e51973 Mon Sep 17 00:00:00 2001 From: Angel Perez Date: Mon, 23 Oct 2017 13:25:03 -0400 Subject: [PATCH 2/5] Enable search by name/email for Moderators --- .../admin/moderators_controller.rb | 14 ++--- .../admin/moderators/_moderator.html.erb | 26 ---------- app/views/admin/moderators/index.html.erb | 24 ++------- app/views/admin/moderators/search.html.erb | 29 +++++++++++ app/views/admin/moderators/search.js.erb | 1 - .../admin/moderators/user_not_found.js.erb | 1 - config/locales/en/admin.yml | 4 +- config/locales/es/admin.yml | 4 +- spec/features/admin/moderators_spec.rb | 52 ++++++++++++++++++- 9 files changed, 90 insertions(+), 65 deletions(-) delete mode 100644 app/views/admin/moderators/_moderator.html.erb create mode 100644 app/views/admin/moderators/search.html.erb delete mode 100644 app/views/admin/moderators/search.js.erb delete mode 100644 app/views/admin/moderators/user_not_found.js.erb diff --git a/app/controllers/admin/moderators_controller.rb b/app/controllers/admin/moderators_controller.rb index 2566c0c02..cd5072aa8 100644 --- a/app/controllers/admin/moderators_controller.rb +++ b/app/controllers/admin/moderators_controller.rb @@ -6,16 +6,10 @@ class Admin::ModeratorsController < Admin::BaseController end def search - @user = User.find_by(email: params[:email]) - - respond_to do |format| - if @user - @moderator = Moderator.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(:moderator) + .page(params[:page]) + .for_render end def create diff --git a/app/views/admin/moderators/_moderator.html.erb b/app/views/admin/moderators/_moderator.html.erb deleted file mode 100644 index 57a29d2e8..000000000 --- a/app/views/admin/moderators/_moderator.html.erb +++ /dev/null @@ -1,26 +0,0 @@ -
- - - - - - - - -
- <%= moderator.name %> - - <%= moderator.email %> - - <% if moderator.persisted? %> - <%= link_to t('admin.moderators.moderator.delete'), - admin_moderator_path(moderator), - method: :delete, - class: "button hollow alert" %> - <% else %> - <%= link_to t('admin.moderators.moderator.add'),{ controller: "admin/moderators", action: :create, user_id: moderator.user_id }, - method: :post, - class: "button success" %> - <% end %> -
-
diff --git a/app/views/admin/moderators/index.html.erb b/app/views/admin/moderators/index.html.erb index 0fc8703fd..735a193ff 100644 --- a/app/views/admin/moderators/index.html.erb +++ b/app/views/admin/moderators/index.html.erb @@ -2,30 +2,15 @@

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

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

<%= page_entries_info @moderators %>

<% @moderators.each do |moderator| %> - - + + - diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index e94f803c5..b44179ab2 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -454,7 +454,6 @@ en: title: Valuators valuator: description_placeholder: 'Description (optional)' - user_found: User found add: Add to valuators search: title: 'Valuators: User search' diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index 48ea7b4d2..53e01b38b 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -454,7 +454,6 @@ es: title: Evaluadores valuator: description_placeholder: "Descripción (opcional)" - user_found: Usuario encontrado add: Añadir como evaluador search: title: 'Evaluadores: Búsqueda de usuarios' diff --git a/spec/features/admin/valuators_spec.rb b/spec/features/admin/valuators_spec.rb index 10db62933..86f2c89e9 100644 --- a/spec/features/admin/valuators_spec.rb +++ b/spec/features/admin/valuators_spec.rb @@ -2,30 +2,30 @@ require 'rails_helper' feature 'Admin valuators' do background do - @admin = create(:administrator) - @user = create(:user, username: 'Jose Luis Balbin') + @admin = create(:administrator) + @user = create(:user, username: 'Jose Luis Balbin') @valuator = create(:valuator) login_as(@admin.user) visit admin_valuators_path end scenario 'Index' do - expect(page).to have_content @valuator.name - expect(page).to have_content @valuator.email - expect(page).to_not have_content @user.name + expect(page).to have_content(@valuator.name) + expect(page).to have_content(@valuator.email) + expect(page).to_not have_content(@user.name) end - pending 'Create Valuator', :js do + scenario 'Create Valuator', :js do fill_in 'name_or_email', with: @user.email click_button 'Search' - expect(page).to have_content @user.name + expect(page).to have_content(@user.name) fill_in 'valuator_description', with: 'environmental expert' click_button 'Add to valuators' - within("#valuators") do - expect(page).to have_content @user.name - expect(page).to have_content 'environmental expert' + within('#valuators') do + expect(page).to have_content(@user.name) + expect(page).to have_content('environmental expert') end end
- <%= moderator.name %> - - <%= moderator.email %> - <%= moderator.name %><%= moderator.email %> <% if moderator.persisted? %> <%= link_to t('admin.moderators.moderator.delete'), @@ -35,7 +20,8 @@ %> <% else %> <%= link_to t('admin.moderators.moderator.add'), - { controller: "admin/moderators", action: :create, + { controller: "admin/moderators", + action: :create, user_id: moderator.user_id }, method: :post, class: "button success" %> diff --git a/app/views/admin/moderators/search.html.erb b/app/views/admin/moderators/search.html.erb new file mode 100644 index 000000000..89e9dc9a7 --- /dev/null +++ b/app/views/admin/moderators/search.html.erb @@ -0,0 +1,29 @@ +

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

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

<%= page_entries_info @users %>

+ + + <% @users.each do |user| %> + + + + + + <% end %> +
<%= user.name %><%= user.email %> + <% if user.moderator? && user.moderator.persisted? %> + <%= link_to t('admin.moderators.moderator.delete'), + admin_moderator_path(user), + method: :delete, + class: "button hollow alert" %> + <% else %> + <%= link_to t('admin.moderators.moderator.add'), + { controller: "admin/moderators", + action: :create, + user_id: user }, + method: :post, + class: "button success" %> + <% end %> +
diff --git a/app/views/admin/moderators/search.js.erb b/app/views/admin/moderators/search.js.erb deleted file mode 100644 index 887d8aa3a..000000000 --- a/app/views/admin/moderators/search.js.erb +++ /dev/null @@ -1 +0,0 @@ -$("#search-result").html("<%= j render 'moderator', moderator: @moderator %>"); diff --git a/app/views/admin/moderators/user_not_found.js.erb b/app/views/admin/moderators/user_not_found.js.erb deleted file mode 100644 index a8573236c..000000000 --- a/app/views/admin/moderators/user_not_found.js.erb +++ /dev/null @@ -1 +0,0 @@ -$("#search-result").html("
<%= j t('admin.moderators.search.user_not_found') %>
"); diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index 29117be66..d18a2daef 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -446,9 +446,7 @@ en: add: Add delete: Delete search: - email_placeholder: Search user by email - search: Search - user_not_found: User not found + title: 'Moderators: User search' newsletters: index: title: Newsletters diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index d998e1f33..ecb4e5179 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -446,9 +446,7 @@ es: add: Añadir como Moderador delete: Borrar search: - email_placeholder: Buscar usuario por email - search: Buscar - user_not_found: Usuario no encontrado + title: 'Moderadores: Búsqueda de usuarios' newsletters: index: title: Envío de newsletters diff --git a/spec/features/admin/moderators_spec.rb b/spec/features/admin/moderators_spec.rb index e8e29b182..2c2994d62 100644 --- a/spec/features/admin/moderators_spec.rb +++ b/spec/features/admin/moderators_spec.rb @@ -16,7 +16,7 @@ feature 'Admin moderators' do end scenario 'Create Moderator', :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 @@ -33,5 +33,53 @@ feature 'Admin moderators' do expect(page).to_not have_content @moderator.name end end -end + context 'Search' do + + background do + user = create(:user, username: 'Elizabeth Bathory', email: 'elizabeth@bathory.com') + user2 = create(:user, username: 'Ada Lovelace', email: 'ada@lovelace.com') + @moderator1 = create(:moderator, user: user) + @moderator2 = create(:moderator, user: user2) + visit admin_moderators_path + end + + scenario 'returns no results if search term is empty' do + expect(page).to have_content(@moderator1.name) + expect(page).to have_content(@moderator2.name) + + fill_in 'name_or_email', with: ' ' + click_button 'Search' + + expect(page).to have_content('Moderators: User search') + expect(page).to have_content('users cannot be found') + expect(page).to_not have_content(@moderator1.name) + expect(page).to_not have_content(@moderator2.name) + end + + scenario 'search by name' do + expect(page).to have_content(@moderator1.name) + expect(page).to have_content(@moderator2.name) + + fill_in 'name_or_email', with: 'Eliz' + click_button 'Search' + + expect(page).to have_content('Moderators: User search') + expect(page).to have_content(@moderator1.name) + expect(page).to_not have_content(@moderator2.name) + end + + scenario 'search by email' do + expect(page).to have_content(@moderator1.email) + expect(page).to have_content(@moderator2.email) + + fill_in 'name_or_email', with: @moderator2.email + click_button 'Search' + + expect(page).to have_content('Moderators: User search') + expect(page).to have_content(@moderator2.email) + expect(page).to_not have_content(@moderator1.email) + end + end + +end From 59c97b4db7c655b942a930e2e7b2d44f651856c1 Mon Sep 17 00:00:00 2001 From: Angel Perez Date: Mon, 23 Oct 2017 15:18:23 -0400 Subject: [PATCH 3/5] Enable search by name/email for Valuators --- app/controllers/admin/valuators_controller.rb | 16 ++---- app/views/admin/valuators/index.html.erb | 27 ++-------- app/views/admin/valuators/search.html.erb | 19 +++++++ app/views/admin/valuators/search.js.erb | 1 - .../admin/valuators/user_not_found.js.erb | 1 - config/locales/en/admin.yml | 4 +- config/locales/es/admin.yml | 4 +- spec/features/admin/valuators_spec.rb | 53 +++++++++++++++++-- 8 files changed, 80 insertions(+), 45 deletions(-) create mode 100644 app/views/admin/valuators/search.html.erb delete mode 100644 app/views/admin/valuators/search.js.erb delete mode 100644 app/views/admin/valuators/user_not_found.js.erb 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 From 91aa6e3302905aa78e448dc543e175a543db184d Mon Sep 17 00:00:00 2001 From: Angel Perez Date: Mon, 23 Oct 2017 15:49:27 -0400 Subject: [PATCH 4/5] Enable search by name/email for Managers --- app/controllers/admin/managers_controller.rb | 14 ++--- app/views/admin/managers/_manager.html.erb | 24 --------- app/views/admin/managers/index.html.erb | 36 +++++-------- app/views/admin/managers/search.html.erb | 29 +++++++++++ app/views/admin/managers/search.js.erb | 1 - .../admin/managers/user_not_found.js.erb | 1 - config/locales/en/admin.yml | 4 +- config/locales/es/admin.yml | 4 +- spec/features/admin/managers_spec.rb | 52 ++++++++++++++++++- 9 files changed, 97 insertions(+), 68 deletions(-) delete mode 100644 app/views/admin/managers/_manager.html.erb create mode 100644 app/views/admin/managers/search.html.erb delete mode 100644 app/views/admin/managers/search.js.erb delete mode 100644 app/views/admin/managers/user_not_found.js.erb 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 From cd8cf4229413cccc926eac4fe1af0d1c0eb0fd79 Mon Sep 17 00:00:00 2001 From: Angel Perez Date: Wed, 25 Oct 2017 10:13:07 -0400 Subject: [PATCH 5/5] 'Add to valuators' option added to Valuators search view --- app/views/admin/valuators/_valuator.html.erb | 28 -------------------- app/views/admin/valuators/search.html.erb | 10 ++++++- config/locales/en/admin.yml | 1 - config/locales/es/admin.yml | 1 - spec/features/admin/valuators_spec.rb | 20 +++++++------- 5 files changed, 19 insertions(+), 41 deletions(-) delete mode 100644 app/views/admin/valuators/_valuator.html.erb diff --git a/app/views/admin/valuators/_valuator.html.erb b/app/views/admin/valuators/_valuator.html.erb deleted file mode 100644 index e5971391b..000000000 --- a/app/views/admin/valuators/_valuator.html.erb +++ /dev/null @@ -1,28 +0,0 @@ -
-

<%= t('admin.valuators.valuator.user_found') %>

- - - - - - -
- <%= valuator.name %> - - <%= valuator.email %> -
- - <% unless @valuator.persisted? %> - <%= form_for @valuator, url: admin_valuators_path do |f| %> -
-
- <%= f.text_field :description, label: false, placeholder: t('admin.valuators.valuator.description_placeholder') %> - <%= f.hidden_field :user_id %> -
-
- <%= f.submit t('admin.valuators.valuator.add'), class: "button success float-left" %> -
-
- <% end %> - <% end %> -
diff --git a/app/views/admin/valuators/search.html.erb b/app/views/admin/valuators/search.html.erb index 8ca18322d..4663a944b 100644 --- a/app/views/admin/valuators/search.html.erb +++ b/app/views/admin/valuators/search.html.erb @@ -9,9 +9,17 @@
<%= user.name %> <%= user.email %> + <% if user.valuator? && user.valuator.description.present? %> <%= user.valuator.description %> + <% else %> + <%= form_for Valuator.new(user: user), url: admin_valuators_path do |f| %> + <%= f.text_field :description, + label: false, + placeholder: t("admin.valuators.valuator.description_placeholder") %> + <%= f.hidden_field :user_id %> + <%= f.submit t("admin.valuators.valuator.add"), class: "button success float-left" %> + <% end %> <% end %>