Commit 1198ed354d5d15b589213ee1490b6df0c61b5537

Authored by Dan Croak
1 parent 60f50df7

updating coulda

vendor/plugins/coulda/features/step_definitions/model_steps.rb
... ... @@ -26,6 +26,13 @@ When /^I generate a model "(.*)" with file "(.*)"$/ do |model, file|
26 26 "cd .."
27 27 end
28 28  
  29 +When /^I generate a Post model with title, body, and User$/ do
  30 + system "cd #{@rails_root} && " <<
  31 + "script/generate model Post title:string body:text user:belongs_to && " <<
  32 + "rake db:migrate " <<
  33 + "cd .."
  34 +end
  35 +
29 36 # MODEL
30 37  
31 38 Then /^the "(.*)" model should have "(.*)" macro$/ do |model, macro|
... ...
vendor/plugins/coulda/features/step_definitions/view_steps.rb
... ... @@ -4,12 +4,32 @@ When /^I generate a &quot;([^\&quot;]*)&quot; view for &quot;([^\&quot;]*)&quot;$/ do |view, resource|
4 4 "cd .."
5 5 end
6 6  
7   -When /^a standard "new" view for "posts" should be generated$/ do
  7 +When /^a SemiFormal "new" view for "posts" should be generated$/ do
8 8 assert_generated_file("app/views/posts/new.html.erb") do
9   - "<h1>New post</h1>\n\n" <<
10   - "<% form_for(@post) do |form| %>\n" <<
11   - " <%= form.error_messages %>\n" <<
12   - " <%= form.submit 'Create', :disable_with => 'Please wait...' %>\n" <<
  9 + "<h1>New post</h1>\n\n" <<
  10 + "<% form_for(@post) do |form| %>\n" <<
  11 + " <%= form.error_messages %>\n" <<
  12 + " <fieldset class=\"inputs\">\n" <<
  13 + " </fieldset>\n" <<
  14 + " <fieldset class=\"buttons\">\n" <<
  15 + " <%= form.submit 'Create', :disable_with => 'Please wait...' %>\n" <<
  16 + " </fieldset>\n" <<
  17 + "<% end %>"
  18 + end
  19 +end
  20 +
  21 +Then /^a SemiFormal "new" view for "posts" should be generated with fields$/ do
  22 + assert_generated_file("app/views/posts/new.html.erb") do
  23 + "<h1>New post</h1>\n\n" <<
  24 + "<% form_for(@post) do |form| %>\n" <<
  25 + " <%= form.error_messages %>\n" <<
  26 + " <fieldset class=\"inputs\">\n" <<
  27 + " <%= form.string :title %>\n" <<
  28 + " <%= form.text :body %>\n" <<
  29 + " </fieldset>\n" <<
  30 + " <fieldset class=\"buttons\">\n" <<
  31 + " <%= form.submit 'Create', :disable_with => 'Please wait...' %>\n" <<
  32 + " </fieldset>\n" <<
13 33 "<% end %>"
14 34 end
15 35 end
... ...
vendor/plugins/coulda/features/view_generator.feature
... ... @@ -7,5 +7,12 @@ Feature: Rails view generator
7 7 Given a Rails app
8 8 And the coulda plugin is installed
9 9 When I generate a "new" view for "Posts"
10   - Then a standard "new" view for "posts" should be generated
  10 + Then a SemiFormal "new" view for "posts" should be generated
  11 +
  12 + Scenario: View generator for new action
  13 + Given a Rails app
  14 + And the coulda plugin is installed
  15 + When I generate a Post model with title, body, and User
  16 + And I generate a "new" view for "Posts"
  17 + Then a SemiFormal "new" view for "posts" should be generated with fields
11 18  
... ...
vendor/plugins/coulda/generators/support/generator_helper.rb
... ... @@ -18,9 +18,21 @@ module Coulda
18 18 end
19 19  
20 20 def columns_for_form
21   - resource_class.content_columns.
  21 + resource_class.constantize.content_columns.
22 22 collect { |column| [column.name, column.type] }.
23   - delete_if { |column| REMOVABLE_COLUMNS.include?(column.first) }
  23 + delete_if { |column| remove_column?(column.first) }
  24 + end
  25 +
  26 + def active_record_defined?
  27 + models = Dir.glob(File.join( RAILS_ROOT, 'app', 'models', '*.rb')).
  28 + collect { |path| path[/.+\/(.+).rb/,1] }.
  29 + collect {|model| model.classify }
  30 + models.include?(resource_class)
  31 + end
  32 +
  33 + def remove_column?(column)
  34 + REMOVABLE_COLUMNS.include?(column) ||
  35 + !(column =~ /_id$/).nil?
24 36 end
25 37 end
26 38 end
... ...
vendor/plugins/coulda/generators/view/templates/view_new.html.erb
... ... @@ -2,5 +2,14 @@
2 2  
3 3 <%% form_for(@<%= resource %>) do |form| %>
4 4 <%%= form.error_messages %>
5   - <%%= form.submit 'Create', :disable_with => 'Please wait...' %>
  5 + <fieldset class="inputs">
  6 +<% if active_record_defined? -%>
  7 +<% columns_for_form.each do |attribute_name, attribute_type| -%>
  8 + <%%= form.<%= attribute_type %> :<%= attribute_name %> %>
  9 +<% end -%>
  10 +<% end -%>
  11 + </fieldset>
  12 + <fieldset class="buttons">
  13 + <%%= form.submit 'Create', :disable_with => 'Please wait...' %>
  14 + </fieldset>
6 15 <%% end %>
... ...