lib/generators/breadko/templates/breadkos_controller_spec.erb
require 'rails_helper'
RSpec.describe <%= objects.camelize %>Controller, type: :controller do
let(:user) { create(:user) }
let(:<%= object %>) { create(:<%= object %>) }
before do
allow(controller).to receive(:current_user).and_return(user)
allow(controller).to receive(:current_account).and_return(user.account)
end
describe "GET #index" do
it "assigns @<%= objects %>" do
get :index
expect(assigns(:<%= objects %>)).to eq([<%= object %>])
end
end
describe "GET #new" do
it "assigns @<%= object %>" do
get :new
expect(assigns(:<%= object %>)).to be_a_new_record
end
end
describe "POST #create" do
context 'with passing params' do
before { <%= object %> }
it "creates <%= object %>" do
params = { <%= object %>: { } }
expect do
post(:create, params: params)
end.to change(<%= object.camelize %>, :count).by(1)
end
end
# context 'with failing params' do
# before { <%= object %> }
# it "renders 'new' template" do
# params = { <%= object %>: { id: nil } }
# post(:create, params: params)
# expect(response).to render_template "new"
# end
# end
end
describe "GET #edit" do
it "assigns @<%= object %>" do
params = { id: <%= object %>.id }
get :edit, params: params
expect(assigns(:<%= object %>)).to eq(<%= object %>)
end
end
describe "PATCH #update" do
context 'with passing params' do
it "updates <%= object %>" do
params = { id: <%= object %>.id, <%= object %>: { name: "admin" } }
patch :update, params: params
expect(assigns(:<%= object %>).name).to eq("admin")
expect(response).to redirect_to(<%= objects %>_path)
end
end
context 'with failing params' do
it "renders 'edit'" do
params = { id: <%= object %>.id, <%= object %>: { name: nil } }
patch :update, params: params
expect(response).to render_template('edit')
end
end
end
describe "GET #show" do
it "updates <%= object %>" do
params = { id: <%= object %>.id }
patch :show, params: params
expect(assigns(:<%= object %>)).to eq(<%= object %>)
end
end
describe "DELETE #destroy" do
it "updates <%= object %>" do
params = { id: <%= object %>.id }
delete :destroy, params: params
expect(assigns(:<%= object %>)).to eq(<%= object %>)
end
it "raises an exception" do
expect do
delete :destroy, params: { id: "nothing" }
end.to raise_error(ActiveRecord::RecordNotFound)
end
end
end