In my application user after logging arrives +1 experience. I am trying to write a test that checks whether the experience certainly has been added.
User model:
def add_experience(how)
update_attribute(:experience, experience + how)
end
Session helper:
def log_in(user)
session[:user_id] = user.id
user.add_experience(1)
end
and Session Controller
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
flash[:success] = "Success!"
log_in user
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
redirect_to root_path
else
flash.now[:danger] = 'Ups!'
render 'static_pages/home'
end
end
After logging in actually adds experience points, but test out the error:
"@user.experience" didn't change by 1.
Expected: 1
Actual: 0
Test login:
def setup
@user = users(:example)
end
test "example login test" do
get root_path
assert_difference '@user.experience', 1 do
post login_path, params: { session: { email: @user.email,
password: 'password' } }
end
end
Fixtures:
example:
name: Example name
email: ex@example.com
password_digest: <%= User.digest('password') %>
experience: 0
Aucun commentaire:
Enregistrer un commentaire