diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb
index 72173815..c1f51604 100644
--- a/app/controllers/admin/users_controller.rb
+++ b/app/controllers/admin/users_controller.rb
@@ -3,7 +3,8 @@ class UsersController < ApplicationController
before_filter :require_admin
def index
- @users = User.all.map {|user| Presenter::User.new(user)}
+ all_users = User.all.map {|user| Presenter::User.new(user)}
+ @admins, @users = all_users.partition {|u| u.is_admin?}
end
def show
diff --git a/app/models/presenter/user.rb b/app/models/presenter/user.rb
index 99ff3e00..d79061cb 100644
--- a/app/models/presenter/user.rb
+++ b/app/models/presenter/user.rb
@@ -3,5 +3,13 @@ class User < SimpleDelegator
def github_json_url
"https://api.github.com/user/#{github_id}"
end
+
+ def is_admin?
+ Admins.verify?(model.github_id)
+ end
+
+ def model
+ __getobj__
+ end
end
end
diff --git a/app/views/admin/users/index.html.erb b/app/views/admin/users/index.html.erb
index 501d1f07..6660e0ca 100644
--- a/app/views/admin/users/index.html.erb
+++ b/app/views/admin/users/index.html.erb
@@ -1,4 +1,27 @@
-
Users
+Admins (<%= @admins.length %>)
+
+
+
+
+ Name |
+ Email |
+ DUNS Number |
+ GitHub ID |
+
+
+
+ <% @admins.each do |user| %>
+
+ <%= user.name %> |
+ <%= user.email %> |
+ <%= user.duns_number %> |
+ <%= link_to(user.github_id, user.github_json_url) %> |
+
+ <% end %>
+
+
+
+Users (<%= @users.length %>)
diff --git a/spec/features/admin_users_spec.rb b/spec/features/admin_users_spec.rb
index 4b83e81e..2dd1973e 100644
--- a/spec/features/admin_users_spec.rb
+++ b/spec/features/admin_users_spec.rb
@@ -2,11 +2,11 @@
RSpec.feature "AdminUsers", type: :feature do
before do
- create_user
sign_in_admin
end
- scenario "visiting the admin users list and then a user" do
+ scenario "visiting the admin users list" do
+ create_user
visit "/admin/users"
expect(page).not_to have_text('must be an admin')
user = Presenter::User.new(@user)
@@ -16,4 +16,12 @@
expect(page).to have_text(user.name)
expect(page).to have_text(user.github_id)
end
+
+ scenario "counting the number of users and admins" do
+ number_of_users = 11
+ number_of_users.times { create_user }
+ visit "/admin/users"
+ expect(page).to have_text("Users (#{number_of_users}")
+ expect(page).to have_text("Admins (#{1}")
+ end
end
diff --git a/spec/models/place_bid_spec.rb b/spec/models/place_bid_spec.rb
index 99141a7a..86017b0b 100644
--- a/spec/models/place_bid_spec.rb
+++ b/spec/models/place_bid_spec.rb
@@ -2,7 +2,7 @@
RSpec.describe PlaceBid do
let(:place_bid) { PlaceBid.new(params, current_user) }
- let(:current_user) { FactoryGirl.create(:user, id: 111) }
+ let(:current_user) { FactoryGirl.create(:user) }
let(:amount) { 1005 }
let(:params) {
{