# Problem testing portion of code

**URL:** <https://www.ruby-forum.com/t/problem-testing-portion-of-code/49210>\
**Category:** Rails\
**Created:** [December 1, 2005, 12:03pm UTC](https://www.ruby-forum.com/t/problem-testing-portion-of-code/49210 "2005-12-01T12:03:20Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![nicksnels](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/aca169/32.png) [@nicksnels](https://www.ruby-forum.com/u/nicksnels)\
**Post date:** [December 1, 2005, 12:03pm UTC](https://www.ruby-forum.com/t/problem-testing-portion-of-code/49210/1 "2005-12-01T12:03:20Z")

</div>

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](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

---

<div class="post-metadata">

**Author:** ![nicksnels](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/aca169/32.png) [@nicksnels](https://www.ruby-forum.com/u/nicksnels)\
**Post date:** [December 1, 2005, 1:42pm UTC](https://www.ruby-forum.com/t/problem-testing-portion-of-code/49210/2 "2005-12-01T13:42:05Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![nicksnels](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/aca169/32.png) [@nicksnels](https://www.ruby-forum.com/u/nicksnels)\
**Post date:** [December 1, 2005, 1:46pm UTC](https://www.ruby-forum.com/t/problem-testing-portion-of-code/49210/3 "2005-12-01T13:46:09Z")

</div>

ack…typo

that should be

get :validate, { :user\_id =\> user.id :key =\> user.security\_token }

sorry

---

<div class="post-metadata">

**Author:** ![nicksnels](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/aca169/32.png) [@nicksnels](https://www.ruby-forum.com/u/nicksnels)\
**Post date:** [December 1, 2005, 2:03pm UTC](https://www.ruby-forum.com/t/problem-testing-portion-of-code/49210/4 "2005-12-01T14:03:21Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![nicksnels](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/aca169/32.png) [@nicksnels](https://www.ruby-forum.com/u/nicksnels)\
**Post date:** [December 1, 2005, 3:32pm UTC](https://www.ruby-forum.com/t/problem-testing-portion-of-code/49210/5 "2005-12-01T15:32:29Z")

</div>

No problem. Glad I could help.
