Tyler DeWitt
2012-Mar-21 01:01 UTC
[rspec-users] Testing Model Attributes That Are Updated In a Controller
I''ve got a controller that updates some attributes of a model: def confirmation @cart = current_cart customer = Stripe::Customer.create(description: current_user.email, card: params[:stripeToken]) current_user.update_attributes(stripe_customer_id: customer.id) end In my spec, how can I ensure the current_user has a stripe_customer_id after this controller is run? I have this: it "should create a stripe customer and save that to the stripe_customer_id of the user" do @user.reload @user.stripe_customer_id.should_not be_nil end But it doesn''t work (I tried @user.reload because the database is being updated by the call to current_user.update_attributes). @user is a FactoryGirl created object further up in the test. Thanks, Tyler
Srushti Ambekallu
2012-Mar-21 07:55 UTC
[rspec-users] Testing Model Attributes That Are Updated In a Controller
On 21-Mar-2012, at 6:31 AM, Tyler DeWitt wrote:> I''ve got a controller that updates some attributes of a model: > > def confirmation > @cart = current_cart > customer = Stripe::Customer.create(description: current_user.email, card: params[:stripeToken]) > current_user.update_attributes(stripe_customer_id: customer.id) > end > > In my spec, how can I ensure the current_user has a stripe_customer_id after this controller is run? > > I have this: > > it "should create a stripe customer and save that to the stripe_customer_id of the user" do > @user.reload > @user.stripe_customer_id.should_not be_nil > end > > But it doesn''t work (I tried @user.reload because the database is being updated by the call to current_user.update_attributes). > > @user is a FactoryGirl created object further up in the test. > > Thanks, > Tyler > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-usersIt looks like that ought to work. The first thing I''d suggest is to ensure that your request is actually succeeding and not erroring out or getting redirected due to authentication. response.should be_ok Next, I''d confirm that the two users are the same (in spec & in the controller) by ''puts''ing the ids or something. Could you confirm that those two fairly common reasons these sorts of things usually fail for me don''t apply? Then we can start looking at other possible issues. Also, I would probably be more specific in my assertion by doing @user.stripe_customer.should == Stripe::Customer.last.id Thanks, Srushti http://c42.in