Czytanie RSPEC

Cześć mam prośbę czy może mi ktoś powiedzieć jak “przeczytać” te testy z rspec’a?

"require ‘spec_helper’

describe CategoriesController do

let(:valid_attributes) { { name: ‘MyString’} }

let(:valid_session) { {} }

let(:user) { build(:user) }

before do
sign_in user
controller.stub(:user_signed_in?).and_return(true)
controller.stub(:current_user).and_return(user)
controller.stub(:authenticate_user!).and_return(user)
end

context ‘user is not an admin’ do
before do
controller.current_user.stub(admin?: false)
end

describe 'GET new' do
  it 'redirects user to the login page' do
    get :new, {}, valid_session
    expect(controller.category).to be_a_new(Category)
  end
end

describe 'GET edit' do
  it 'redirects user to the login page' do
    category = Category.create! valid_attributes
    get :edit, { id: category.to_param }, valid_session
    expect(controller.category).to eq(category)
  end
end

describe 'POST create' do
  it 'redirects user to the login page' do
    post :create, {category: valid_attributes}, valid_session
    expect(response).to redirect_to(Category.last)
  end
end"

dokładnie chodzi mi o fragment z ‘POST create’

czy ten test ma tworzyć kategorię:

a) po zalogowaniu “rspeca” jako user nie będący adminem
b) po zalogowaniu “rspeca” jako user będącym adminem
c) jako nie zalogowany

?

Siedzę już tyle godzin nad tym i nie mogę tego rozgryźć wydaję mi się, że jako user nie będący adminem, ale nie jestem pewien. Za wyjaśnienie bardzo dziękuję.

Każdy z tych przykładów dzieje się, gdy użytkownik jest zalogowany, ale nie jest adminem.
W 11 linijce kodu (6 nie licząc enterów) masz blok metody before, w której określasz sobie to, co się dzieje przed każdym pojedynczym testem. W kolejnej linijce masz, że użytkownik jest zalogowany i symulujesz, że tak faktycznie jest w trzech następnych. Dalej robisz to wszystko w kontekście konta, które nie jest adminem :slight_smile:

Dzięki, czyli dobrze myślałem! :slight_smile: