On 7 June 2011 15:07, Colin Law <clan...@googlemail.com> wrote: > On 7 June 2011 15:53, Mauro <mrsan...@gmail.com> wrote: >> On 7 June 2011 14:48, Colin Law <clan...@googlemail.com> wrote: >>> On 7 June 2011 15:45, Mauro <mrsan...@gmail.com> wrote: >>>> I'm using devise and in application_controller I have before_filter >>>> :authenticate! >>>> In sector_controller I have: >>>> >>>> skip_filter :authenticate_user!, :only => [:index, >>>> :search_categories_by_sector] >>>> >>>> When I run rspec it says: undefined method authenticate!, even for >>>> index action. >>>> But I' set skip_filter for index action. >>>> Why rspec needs authenticate for index? >>> >>> Because you have specified skip for :authenticate_user! not :authenticate! ? >> >> I've make a mistake writing, in application_controller I have: >> before_filter :authenticate_user! > > In that case, as you are getting an error 'undefined method > authenticate!' that is nothing to do with the filter. > > It is no good re-typing what you think you have when asking questions, > it is vital that we know *exactly* what you have. > I suggest that you copy and paste the relevant code out of > application_controller.rb and sector_controller.rb and also copy and > paste the test that is failing and the error.
That' right. application_controller.rb class ApplicationController < ActionController::Base before_filter :authenticate_user! rescue_from DeviseLdapAuthenticatable::LdapException do |exception| render :text => exception, :status => 500 end suppliers_controller.rb class SuppliersController < InheritedResources::Base skip_filter :authenticate_user!, :only => [:index, :search_categories_by_sector] before_filter :load_sectors_and_categories, :except => :search_categories_by_sector respond_to :js def index set_title("Albo Fornitori - Ricerca", "Albo Fornitori") @search = Supplier.search(params[:search]) @suppliers = @search.page(params[:page]).per(Settings.suppliers_per_page) end private def search_categories_by_sector unless params[:sector_id].blank? @categories = Category.find_all_by_sector_id(params[:sector_id]) render :layout => false else @categories = Category.all render :layout => false end end def set_title(title1, title2) @titleBox1 = title1 @titleBox2 = title2 end def load_sectors_and_categories @sectors = Sector.all @categories = Category.all end end suppliers_controller_spec.rb describe SuppliersController do # This should return the minimal set of attributes required to create a valid # Supplier. As you add validations to Supplier, be sure to # update the return value of this method accordingly. before :each do @category = Category.make! end def valid_attributes { :company_name => 'Supplier-1', :vat_number => '12345678901', :address => 'addres-1', :city => 'city-1', :prov => 'prov-1', :zip_code => '12345', :inps => 'inps-1', :inail => 'inail-1', :email => 'ma...@mauro.it', :categories => [@category] } end def mock_supplier(stubs={}) @mock_supplier ||= mock_model(Supplier, stubs).as_null_object end describe "GET index" do it "assigns all suppliers as @suppliers" do sectors = Sector.all categories = Category.all supplier = Supplier.create! valid_attributes get :index assigns(:suppliers).should eq([supplier]) assigns(:sectors).should eq(sectors) assigns(:categories).should eq(categories) end end the error is: 1) SuppliersController GET index assigns all suppliers as @suppliers Failure/Error: get :index NoMethodError: undefined method `authenticate!' for nil:NilClass -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.