controller_steps.rb 2.29 KB
When /^I generate a "(.*)" controller with "(.*)" action$/ do |controller, action|
  system "cd #{@rails_root} && " <<
         "script/generate controller #{controller} #{action} && " <<
         "cd .."
end

Then /^a "new" controller action for "posts" should be generated$/ do
  assert_generated_file("app/controllers/posts_controller.rb") do
    "  def new\n"            <<
    "    @post = Post.new\n" <<
    "  end"
  end
end

Then /^a "create" controller action for "posts" should be generated$/ do
  assert_generated_file("app/controllers/posts_controller.rb") do
    "  def create\n"                          <<
    "    @post = Post.new(params[:post])\n"   <<
    "    @post.save\n"                        <<
    "    flash[:success] = 'Post created.'\n" <<
    "    redirect_to root_path\n"             <<
    "  end"
  end
end

Then /^a "show" controller action for "posts" should be generated$/ do
  assert_generated_file("app/controllers/posts_controller.rb") do
    "  def show\n"                         <<
    "    @post = Post.find(params[:id])\n" <<
    "  end"
  end
end

Then /^a "edit" controller action for "posts" should be generated$/ do
  assert_generated_file("app/controllers/posts_controller.rb") do
    "  def edit\n"                         <<
    "    @post = Post.find(params[:id])\n" <<
    "  end"
  end
end

Then /^a "update" controller action for "posts" should be generated$/ do
  assert_generated_file("app/controllers/posts_controller.rb") do
    "  def update\n"                               <<
    "    @post = Post.find(params[:id])\n"         <<
    "    @post.update_attributes(params[:post])\n" <<
    "    flash[:success] = 'Post updated.'\n"      <<
    "    redirect_to root_path\n"                  <<
    "  end"
  end
end

Then /^a "destroy" controller action for "posts" should be generated$/ do
  assert_generated_file("app/controllers/posts_controller.rb") do
    "  def destroy\n"                         <<
    "    @post = Post.find(params[:id])\n"    <<
    "    @post.destroy\n"                     <<
    "    flash[:success] = 'Post deleted.'\n" <<
    "    redirect_to root_path\n"             <<
    "  end"
  end
end

Then /^only a "([^\"]*)" action for RESTful "([^\"]*)" route should be generated$/ do |action, resource|
  assert_generated_route_for resource, action
end