From f84f3b97a7b1a658f40e479b1f787fcd1b3481da Mon Sep 17 00:00:00 2001 From: Gopesh Tulsyan Date: Mon, 12 May 2014 19:30:36 +0530 Subject: [PATCH 1/2] some basic tests for admin/users controller, fixed bug in admin/users controller for displaying users Fixes by hounci violations --- app/controllers/admin/users_controller.rb | 6 +- .../conferences_controller_spec.rb | 1 - .../admin/users_controller_spec.rb | 55 +++++++++++++++++++ spec/factories/event_types.rb | 1 + spec/factories/{role.rb => roles.rb} | 0 spec/factories/users.rb | 2 +- spec/support/database_cleaner.rb | 5 +- 7 files changed, 64 insertions(+), 6 deletions(-) rename spec/controllers/{ => admin}/conferences_controller_spec.rb (99%) create mode 100644 spec/controllers/admin/users_controller_spec.rb rename spec/factories/{role.rb => roles.rb} (100%) diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 9492cdce..aa4fc096 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -2,7 +2,11 @@ class Admin::UsersController < ApplicationController before_filter :verify_admin def index - @users = User.joins(:person).order('people.last_name ASC') + @users = User.joins(:person).order("people.last_name ASC").select("users.*, + people.last_name AS last_name, + people.first_name AS first_name, + people.public_name AS public_name, + people.email AS email") end def update diff --git a/spec/controllers/conferences_controller_spec.rb b/spec/controllers/admin/conferences_controller_spec.rb similarity index 99% rename from spec/controllers/conferences_controller_spec.rb rename to spec/controllers/admin/conferences_controller_spec.rb index bfff37c0..7bd9a42e 100644 --- a/spec/controllers/conferences_controller_spec.rb +++ b/spec/controllers/admin/conferences_controller_spec.rb @@ -18,7 +18,6 @@ describe Admin::ConferenceController do it 'locates the requested conference' do patch :update, id: conference.short_title, conference: attributes_for(:conference, title: 'Example Con') - expect(assigns(:conference)).to eq(conference) end diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb new file mode 100644 index 00000000..a8f2d3b4 --- /dev/null +++ b/spec/controllers/admin/users_controller_spec.rb @@ -0,0 +1,55 @@ +require 'spec_helper' +describe Admin::UsersController do + let!(:admin_role) { create(:admin_role) } + let!(:participant_role) { create(:participant_role) } + let(:admin) { create(:admin) } + let(:user) { create(:user) } + before(:each) do + sign_in(admin) + end + describe 'GET #index' do + it 'populates an array of users' do + user1 = create(:user, email: 'gopesh.7500@gmail.com') + user2 = create(:user, email: 'gopesh_750@gmail.com') + get :index + expect(assigns(:users)).to match_array([user, admin, user1, user2]) + end + it 'renders index template' do + get :index + expect(response).to render_template :index + end + end + describe 'PATCH #update' do + context 'valid attributes' do + it 'locates requested @user' do + patch :update, id: user.id + expect(build(:user, id: user.id)).to eq(user) + end + it 'changes @users attributes' do + patch :update, id: user.id + expect(build( + :user, email: 'example@incoherent.de', id: user.id).email). + to eq('example@incoherent.de') + end + it "redirects to the updated user" do + patch :update, id: user.id + expect(response).to redirect_to admin_users_path + end + end + end + describe 'DELETE #destroy' do + before :each do + @user = create(:user) + end + context 'valid attributes' do + it 'it deletes the contact' do + expect { delete :destroy, id: @user.id }.to change(User, :count).by(-1) + end + it 'redirects to users#index' do + delete :destroy, id: @user + expect(response).to redirect_to admin_users_path + end + end + end + +end \ No newline at end of file diff --git a/spec/factories/event_types.rb b/spec/factories/event_types.rb index d3cd4510..2601783c 100644 --- a/spec/factories/event_types.rb +++ b/spec/factories/event_types.rb @@ -8,4 +8,5 @@ FactoryGirl.define do maximum_abstract_length 500 conference end + end diff --git a/spec/factories/role.rb b/spec/factories/roles.rb similarity index 100% rename from spec/factories/role.rb rename to spec/factories/roles.rb diff --git a/spec/factories/users.rb b/spec/factories/users.rb index 5fe55ab8..c04fd3a7 100644 --- a/spec/factories/users.rb +++ b/spec/factories/users.rb @@ -2,7 +2,7 @@ FactoryGirl.define do factory :user do - email 'example@example.com' + sequence(:email) { |n| "example#{n}@example.com" } password 'changeme' password_confirmation 'changeme' confirmed_at Time.now diff --git a/spec/support/database_cleaner.rb b/spec/support/database_cleaner.rb index 284790b7..65e4ba37 100644 --- a/spec/support/database_cleaner.rb +++ b/spec/support/database_cleaner.rb @@ -1,5 +1,4 @@ RSpec.configure do |config| - config.before(:suite) do DatabaseCleaner.clean_with(:truncation) end @@ -7,8 +6,8 @@ RSpec.configure do |config| config.before(:each) do DatabaseCleaner.strategy = :transaction end - - config.before(:each, js: true) do + + config.before(:each, :js => true) do DatabaseCleaner.strategy = :truncation end From 9f4325fd12c959b73846249c09f305ad7e8e15b3 Mon Sep 17 00:00:00 2001 From: Gopesh Tulsyan Date: Tue, 20 May 2014 12:33:38 +0530 Subject: [PATCH 2/2] houndci fixes --- spec/controllers/admin/users_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb index a8f2d3b4..9e0a8334 100644 --- a/spec/controllers/admin/users_controller_spec.rb +++ b/spec/controllers/admin/users_controller_spec.rb @@ -3,7 +3,7 @@ describe Admin::UsersController do let!(:admin_role) { create(:admin_role) } let!(:participant_role) { create(:participant_role) } let(:admin) { create(:admin) } - let(:user) { create(:user) } + let(:user) { create(:user) } before(:each) do sign_in(admin) end