mardi 24 novembre 2015

Rails4 strange behavior in test

In my test I want multiple users to be created and the last one logged in. So here is my code:

  test "add_answer to ad" do 
    user = newuser
    text = "mytext mytext mytext mytext mytext mytext mytext"
    post :savenew, cityId: City.last.id, text: text , maxPrice: "1", subscribe: false
    $stdout.puts "#{assigns(:current_user)} CURUSER"
    @ad = assigns(:ad)
    user = newuser(0, 'new2@new.com')
    post :add_answer, id: @ad.id, text: text
    $stdout.puts "#{assigns(:current_user)} CURFIRM"
    assert_equal "Ответ успешно добавлен.", flash[:success]
    user.destroy
   end

How I create new users:

def newuser(rank = 2, email = 'new@new.com')
 user = User.new
 user.password = '123456'
 user.newpassword = true
 user.email = email
 user.contact = 'new_user'
 case rank
 when 0
    user.urank = URank.firm.id
 when 1
    user.urank = URank.admin.id
 when 2
    user.urank = URank.user.id
 end
 user.save
 $stdout.puts "#{user} NEW"
 this_controller = @controller
 @controller = MainController.new
 get :logout
 post :login, email: email, pass: '123456'
 @controller = this_controller
 return user
end

And my logout:

if cookies[:id]
  Rails.cache.delete(cookies.signed[:id][0])
  cookies.delete(:id)
end
@current_user = nil

(There is no cache it Test)

So as a result when I create new users I can see this: enter image description here

As you can see the first user is just another user and second == first. What is happening there and how can I fix this? Thank you!

Aucun commentaire:

Enregistrer un commentaire