Написание rspe c тестов для метода SessionsController
create
, где я сначала создаю пользователя (has_many :authorizations
) с аргументом Omniauth ha sh, а затем использую отношение коллекции прокси для создать Авторизацию (belongs_to :user
) с аргументом Omniauth ha sh.
По иронии судьбы, выяснили, как написать код, но очень хотелось бы узнать, как написать для него тестовую спецификацию c. Код работает правильно и выглядит следующим образом:
user = User.create_with_omniauth(auth_hash['info'])
auth = user.authorizations.create_with_omniauth(auth_hash)
В зависимости от того, как я его сформулирую, я получаю сообщение об ошибке: # получено неожиданное сообщение: авторизация с (без аргументов) ИЛИ NameError: неопределенная локальная переменная или метод `
авторизации: настройка теста следующая (строка, помеченная * - да, еще одна глупая попытка - выдает ошибку):
context "user registers with given provider" do
let(:user) {instance_double('User', name: 'test name', email: 'test@gmail.com')}
let(:auth) {instance_double('Authorization', provider: "github", uid: "12345", user_id: 1)}
it 'creates user record using auth hash' do
allow(controller).to receive(:session?).and_return(false)
allow(Authorization).to receive(:exists?).with(OmniAuth.config.mock_auth[:github]).and_return(false)
allow(User).to receive(:exists?).with(OmniAuth.config.mock_auth[:github]['info']).and_return(false)
expect(User).to receive(:create_with_omniauth).with(OmniAuth.config.mock_auth[:github]
['info']).and_return(user)
post :create, provider: :github
end
it 'creates authorization which belongs to user' do
allow(controller).to receive(:session?).and_return(false)
allow(Authorization).to receive(:exists?).with(OmniAuth.config.mock_auth[:github]).and_return(false)
allow(User).to receive(:exists?).with(OmniAuth.config.mock_auth[:github]['info']).and_return(false)
allow(User).to receive(:create_with_omniauth).with(OmniAuth.config.mock_auth[:github]
['info']).and_return(user)
*expect(user.authorizations).to
receive(:create_with_omniauth).with(OmniAuth.config.mock_auth[:github]).and_return(auth)*
post :create, provider: :github
end
end
Пожалуйста, помогите!