Hi, I''m getting a bit frustated here. I''m trying to test the following code in my User controller: def validate if params[:user_id] and params[:key] @user = User.find(:first, :conditions => ["id= ? AND security_token = ? AND token_expiry >= now()", params[:user_id], params[:key]]) if @user @user.verified = 1 @user.update flash[:notice] = "Uw account is geverifieerd. Welkom op onze site." redirect_to :action => ''login'' else flash[:notice] = "Uw account kon niet geverifieerd worden." end else redirect_to :action => ''signup'' end end validates get called like: http://localhost:3000/user/validate?user_id=15&key=4f0f73620459a199c2816afb32fd4599 I''m trying to test it as follows: def test_validate get :validate, { :user_id => 1000005, :key => "abc" } assert_equal 1, User.count assert_equal 1, User.verified assert_equal 1, ActionMailer::Base.deliveries.size assert_redirected_to :action => "login" end The first line get :validate ... works. But the second line returns 6 (I have 6 users in my user fixture), but according to my validate method it should only return 1 user. I have tried different kind of things, but cann''t get the test to work. Hope somebody has some helpful comments. Code improvements are always greatly appreciated! Kind regards, Nick -- Posted via http://www.ruby-forum.com/.
calling User.count is going to count all users records in your db. it''s equivalent to: "select COUNT(*) from users" so it makes sense that if you have 6 user records that 6 will be returned. here is what i would do def test_validate user = User.find(1000005) get :validate, { :user_id => user.id :key => user.key } user(reload) assert_equal 1, user.verified assert_equal 1, ActionMailer::Base.deliveries.size assert_redirected_to :action => "login" end On 12/1/05, Nick Snels <nick.snels-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > Hi, > > I''m getting a bit frustated here. I''m trying to test the following code > in my User controller: > > def validate > if params[:user_id] and params[:key] > @user = User.find(:first, > :conditions => ["id= ? AND security_token = ? AND > token_expiry >= now()", params[:user_id], params[:key]]) > > if @user > @user.verified = 1 > @user.update > flash[:notice] = "Uw account is geverifieerd. Welkom op onze > site." > redirect_to :action => ''login'' > else > flash[:notice] = "Uw account kon niet geverifieerd worden." > end > else > redirect_to :action => ''signup'' > end > end > > validates get called like: > > http://localhost:3000/user/validate?user_id=15&key=4f0f73620459a199c2816afb32fd4599 > > I''m trying to test it as follows: > > def test_validate > get :validate, { :user_id => 1000005, :key => "abc" } > assert_equal 1, User.count > assert_equal 1, User.verified > assert_equal 1, ActionMailer::Base.deliveries.size > assert_redirected_to :action => "login" > end > > The first line get :validate ... works. But the second line returns 6 (I > have 6 users in my user fixture), but according to my validate method it > should only return 1 user. I have tried different kind of things, but > cann''t get the test to work. > > Hope somebody has some helpful comments. Code improvements are always > greatly appreciated! > > Kind regards, > > Nick > > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails >_______________________________________________ Rails mailing list Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails
ack...typo that should be get :validate, { :user_id => user.id :key => user.security_token } sorry On 12/1/05, Chris Hall <christopher.k.hall-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > calling User.count is going to count all users records in your db. it''s > equivalent to: "select COUNT(*) from users" so it makes sense that if you > have 6 user records that 6 will be returned. > > here is what i would do > > def test_validate > user = User.find(1000005) > get :validate, { :user_id => user.id :key => user.key } > user(reload) > assert_equal 1, user.verified > assert_equal 1, ActionMailer::Base.deliveries.size > assert_redirected_to :action => "login" > end > > On 12/1/05, Nick Snels <nick.snels-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > Hi, > > > > I''m getting a bit frustated here. I''m trying to test the following code > > in my User controller: > > > > def validate > > if params[:user_id] and params[:key] > > @user = User.find(:first, > > :conditions => ["id= ? AND security_token = ? AND > > token_expiry >= now()", params[:user_id], params[:key]]) > > > > if @user > > @user.verified = 1 > > @user.update > > flash[:notice] = "Uw account is geverifieerd. Welkom op onze > > site." > > redirect_to :action => ''login'' > > else > > flash[:notice] = "Uw account kon niet geverifieerd worden." > > end > > else > > redirect_to :action => ''signup'' > > end > > end > > > > validates get called like: > > http://localhost:3000/user/validate?user_id=15&key=4f0f73620459a199c2816afb32fd4599 > > > > > > I''m trying to test it as follows: > > > > def test_validate > > get :validate, { :user_id => 1000005, :key => "abc" } > > assert_equal 1, User.count > > assert_equal 1, User.verified > > assert_equal 1, ActionMailer::Base.deliveries.size > > assert_redirected_to :action => "login" > > end > > > > The first line get :validate ... works. But the second line returns 6 (I > > have 6 users in my user fixture), but according to my validate method it > > > > should only return 1 user. I have tried different kind of things, but > > cann''t get the test to work. > > > > Hope somebody has some helpful comments. Code improvements are always > > greatly appreciated! > > > > Kind regards, > > > > Nick > > > > -- > > Posted via http://www.ruby-forum.com/. > > _______________________________________________ > > Rails mailing list > > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > > http://lists.rubyonrails.org/mailman/listinfo/rails > > > >_______________________________________________ Rails mailing list Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails
Thanks Christopher, it worked marvelleously!! Had to change user(reload) to user.reload . And I caught the typo (my skills are improving, slowly :) ) Thanks again! -- Posted via http://www.ruby-forum.com/.
No problem. Glad I could help. On 12/1/05, Nick Snels <nick.snels-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > Thanks Christopher, > > it worked marvelleously!! Had to change user(reload) to user.reload . > And I caught the typo (my skills are improving, slowly :) ) > > Thanks again! > > > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails >_______________________________________________ Rails mailing list Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails