I'm really, really confused about the use of instance variables in my
controller and their relationship to my controller spec.

I'm trying to spec a controller that has a before_filter :require_member
(it's Authlogic and set up in ApplicationController. It in turn calls
current_member - which  returns/creates the @member variable ) and a
before_filter :find_product

The find_product method is thus ...

def find_product
  @product = (params[:id]) ? @member.products.find(params[:id]) :
Product.new
end

No matter what I try and in what order, I get the error message ....

NoMethodError in 'ProductsController PUT edit Product cut-off has passed
creates a product object'
undefined method `products' for nil:NilClass

and it points to the find_product method and it's the @member that is nil

I thought that the controller.stub(:require_member).and_return(member) would
suffice for the require_member stuff but I'm obviously wrong. I've even
replaced the member for @member in my spec but to no avail.

Here's the describe example ....

  describe "PUT edit" do
    context "Product cut-off has passed" do
      let(:member) { mock_model(Member).as_null_object }
      let(:product) { mock_model(Product).as_null_object }

      ## I just want it to create a @product object from
      it "creates a product object" do
        controller.stub(:require_member).and_return(member)
        member.should_receive(:products)
        get :edit, :id => "1"
      end
    end
  end

If anyone would be able to untangle me, I'd be greatly appreciative.

CIA

-ants
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to