Commit 20564272be05e14bb940933977ca7166606abd58
1 parent
8e8633cd
Exists in
master
and in
1 other branch
upgrading coulda
Showing
10 changed files
with
80 additions
and
10 deletions
Show diff stats
vendor/plugins/coulda/features/controller_generator.feature
| ... | ... | @@ -27,6 +27,14 @@ Feature: Rails controller generator |
| 27 | 27 | And a "create" controller action for "posts" should be generated |
| 28 | 28 | And only a "create" action for RESTful "posts" route should be generated |
| 29 | 29 | |
| 30 | + Scenario: Controller generator for create action when Cucumber is installed | |
| 31 | + Given a Rails app with Cucumber | |
| 32 | + And the coulda plugin is installed | |
| 33 | + When I generate a "Posts" controller with "create" action | |
| 34 | + Then a standard "create" functional test for "posts" should be generated | |
| 35 | + And a "create" controller action for "posts" should be generated | |
| 36 | + And only a "create" action for RESTful "posts" route should be generated | |
| 37 | + | |
| 30 | 38 | Scenario: Controller generator for show action |
| 31 | 39 | Given a Rails app |
| 32 | 40 | And the coulda plugin is installed | ... | ... |
vendor/plugins/coulda/features/step_definitions/controller_steps.rb
| ... | ... | @@ -35,7 +35,6 @@ Then /^a standard "create" functional test for "posts" should be generated$/ do |
| 35 | 35 | " setup do\n" << |
| 36 | 36 | " post :create, :post => Factory.attributes_for(:post)\n" << |
| 37 | 37 | " end\n\n" << |
| 38 | - " should_create :post\n" << | |
| 39 | 38 | " should_set_the_flash_to /created/i\n" << |
| 40 | 39 | " should_redirect_to('posts index') { posts_path }\n" << |
| 41 | 40 | " end" | ... | ... |
vendor/plugins/coulda/features/step_definitions/cucumber_steps.rb
0 → 100644
| ... | ... | @@ -0,0 +1,21 @@ |
| 1 | +Given /^a Rails app with Cucumber$/ do | |
| 2 | + system "rails rails_root" | |
| 3 | + @rails_root = File.join(File.dirname(__FILE__), "..", "..", "rails_root") | |
| 4 | + require 'cucumber' | |
| 5 | +end | |
| 6 | + | |
| 7 | +Then /^a Cucumber "([^\"]*)" functional test for "([^\"]*)" should be generated$/ do |arg1, arg2| | |
| 8 | + pending | |
| 9 | +end | |
| 10 | + | |
| 11 | +Then /^a standard "posts" feature for the "new" scenario should be generated$/ do | |
| 12 | + assert_generated_file("features/posts.feature") do |body| | |
| 13 | + expected = " Scenario: Create a new 'post'\n" << | |
| 14 | + " Given I am on the new post page\n" << | |
| 15 | + " When I create a 'post' named 'A new post'\n" << | |
| 16 | + " Then I should see 'A new post'" | |
| 17 | + assert body.include?(expected), | |
| 18 | + "expected #{expected} but was #{body.inspect}" | |
| 19 | + end | |
| 20 | +end | |
| 21 | + | ... | ... |
vendor/plugins/coulda/features/step_definitions/view_steps.rb
| 1 | -Then /^an empty "(.*)" view for "(.*)" should be generated$/ do |action, controller| | |
| 2 | - assert_generated_views_for(controller, action) | |
| 1 | +When /^I generate a "([^\"]*)" view for "([^\"]*)"$/ do |view, resource| | |
| 2 | + system "cd #{@rails_root} && " << | |
| 3 | + "script/generate view #{resource} #{view} && " << | |
| 4 | + "cd .." | |
| 5 | +end | |
| 6 | + | |
| 7 | +When /^a standard "new" view for "posts" should be generated$/ do | |
| 8 | + assert_generated_file("app/views/posts/new.html.erb") do |body| | |
| 9 | + expected = "<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" << | |
| 13 | + "<% end %>" | |
| 14 | + assert body.include?(expected), | |
| 15 | + "expected #{expected} but was #{body.inspect}" | |
| 16 | + end | |
| 3 | 17 | end |
| 4 | 18 | ... | ... |
| ... | ... | @@ -0,0 +1,12 @@ |
| 1 | +Feature: Rails controller generator | |
| 2 | + In order to better do Test-Driven Development with Rails | |
| 3 | + As a user | |
| 4 | + I want to generate Shoulda & Factory Girl tests for only RESTful actions I need. | |
| 5 | + | |
| 6 | + Scenario: View generator for new action when Cucumber is installed | |
| 7 | + Given a Rails app with Cucumber | |
| 8 | + And the coulda plugin is installed | |
| 9 | + When I generate a "new" view for "Posts" | |
| 10 | + Then a standard "new" view for "posts" should be generated | |
| 11 | + And a standard "posts" feature for the "new" scenario should be generated | |
| 12 | + | ... | ... |
vendor/plugins/coulda/generators/controller/templates/functional_test.rb
| ... | ... | @@ -30,7 +30,6 @@ class <%= class_name %>ControllerTest < ActionController::TestCase |
| 30 | 30 | post :create, :<%= resource %> => Factory.attributes_for(:<%= resource %>) |
| 31 | 31 | end |
| 32 | 32 | |
| 33 | - should_create :<%= resource %> | |
| 34 | 33 | should_set_the_flash_to /created/i |
| 35 | 34 | should_redirect_to('<%= resources %> index') { <%= resources %>_path } |
| 36 | 35 | end | ... | ... |
vendor/plugins/coulda/generators/view/templates/feature.feature
0 → 100644
| ... | ... | @@ -0,0 +1,10 @@ |
| 1 | +<% resource = file_name.singularize -%> | |
| 2 | +<% resources = file_name.pluralize -%> | |
| 3 | +<% resource_class = class_name.singularize -%> | |
| 4 | + | |
| 5 | +<% if %w(new create).any? { |action| actions.include?(action) } -%> | |
| 6 | + Scenario: Create a new '<%= resource %>' | |
| 7 | + Given I am on the new <%= resource %> page | |
| 8 | + When I create a '<%= resource %>' named 'A new <%= resource %>' | |
| 9 | + Then I should see 'A new <%= resource %>' | |
| 10 | +<% end -%> | ... | ... |
vendor/plugins/coulda/generators/view/templates/view_new.html.erb
| 1 | -<h1>New <%= singular_name %></h1> | |
| 1 | +<% resource = file_name.singularize -%> | |
| 2 | +<h1>New <%= resource %></h1> | |
| 2 | 3 | |
| 3 | -<%% form_for(@<%= singular_name %>) do |form| %> | |
| 4 | +<%% form_for(@<%= resource %>) do |form| %> | |
| 4 | 5 | <%%= form.error_messages %> |
| 5 | - <%%= form.submit "Create", :disable_with => "Please wait..." %> | |
| 6 | + <%%= form.submit 'Create', :disable_with => 'Please wait...' %> | |
| 6 | 7 | <%% end %> | ... | ... |
vendor/plugins/coulda/generators/view/templates/view_show.html.erb
0 → 100644
vendor/plugins/coulda/generators/view/view_generator.rb
| ... | ... | @@ -2,12 +2,14 @@ class ViewGenerator < Rails::Generator::NamedBase |
| 2 | 2 | def manifest |
| 3 | 3 | record do |m| |
| 4 | 4 | m.directory File.join('app/views', class_path, file_name) |
| 5 | + m.directory 'features' | |
| 5 | 6 | |
| 6 | - # View template for specified action. | |
| 7 | 7 | if actions.include?("new") |
| 8 | 8 | path = File.join('app/views', class_path, file_name, "new.html.erb") |
| 9 | - m.template 'view_new.html.erb', path, | |
| 10 | - :assigns => { :action => action, :path => path } | |
| 9 | + m.template 'view_new.html.erb', path | |
| 10 | + | |
| 11 | + path = File.join('features', "#{file_name.pluralize}.feature") | |
| 12 | + m.template 'feature.feature', path | |
| 11 | 13 | end |
| 12 | 14 | end |
| 13 | 15 | end | ... | ... |