Some tests for users controller, and fixed users#index

This commit is contained in:
Gopesh Tulsyan 2014-05-12 14:19:46 +05:30
parent adfa9cc871
commit 4955481f14
9 changed files with 84 additions and 10 deletions

View file

@ -76,6 +76,7 @@ group :development, :test do
gem 'rspec', '>= 3.0.0.beta'
gem 'rspec-rails', '>= 3.0.0.beta'
gem 'capybara'
gem 'database_cleaner'
end
# FIXME: We should use http://weblog.rubyonrails.org/2012/3/21/strong-parameters/

View file

@ -81,6 +81,7 @@ GEM
thor
d3_rails (3.4.6)
railties (>= 3.1.0)
database_cleaner (1.2.0)
devise (3.2.4)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
@ -305,6 +306,7 @@ DEPENDENCIES
cocoon
coveralls
d3_rails
database_cleaner
devise
factory_girl_rails
formtastic (~> 2.3.0.rc3)

View file

@ -2,9 +2,7 @@ class Admin::UsersController < ApplicationController
before_filter :verify_admin
def index
@users = User.all(:joins => :person,
:order => "people.last_name ASC",
:select => "users.*,
@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,

View file

@ -0,0 +1,34 @@
require 'spec_helper'
describe Admin::UsersController do
shared_examples 'access as administration' do
describe "GET '#index'" do
it 'populates an array of users' do
user1,user2 = create(:user,email:"gopesh.7500@gmail.com"),create(:user,email:"gopesh@gmail.com")
get :index
expect(assigns(:users)).to match_array([user1,user2])
end
it 'renders index template' do
get :index
expect(response).to render_template :index
end
end
describe "PATCH '#update'" do
it 'locates the user' do
patch :update, id: @user.id, :user => {email:@user.email}
expect(assigns(:user)).to eq(@user)
end
end
describe 'admin access' do
before(:each) do
@user = create(:user)
@admin = create(:admin)
sign_in(@admin)
end
it_behaves_like 'access as administration'
end
end
end

View file

@ -2,7 +2,7 @@
FactoryGirl.define do
factory :user do
email 'example@example.com'
sequence(:email) {|n|'name#{n}@example.com'}
password 'changeme'
password_confirmation 'changeme'
confirmed_at Time.now

View file

@ -4,10 +4,10 @@ Coveralls.wear!('rails')
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
if Rails.configuration.database_configuration['test']['database'] == ':memory:'
load "#{Rails.root}/db/schema.rb"
load "#{Rails.root}/db/seeds.rb"
end
# if Rails.configuration.database_configuration['test']['database'] == ':memory:'
# load "#{Rails.root}/db/schema.rb"
# load "#{Rails.root}/db/seeds.rb"
# end
require 'rspec/rails'
@ -30,19 +30,25 @@ RSpec.configure do |config|
# config.mock_with :rr
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
config.fixture_path = "#{::Rails.root}/spec/fixtures"
# config.fixture_path = "#{::Rails.root}/spec/fixtures"
# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
# instead of true.
config.use_transactional_fixtures = true
config.use_transactional_fixtures = false
# Run specs in random order to surface order dependencies. If you find an
# order dependency and want to debug it, you can fix the order by providing
# the seed, which is printed after each run.
# --seed 1234
config.order = "random"
# Enables devise sign_in function
config.include Devise::TestHelpers, type: :controller
# Includes support/login_macros for feature tests
config.include SigninMacros, type: :feature
# Include factory_girls syntax
config.include FactoryGirl::Syntax::Methods

View file

@ -0,0 +1,23 @@
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each, :js => true) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end

View file

@ -0,0 +1,10 @@
module SigninMacros
def sign_in(user)
visit new_user_session_path
fill_in 'user_email', with:'user.email'
fill_in 'user_password', with: 'user.password'
click_button 'Sign in'
page.should have_content('Signed in successfully')
end
end

View file