rspec для контроллера без заводской девушки - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь написать спецификационный код для моего контроллера.И я не уверен, где происходит сбой.

Код контроллера

def index
    @users = User.all
  end

  def update
    authorize! :update, @user
    respond_to do |format|
      if @user.update(user_params)
        format.html { redirect_to user_index_path }
      else
        format.html { render :index }
      end
    end
  end

  private

  def set_user
    @user = User.find(params[:id])
  end

  def user_params
    params.permit(:active)
  end

Спецификация для вышеуказанного контроллера

RSpec.describe UserController, type: :controller do
    describe 'GET #index' do
      let(:user) {User.create!(name: "hari")}
      context 'with user details'do
        it 'loads correct user details' do
          get :index

      expect(response).to permit(:user)
    end
      end

      context 'without user details' do
        it 'doesnot loads correct user details' do
          get :index

        expect(response).not_to permit(:user)
      end
    end
    end

    describe 'Patch #update' do

      context 'when valid params' do
        let(:attr) do
          {active: 'true'}
        end

        before(:each) do
       @user = subject.current_user
       put :update, params: { user: attr }
       @user.reload
     end

     it 'redirects to user_index_path ' do
       expect(response).redirect_to(user_index_path)
     end

     it 'sets active state' do
       expect(@user.active?('true')).to be true
     end
   end

   context 'when invalid param' do
     let(:attr) do
       {active: 'nil'}
     end

     before(:each) do
       @user = subject.current_user
       put :update, params: { user: attr }
       @user.reload
     end

     it 'render index' do
       expect(respone.status).to eq(200)
     end

     it 'doesnot change active state' do
       expect(@user.active?(nil)).to be true
     end
   end
  end
 end

Я только новичок и попробовалкод спецификации для моего контроллера, проверив https://relishapp.com/rspec/rspec-rails/docs/gettingstarted. Можете ли вы помочь мне, где моя спецификация работает неправильно, или кто-нибудь может дать мне несколько тестовых примеров для этих методов или может перенаправить меня в руководство по rspec?сбой метода индекса, и мой

журнал терминала равен

1) UserController GET #index with user details loads correct user details
     Failure/Error: expect(response).to permit(:user)

     NoMethodError:
       undefined method `permit' for #<RSpec::ExampleGroups::UserController::GETIndex::WithUserDetails:0x00005614152406b0>
       Did you mean?  print
     # ./spec/controllers/user_controller_spec.rb:10:in `block (4 levels) in <top (required)>'
...