DEV Community

n350071🇯🇵
n350071🇯🇵

Posted on • Edited on

[RSpec] Controller/Request Spec Basic

prepare

set params to Post method

let(:attributes) {
  author: 'n350071',
  publisher: 'my publish'
}
subject { post :create, book: attributes }

set params to Get method

let(:params) {
  author: 'n350071'
}
subject { get :index, params }

set session

before { session[:book_id] = book.id }

Assertion

send_file: downnload

expect(response.headers['Content-Type']).to eq 'application/zip'
expect(response.headers['Content-Type']).to eq 'application/pdf'
expect(response.headers['Content-Type']).to eq 'application/doc'

status & render & redirect_to

expect(response.status).to eq 200
expect(response).to render_template :new

expect(response.status).to eq 302
expect(response).to redirect_to(new_book_path)

404 test

The 404.html is stored in 'public/404.html'.

describe '#show' do
  context 'the resource is not found' do
    it 'should render 404' do
      get :file_download
      expect(response.status).to eq 404
      expect(response).to render_template(file: Rails.root.join('public','404.html'))
    end
  end
end

JSON response

it 'should respond JSON and returns message Hello' do
  json_data = JSON.parse(response.body)
  expect(json_data['message']).to eq 'Hello'
end

🔗 Parent Note

Top comments (0)