From 1a4d8aca8a675aa02cead4b1db53ba5a3f9aa326 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 1 Jul 2009 20:12:29 +0200 Subject: Added tests to scaffold controller. --- railties/lib/generators/base.rb | 1 + .../lib/generators/erb/scaffold/scaffold_generator.rb | 5 +++-- .../lib/generators/erb/scaffold/templates/show.html.erb | 4 ++-- .../lib/generators/rails/scaffold/scaffold_generator.rb | 2 -- .../scaffold_controller/scaffold_controller_generator.rb | 16 ++++++++++++---- .../generators/test_unit/scaffold/scaffold_generator.rb | 2 ++ .../test_unit/scaffold/templates/functional_test.rb | 2 ++ 7 files changed, 22 insertions(+), 10 deletions(-) (limited to 'railties/lib') diff --git a/railties/lib/generators/base.rb b/railties/lib/generators/base.rb index 769311b6c1..81f6c7b343 100644 --- a/railties/lib/generators/base.rb +++ b/railties/lib/generators/base.rb @@ -7,6 +7,7 @@ module Rails :fixture => true, :force_plural => false, :helper => true, + :layout => true, :migration => true, :orm => 'active_record', :resource_controller => 'controller', diff --git a/railties/lib/generators/erb/scaffold/scaffold_generator.rb b/railties/lib/generators/erb/scaffold/scaffold_generator.rb index c8723785f4..ad40fe47ae 100644 --- a/railties/lib/generators/erb/scaffold/scaffold_generator.rb +++ b/railties/lib/generators/erb/scaffold/scaffold_generator.rb @@ -6,9 +6,10 @@ module Erb include Rails::Generators::ControllerNamedBase argument :attributes, :type => :hash, :default => {}, :banner => "field:type field:type" + class_option :singleton, :type => :boolean, :desc => "Supply to skip index action" + class_option :layout, :type => :boolean - # TODO Spec me def copy_index_file return if options[:singleton] copy_view :index @@ -26,8 +27,8 @@ module Erb copy_view :new end - # TODO invoke_if? def copy_layout_file + return unless options[:layout] template "layout.html.erb", File.join("app/views/layouts", controller_class_path, "#{controller_file_name}.html.erb") end diff --git a/railties/lib/generators/erb/scaffold/templates/show.html.erb b/railties/lib/generators/erb/scaffold/templates/show.html.erb index adecaf70c6..25567957be 100644 --- a/railties/lib/generators/erb/scaffold/templates/show.html.erb +++ b/railties/lib/generators/erb/scaffold/templates/show.html.erb @@ -1,10 +1,10 @@ <% for attribute in attributes -%>

- <%= attribute.column.human_name %>: + <%= attribute.human_name %>: <%%=h @<%= singular_name %>.<%= attribute.name %> %>

<% end -%> <%%= link_to 'Edit', edit_<%= singular_name %>_path(@<%= singular_name %>) %> | -<%%= link_to 'Back', <%= plural_name %>_path %> \ No newline at end of file +<%%= link_to 'Back', <%= plural_name %>_path %> diff --git a/railties/lib/generators/rails/scaffold/scaffold_generator.rb b/railties/lib/generators/rails/scaffold/scaffold_generator.rb index be86de7572..0bfbed42a0 100644 --- a/railties/lib/generators/rails/scaffold/scaffold_generator.rb +++ b/railties/lib/generators/rails/scaffold/scaffold_generator.rb @@ -3,8 +3,6 @@ require 'generators/rails/resource/resource_generator' module Rails module Generators class ScaffoldGenerator < ResourceGenerator #metagenerator - class_option :test_framework, :banner => "NAME", :desc => "Test framework to be invoked" - remove_hook_for :actions, :resource_controller hook_for :scaffold_controller, :required => true diff --git a/railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb b/railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb index 7fbbf90105..e73c139e96 100644 --- a/railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb +++ b/railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb @@ -4,11 +4,14 @@ module Rails include ControllerNamedBase check_class_collision :suffix => "Controller" - class_option :orm, :desc => "ORM to generate the controller for", :banner => "NAME", :type => :string - class_option :singleton, :type => :boolean, :desc => "Supply to create a singleton controller" # TODO Spec me + + class_option :orm, :banner => "NAME", :type => :string, :required => true, + :desc => "ORM to generate the controller for" + + class_option :singleton, :type => :boolean, :desc => "Supply to create a singleton controller" def create_controller_files - template 'controller.rb', File.join('app/controllers', class_path, "#{file_name}_controller.rb") + template 'controller.rb', File.join('app/controllers', class_path, "#{controller_file_name}_controller.rb") end hook_for :template_engine, :test_framework, :as => :scaffold @@ -22,7 +25,12 @@ module Rails protected def orm_class - @orm_class ||= "#{options[:orm].to_s.classify}::Generators::ActionORM".constantize + @orm_class ||= begin + action_orm = "#{options[:orm].to_s.classify}::Generators::ActionORM" + action_orm.constantize + rescue NameError => e + raise Error, "Could not load #{action_orm}, skipping controller. Error: #{e.message}." + end end def orm_instance diff --git a/railties/lib/generators/test_unit/scaffold/scaffold_generator.rb b/railties/lib/generators/test_unit/scaffold/scaffold_generator.rb index 7c73a23267..0f6255383e 100644 --- a/railties/lib/generators/test_unit/scaffold/scaffold_generator.rb +++ b/railties/lib/generators/test_unit/scaffold/scaffold_generator.rb @@ -4,6 +4,8 @@ module TestUnit module Generators class ScaffoldGenerator < Base include Rails::Generators::ControllerNamedBase + + class_option :singleton, :type => :boolean, :desc => "Supply to create a singleton controller" check_class_collision :suffix => "ControllerTest" def create_test_files diff --git a/railties/lib/generators/test_unit/scaffold/templates/functional_test.rb b/railties/lib/generators/test_unit/scaffold/templates/functional_test.rb index cd2fc578bf..e4bf4035da 100644 --- a/railties/lib/generators/test_unit/scaffold/templates/functional_test.rb +++ b/railties/lib/generators/test_unit/scaffold/templates/functional_test.rb @@ -1,11 +1,13 @@ require 'test_helper' class <%= controller_class_name %>ControllerTest < ActionController::TestCase +<% unless options[:singleton] -%> test "should get index" do get :index assert_response :success assert_not_nil assigns(:<%= table_name %>) end +<% end -%> test "should get new" do get :new -- cgit v1.2.3