From 1198ed354d5d15b589213ee1490b6df0c61b5537 Mon Sep 17 00:00:00 2001 From: Dan Croak Date: Sun, 12 Jul 2009 23:49:33 -0400 Subject: [PATCH] updating coulda --- vendor/plugins/coulda/features/step_definitions/model_steps.rb | 7 +++++++ vendor/plugins/coulda/features/step_definitions/view_steps.rb | 30 +++++++++++++++++++++++++----- vendor/plugins/coulda/features/view_generator.feature | 9 ++++++++- vendor/plugins/coulda/generators/support/generator_helper.rb | 16 ++++++++++++++-- vendor/plugins/coulda/generators/view/templates/view_new.html.erb | 11 ++++++++++- 5 files changed, 64 insertions(+), 9 deletions(-) diff --git a/vendor/plugins/coulda/features/step_definitions/model_steps.rb b/vendor/plugins/coulda/features/step_definitions/model_steps.rb index 343275d..a89f90f 100644 --- a/vendor/plugins/coulda/features/step_definitions/model_steps.rb +++ b/vendor/plugins/coulda/features/step_definitions/model_steps.rb @@ -26,6 +26,13 @@ When /^I generate a model "(.*)" with file "(.*)"$/ do |model, file| "cd .." end +When /^I generate a Post model with title, body, and User$/ do + system "cd #{@rails_root} && " << + "script/generate model Post title:string body:text user:belongs_to && " << + "rake db:migrate " << + "cd .." +end + # MODEL Then /^the "(.*)" model should have "(.*)" macro$/ do |model, macro| diff --git a/vendor/plugins/coulda/features/step_definitions/view_steps.rb b/vendor/plugins/coulda/features/step_definitions/view_steps.rb index 2919643..e8e8158 100644 --- a/vendor/plugins/coulda/features/step_definitions/view_steps.rb +++ b/vendor/plugins/coulda/features/step_definitions/view_steps.rb @@ -4,12 +4,32 @@ When /^I generate a "([^\"]*)" view for "([^\"]*)"$/ do |view, resource| "cd .." end -When /^a standard "new" view for "posts" should be generated$/ do +When /^a SemiFormal "new" view for "posts" should be generated$/ do assert_generated_file("app/views/posts/new.html.erb") do - "

New post

\n\n" << - "<% form_for(@post) do |form| %>\n" << - " <%= form.error_messages %>\n" << - " <%= form.submit 'Create', :disable_with => 'Please wait...' %>\n" << + "

New post

\n\n" << + "<% form_for(@post) do |form| %>\n" << + " <%= form.error_messages %>\n" << + "
\n" << + "
\n" << + "
\n" << + " <%= form.submit 'Create', :disable_with => 'Please wait...' %>\n" << + "
\n" << + "<% end %>" + end +end + +Then /^a SemiFormal "new" view for "posts" should be generated with fields$/ do + assert_generated_file("app/views/posts/new.html.erb") do + "

New post

\n\n" << + "<% form_for(@post) do |form| %>\n" << + " <%= form.error_messages %>\n" << + "
\n" << + " <%= form.string :title %>\n" << + " <%= form.text :body %>\n" << + "
\n" << + "
\n" << + " <%= form.submit 'Create', :disable_with => 'Please wait...' %>\n" << + "
\n" << "<% end %>" end end diff --git a/vendor/plugins/coulda/features/view_generator.feature b/vendor/plugins/coulda/features/view_generator.feature index f8d8e17..a5730d0 100644 --- a/vendor/plugins/coulda/features/view_generator.feature +++ b/vendor/plugins/coulda/features/view_generator.feature @@ -7,5 +7,12 @@ Feature: Rails view generator Given a Rails app And the coulda plugin is installed When I generate a "new" view for "Posts" - Then a standard "new" view for "posts" should be generated + Then a SemiFormal "new" view for "posts" should be generated + + Scenario: View generator for new action + Given a Rails app + And the coulda plugin is installed + When I generate a Post model with title, body, and User + And I generate a "new" view for "Posts" + Then a SemiFormal "new" view for "posts" should be generated with fields diff --git a/vendor/plugins/coulda/generators/support/generator_helper.rb b/vendor/plugins/coulda/generators/support/generator_helper.rb index 435e41e..1419516 100644 --- a/vendor/plugins/coulda/generators/support/generator_helper.rb +++ b/vendor/plugins/coulda/generators/support/generator_helper.rb @@ -18,9 +18,21 @@ module Coulda end def columns_for_form - resource_class.content_columns. + resource_class.constantize.content_columns. collect { |column| [column.name, column.type] }. - delete_if { |column| REMOVABLE_COLUMNS.include?(column.first) } + delete_if { |column| remove_column?(column.first) } + end + + def active_record_defined? + models = Dir.glob(File.join( RAILS_ROOT, 'app', 'models', '*.rb')). + collect { |path| path[/.+\/(.+).rb/,1] }. + collect {|model| model.classify } + models.include?(resource_class) + end + + def remove_column?(column) + REMOVABLE_COLUMNS.include?(column) || + !(column =~ /_id$/).nil? end end end diff --git a/vendor/plugins/coulda/generators/view/templates/view_new.html.erb b/vendor/plugins/coulda/generators/view/templates/view_new.html.erb index a85dd14..6174b80 100644 --- a/vendor/plugins/coulda/generators/view/templates/view_new.html.erb +++ b/vendor/plugins/coulda/generators/view/templates/view_new.html.erb @@ -2,5 +2,14 @@ <%% form_for(@<%= resource %>) do |form| %> <%%= form.error_messages %> - <%%= form.submit 'Create', :disable_with => 'Please wait...' %> +
+<% if active_record_defined? -%> +<% columns_for_form.each do |attribute_name, attribute_type| -%> + <%%= form.<%= attribute_type %> :<%= attribute_name %> %> +<% end -%> +<% end -%> +
+
+ <%%= form.submit 'Create', :disable_with => 'Please wait...' %> +
<%% end %> -- libgit2 0.21.2