Невозможно установить свойство пользователя Devise sign_in_count в тесте контроллера rspec.Сбрасывается на 0 в контроллере - PullRequest
0 голосов
/ 05 июня 2011

У меня есть контроллер, который делает тест:

@first_login = (@user.sign_in_count == 1)

И мне нужно настроить его с помощью devise в спецификации rspec:

Я испробовал четыре идеи: во всех из них пользователь создан как: user = Factory(:member) [см. Ниже для фабрики]

  user.stubs(:sign_in_count).returns(1)
  sign_in user
  get 'index'

  user.sign_in_count = 1 
  sign_in user # here user.sign_in_count == 1
  get 'index'  # here user.sign_in_count == 1

  sign_in user
  sign_in user
  get 'index'

  sign_in user
  user.sign_in_count = 1 
  get 'index'

Но каждый раз, когда в контроллере, специфичные для пользователя свойства устройства обнуляются / обнуляются.

reset_password_token: nil, reset_password_sent_at: nil, 
remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, 
last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil

Есть идеи, почему?

[specs / factories.rb - factory_girl]

Factory.define :member, :class => User do |c|
  c.password "a123456h"
  c.first_name "Jack"
  c.last_name "Lee"
  c.email "jxxxx@example.com"
  c.address_street "123 Main"
  c.address_city "Anytown"
  c.address_state "NV"
  c.address_zip "40455"
  c.address_country "USA"
  c.when_account_created 2.days.ago
  c.change_password_count 3
  c.forgot_password_count 2
  c.created_at 2.days.ago
  c.updated_at 10.hours.ago
end

Ответы [ 2 ]

0 голосов
/ 07 июня 2011

Сохраните пользователя.

Похоже, что я решил проблему с этим в спецификации:

  user = Factory(:customer)
  sign_in user
  user.sign_in_count = 1 
  user.save!
  get 'index'

Не уверен, если это предназначено в способе devise / warden's helper methodпредполагается использовать в контроллере, но он работает.

Я оставлю его открытым, если у кого-то есть объяснение получше.

0 голосов
/ 06 июня 2011

Как / где пользователь начинает создаваться в спецификации?

...