- |
- <%= 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| %>
+
+ | <%= 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 %>
+ |
+
+ <% 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
|