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,6 +27,14 @@ Feature: Rails controller generator | ||
27 | And a "create" controller action for "posts" should be generated | 27 | And a "create" controller action for "posts" should be generated |
28 | And only a "create" action for RESTful "posts" route should be generated | 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 | Scenario: Controller generator for show action | 38 | Scenario: Controller generator for show action |
31 | Given a Rails app | 39 | Given a Rails app |
32 | And the coulda plugin is installed | 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,7 +35,6 @@ Then /^a standard "create" functional test for "posts" should be generated$/ do | ||
35 | " setup do\n" << | 35 | " setup do\n" << |
36 | " post :create, :post => Factory.attributes_for(:post)\n" << | 36 | " post :create, :post => Factory.attributes_for(:post)\n" << |
37 | " end\n\n" << | 37 | " end\n\n" << |
38 | - " should_create :post\n" << | ||
39 | " should_set_the_flash_to /created/i\n" << | 38 | " should_set_the_flash_to /created/i\n" << |
40 | " should_redirect_to('posts index') { posts_path }\n" << | 39 | " should_redirect_to('posts index') { posts_path }\n" << |
41 | " end" | 40 | " end" |
vendor/plugins/coulda/features/step_definitions/cucumber_steps.rb
0 → 100644
@@ -0,0 +1,21 @@ | @@ -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 | end | 17 | end |
4 | 18 |
@@ -0,0 +1,12 @@ | @@ -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,7 +30,6 @@ class <%= class_name %>ControllerTest < ActionController::TestCase | ||
30 | post :create, :<%= resource %> => Factory.attributes_for(:<%= resource %>) | 30 | post :create, :<%= resource %> => Factory.attributes_for(:<%= resource %>) |
31 | end | 31 | end |
32 | 32 | ||
33 | - should_create :<%= resource %> | ||
34 | should_set_the_flash_to /created/i | 33 | should_set_the_flash_to /created/i |
35 | should_redirect_to('<%= resources %> index') { <%= resources %>_path } | 34 | should_redirect_to('<%= resources %> index') { <%= resources %>_path } |
36 | end | 35 | end |
vendor/plugins/coulda/generators/view/templates/feature.feature
0 → 100644
@@ -0,0 +1,10 @@ | @@ -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 | <%%= form.error_messages %> | 5 | <%%= form.error_messages %> |
5 | - <%%= form.submit "Create", :disable_with => "Please wait..." %> | 6 | + <%%= form.submit 'Create', :disable_with => 'Please wait...' %> |
6 | <%% end %> | 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,12 +2,14 @@ class ViewGenerator < Rails::Generator::NamedBase | ||
2 | def manifest | 2 | def manifest |
3 | record do |m| | 3 | record do |m| |
4 | m.directory File.join('app/views', class_path, file_name) | 4 | m.directory File.join('app/views', class_path, file_name) |
5 | + m.directory 'features' | ||
5 | 6 | ||
6 | - # View template for specified action. | ||
7 | if actions.include?("new") | 7 | if actions.include?("new") |
8 | path = File.join('app/views', class_path, file_name, "new.html.erb") | 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 | end | 13 | end |
12 | end | 14 | end |
13 | end | 15 | end |