2015-04-22 3 views
0

Я хочу проверить, вошел ли пользователь в каждый из действий контроллера.Параметры Rspec для общего контекста

Что лучше использовать для СУШКИ, чтобы я мог повторить его для всех моих действий, то есть получить, показать, новое, изменить.

Это потребует передачи в get: index, get: new и т. Д. И передачи в параметре для показа и редактирования.

Вот не-DRY версия только с одним действием:

RSpec.shared_context 'when user is not logged in' do 

before do 
    sign_out :user 
    end 

    it 'GET#index redirects to sign in page' do 
     get :index  
     expect(response).to redirect_to new_user_session_path 
    end 

Я хочу сделать это для каждого из действий контроллера без необходимости копировать/вставить код.

Надеюсь, это ясно! Заранее спасибо!

ответ

1

Я не знаю точно, но я думаю, что это должно работать:

RSpec.shared_examples 'when user is not logged in' do |actions| 
    before { sign_out :user } 

    actions.each do |action| 
    it "GET##{action} redirects to sign in page" do 
     get action 
     expect(response).to redirect_to new_user_session_path 
    end 
    end 
end 

it_should_behave_like 'when user is not logged in', %i(new index)