Skip to content

Remove non-Rails-5 features from controller spec scaffold #1689

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 10, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 17 additions & 51 deletions lib/generators/rspec/scaffold/templates/controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@
# is no simpler way to get a handle on the object needed for the example.
# Message expectations are only used when there is no simpler way to specify
# that an instance is receiving a specific message.
#
# Also compared to earlier versions of this generator, there are no longer any
# expectations of assigns and templates rendered. These features have been
# removed from Rails core in Rails 5, but can be added back in via the
# `rails-controller-testing` gem.

<% module_namespacing do -%>
RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:controller) %> do
Expand All @@ -39,50 +44,50 @@

<% unless options[:singleton] -%>
describe "GET #index" do
it "assigns all <%= table_name.pluralize %> as @<%= table_name.pluralize %>" do
it "returns a success response" do
<%= file_name %> = <%= class_name %>.create! valid_attributes
<% if RUBY_VERSION < '1.9.3' -%>
get :index, {}, valid_session
<% else -%>
get :index, params: {}, session: valid_session
<% end -%>
expect(assigns(:<%= table_name %>)).to eq([<%= file_name %>])
expect(response).to be_success
end
end

<% end -%>
describe "GET #show" do
it "assigns the requested <%= ns_file_name %> as @<%= ns_file_name %>" do
it "returns a success response" do
<%= file_name %> = <%= class_name %>.create! valid_attributes
<% if RUBY_VERSION < '1.9.3' -%>
get :show, {:id => <%= file_name %>.to_param}, valid_session
<% else -%>
get :show, params: {id: <%= file_name %>.to_param}, session: valid_session
<% end -%>
expect(assigns(:<%= ns_file_name %>)).to eq(<%= file_name %>)
expect(response).to be_success
end
end

describe "GET #new" do
it "assigns a new <%= ns_file_name %> as @<%= ns_file_name %>" do
it "returns a success response" do
<% if RUBY_VERSION < '1.9.3' -%>
get :new, {}, valid_session
<% else -%>
get :new, params: {}, session: valid_session
<% end -%>
expect(assigns(:<%= ns_file_name %>)).to be_a_new(<%= class_name %>)
expect(response).to be_success
end
end

describe "GET #edit" do
it "assigns the requested <%= ns_file_name %> as @<%= ns_file_name %>" do
it "returns a success response" do
<%= file_name %> = <%= class_name %>.create! valid_attributes
<% if RUBY_VERSION < '1.9.3' -%>
get :edit, {:id => <%= file_name %>.to_param}, valid_session
<% else -%>
get :edit, params: {id: <%= file_name %>.to_param}, session: valid_session
<% end -%>
expect(assigns(:<%= ns_file_name %>)).to eq(<%= file_name %>)
expect(response).to be_success
end
end

Expand All @@ -98,16 +103,6 @@
}.to change(<%= class_name %>, :count).by(1)
end

it "assigns a newly created <%= ns_file_name %> as @<%= ns_file_name %>" do
<% if RUBY_VERSION < '1.9.3' -%>
post :create, {:<%= ns_file_name %> => valid_attributes}, valid_session
<% else -%>
post :create, params: {<%= ns_file_name %>: valid_attributes}, session: valid_session
<% end -%>
expect(assigns(:<%= ns_file_name %>)).to be_a(<%= class_name %>)
expect(assigns(:<%= ns_file_name %>)).to be_persisted
end

it "redirects to the created <%= ns_file_name %>" do
<% if RUBY_VERSION < '1.9.3' -%>
post :create, {:<%= ns_file_name %> => valid_attributes}, valid_session
Expand All @@ -119,22 +114,13 @@
end

context "with invalid params" do
it "assigns a newly created but unsaved <%= ns_file_name %> as @<%= ns_file_name %>" do
it "returns a success response (i.e. to display the 'new' template)" do
<% if RUBY_VERSION < '1.9.3' -%>
post :create, {:<%= ns_file_name %> => invalid_attributes}, valid_session
<% else -%>
post :create, params: {<%= ns_file_name %>: invalid_attributes}, session: valid_session
<% end -%>
expect(assigns(:<%= ns_file_name %>)).to be_a_new(<%= class_name %>)
end

it "re-renders the 'new' template" do
<% if RUBY_VERSION < '1.9.3' -%>
post :create, {:<%= ns_file_name %> => invalid_attributes}, valid_session
<% else -%>
post :create, params: {<%= ns_file_name %>: invalid_attributes}, session: valid_session
<% end -%>
expect(response).to render_template("new")
expect(response).to be_success
end
end
end
Expand All @@ -156,16 +142,6 @@
skip("Add assertions for updated state")
end

it "assigns the requested <%= ns_file_name %> as @<%= ns_file_name %>" do
<%= file_name %> = <%= class_name %>.create! valid_attributes
<% if RUBY_VERSION < '1.9.3' -%>
put :update, {:id => <%= file_name %>.to_param, :<%= ns_file_name %> => valid_attributes}, valid_session
<% else -%>
put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: valid_attributes}, session: valid_session
<% end -%>
expect(assigns(:<%= ns_file_name %>)).to eq(<%= file_name %>)
end

it "redirects to the <%= ns_file_name %>" do
<%= file_name %> = <%= class_name %>.create! valid_attributes
<% if RUBY_VERSION < '1.9.3' -%>
Expand All @@ -178,24 +154,14 @@
end

context "with invalid params" do
it "assigns the <%= ns_file_name %> as @<%= ns_file_name %>" do
<%= file_name %> = <%= class_name %>.create! valid_attributes
<% if RUBY_VERSION < '1.9.3' -%>
put :update, {:id => <%= file_name %>.to_param, :<%= ns_file_name %> => invalid_attributes}, valid_session
<% else -%>
put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: invalid_attributes}, session: valid_session
<% end -%>
expect(assigns(:<%= ns_file_name %>)).to eq(<%= file_name %>)
end

it "re-renders the 'edit' template" do
it "returns a success response (i.e. to display the 'edit' template)" do
<%= file_name %> = <%= class_name %>.create! valid_attributes
<% if RUBY_VERSION < '1.9.3' -%>
put :update, {:id => <%= file_name %>.to_param, :<%= ns_file_name %> => invalid_attributes}, valid_session
<% else -%>
put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: invalid_attributes}, session: valid_session
<% end -%>
expect(response).to render_template("edit")
expect(response).to be_success
end
end
end
Expand Down