dchelimsky-rspec-rails 1.1.12 → 1.1.99.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +29 -2
- data/License.txt +1 -1
- data/Manifest.txt +7 -6
- data/README.txt +5 -4
- data/Rakefile +14 -2
- data/TODO.txt +1 -0
- data/Upgrade.txt +30 -0
- data/generators/rspec/templates/rspec.rake +12 -10
- data/generators/rspec/templates/script/spec_server +10 -111
- data/generators/rspec_controller/rspec_controller_generator.rb +1 -5
- data/generators/rspec_scaffold/rspec_scaffold_generator.rb +9 -13
- data/generators/rspec_scaffold/templates/controller_spec.rb +25 -25
- data/generators/rspec_scaffold/templates/edit_erb_spec.rb +1 -1
- data/generators/rspec_scaffold/templates/helper_spec.rb +1 -1
- data/generators/rspec_scaffold/templates/index_erb_spec.rb +1 -1
- data/generators/rspec_scaffold/templates/new_erb_spec.rb +1 -1
- data/generators/rspec_scaffold/templates/routing_spec.rb +24 -20
- data/generators/rspec_scaffold/templates/show_erb_spec.rb +1 -1
- data/lib/spec/rails/example/controller_example_group.rb +46 -16
- data/lib/spec/rails/example/functional_example_group.rb +7 -22
- data/lib/spec/rails/example/helper_example_group.rb +6 -9
- data/lib/spec/rails/example/model_example_group.rb +1 -1
- data/lib/spec/rails/example/render_observer.rb +0 -26
- data/lib/spec/rails/example/view_example_group.rb +32 -34
- data/lib/spec/rails/example.rb +0 -2
- data/lib/spec/rails/extensions/active_support/test_case.rb +7 -0
- data/lib/spec/rails/extensions/spec/runner/configuration.rb +12 -44
- data/lib/spec/rails/extensions.rb +1 -1
- data/lib/spec/rails/matchers/ar_be_valid.rb +3 -0
- data/lib/spec/rails/matchers/have_text.rb +1 -1
- data/lib/spec/rails/matchers/include_text.rb +2 -2
- data/lib/spec/rails/matchers/redirect_to.rb +6 -14
- data/lib/spec/rails/matchers/render_template.rb +5 -1
- data/lib/spec/rails/spec_server.rb +86 -0
- data/lib/spec/rails/version.rb +2 -2
- data/lib/spec/rails.rb +10 -9
- data/rspec-rails.gemspec +12 -9
- data/spec/resources/controllers/controller_spec_controller.rb +1 -1
- data/spec/resources/controllers/render_spec_controller.rb +1 -1
- data/spec/resources/controllers/rjs_spec_controller.rb +1 -1
- data/spec/spec/rails/example/configuration_spec.rb +15 -29
- data/spec/spec/rails/example/{controller_spec_spec.rb → controller_example_group_spec.rb} +84 -60
- data/spec/spec/rails/example/cookies_proxy_spec.rb +32 -36
- data/spec/spec/rails/example/example_group_factory_spec.rb +5 -5
- data/spec/spec/rails/example/{helper_spec_spec.rb → helper_example_group_spec.rb} +8 -2
- data/spec/spec/rails/example/{model_spec_spec.rb → model_example_group_spec.rb} +3 -1
- data/spec/spec/rails/example/{view_spec_spec.rb → view_example_group_spec.rb} +33 -15
- data/spec/spec/rails/matchers/ar_be_valid_spec.rb +10 -0
- data/spec/spec/rails/matchers/assert_select_spec.rb +1 -0
- data/spec/spec/rails/matchers/have_text_spec.rb +12 -4
- data/spec/spec/rails/matchers/include_text_spec.rb +11 -13
- data/spec/spec/rails/matchers/redirect_to_spec.rb +221 -210
- data/spec/spec/rails/matchers/render_template_spec.rb +161 -158
- data/spec/spec/rails/spec_server_spec.rb +18 -7
- data/spec/spec_helper.rb +20 -9
- metadata +21 -10
- data/lib/spec/rails/example/rails_example_group.rb +0 -28
- data/lib/spec/rails/extensions/action_controller/base.rb +0 -14
data/History.txt
CHANGED
@@ -1,10 +1,37 @@
|
|
1
1
|
=== Maintenance
|
2
2
|
|
3
|
-
IMPORTANT:
|
3
|
+
IMPORTANT: This release includes the following backwards-compatibility-breaking changes.
|
4
4
|
|
5
|
-
* 1
|
5
|
+
* rspec-rails supports rails 2.0.2, 2.1.2 and 2.2.2.
|
6
|
+
|
7
|
+
* We are no longer supporting 1.x versions of rails.
|
8
|
+
|
9
|
+
* expect_render and stub_render have been removed.
|
10
|
+
|
11
|
+
* Both of these methods were deprecated in rspec-rails-1.1.5, released in Sept, 2008.
|
12
|
+
|
13
|
+
* { route_for(args).should == "/path" } now delegates to assert_generates (in rails)
|
14
|
+
|
15
|
+
* see Upgrade.txt for more information
|
16
|
+
|
17
|
+
* enhancements
|
6
18
|
|
7
19
|
* Adding status codes to redirect_to matcher (Damian Janowski). Closes #570.
|
20
|
+
* Initialize current URL before executing any examples in a ViewExampleGroup (Wilson Bilkovich). Closes #654.
|
21
|
+
* Support query strings in params_from (Wilson Bilkovich). Closes #652.
|
22
|
+
* delegate route_for to assert_recognizes (less brittle)
|
23
|
+
* it { should be_valid } (Kakutani). Closes #665.
|
24
|
+
* controller is implicit subject in controller specs (Joe Ferris). #686.
|
25
|
+
* template is implicit subject in view specs (Joe Ferris). #686.
|
26
|
+
* redirect_to and render_template matchers can accept controller or response (Joe Ferris). Closes #686.
|
27
|
+
* generated specs use declarative docstrings
|
28
|
+
* rspec_scaffold generator generates layout and stylesheet (per Rails-2.3)
|
29
|
+
|
30
|
+
* bug fixes
|
31
|
+
|
32
|
+
* you no longer *have* to load ActionMailer to get specs to run. Closes #650.
|
33
|
+
* query_params are now parsed by Rack::Utils.parse_query in redirect_to matcher. Closes #684.
|
34
|
+
* cleaned up spec_server (there was a bunch of pre-rails 2.0 material). Closes #685.
|
8
35
|
|
9
36
|
=== Version 1.1.12 / 2009-01-11
|
10
37
|
|
data/License.txt
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
====================================================================
|
4
4
|
==== RSpec, RSpec-Rails
|
5
|
-
Copyright (c) 2005-
|
5
|
+
Copyright (c) 2005-2009 The RSpec Development Team
|
6
6
|
====================================================================
|
7
7
|
==== ARTS
|
8
8
|
Copyright (c) 2006 Kevin Clark, Jake Howerton
|
data/Manifest.txt
CHANGED
@@ -4,6 +4,7 @@ Manifest.txt
|
|
4
4
|
README.txt
|
5
5
|
Rakefile
|
6
6
|
TODO.txt
|
7
|
+
Upgrade.txt
|
7
8
|
features/step_definitions/people.rb
|
8
9
|
features/support/env.rb
|
9
10
|
features/transactions/transactions_should_rollback.feature
|
@@ -45,15 +46,14 @@ lib/spec/rails/example/cookies_proxy.rb
|
|
45
46
|
lib/spec/rails/example/functional_example_group.rb
|
46
47
|
lib/spec/rails/example/helper_example_group.rb
|
47
48
|
lib/spec/rails/example/model_example_group.rb
|
48
|
-
lib/spec/rails/example/rails_example_group.rb
|
49
49
|
lib/spec/rails/example/render_observer.rb
|
50
50
|
lib/spec/rails/example/view_example_group.rb
|
51
51
|
lib/spec/rails/extensions.rb
|
52
|
-
lib/spec/rails/extensions/action_controller/base.rb
|
53
52
|
lib/spec/rails/extensions/action_controller/rescue.rb
|
54
53
|
lib/spec/rails/extensions/action_controller/test_response.rb
|
55
54
|
lib/spec/rails/extensions/action_view/base.rb
|
56
55
|
lib/spec/rails/extensions/active_record/base.rb
|
56
|
+
lib/spec/rails/extensions/active_support/test_case.rb
|
57
57
|
lib/spec/rails/extensions/spec/matchers/have.rb
|
58
58
|
lib/spec/rails/extensions/spec/runner/configuration.rb
|
59
59
|
lib/spec/rails/interop/testcase.rb
|
@@ -66,6 +66,7 @@ lib/spec/rails/matchers/include_text.rb
|
|
66
66
|
lib/spec/rails/matchers/redirect_to.rb
|
67
67
|
lib/spec/rails/matchers/render_template.rb
|
68
68
|
lib/spec/rails/mocks.rb
|
69
|
+
lib/spec/rails/spec_server.rb
|
69
70
|
lib/spec/rails/story_adapter.rb
|
70
71
|
lib/spec/rails/version.rb
|
71
72
|
rspec-rails.gemspec
|
@@ -130,15 +131,15 @@ spec/resources/views/view_spec/template_with_partial_using_collection.rhtml
|
|
130
131
|
spec/resources/views/view_spec/template_with_partial_with_array.rhtml
|
131
132
|
spec/spec/rails/example/assigns_hash_proxy_spec.rb
|
132
133
|
spec/spec/rails/example/configuration_spec.rb
|
134
|
+
spec/spec/rails/example/controller_example_group_spec.rb
|
133
135
|
spec/spec/rails/example/controller_isolation_spec.rb
|
134
|
-
spec/spec/rails/example/controller_spec_spec.rb
|
135
136
|
spec/spec/rails/example/cookies_proxy_spec.rb
|
136
137
|
spec/spec/rails/example/example_group_factory_spec.rb
|
137
|
-
spec/spec/rails/example/
|
138
|
-
spec/spec/rails/example/
|
138
|
+
spec/spec/rails/example/helper_example_group_spec.rb
|
139
|
+
spec/spec/rails/example/model_example_group_spec.rb
|
139
140
|
spec/spec/rails/example/shared_behaviour_spec.rb
|
140
141
|
spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb
|
141
|
-
spec/spec/rails/example/
|
142
|
+
spec/spec/rails/example/view_example_group_spec.rb
|
142
143
|
spec/spec/rails/extensions/action_controller_rescue_action_spec.rb
|
143
144
|
spec/spec/rails/extensions/action_view_base_spec.rb
|
144
145
|
spec/spec/rails/extensions/active_record_spec.rb
|
data/README.txt
CHANGED
@@ -2,15 +2,16 @@
|
|
2
2
|
|
3
3
|
* http://rspec.info
|
4
4
|
* http://rubyforge.org/projects/rspec
|
5
|
-
* http://github.com/dchelimsky/rspec-rails
|
5
|
+
* http://github.com/dchelimsky/rspec-rails
|
6
|
+
* http://wiki.github.com/dchelimsky/rspec/rails
|
6
7
|
* mailto:rspec-devel@rubyforge.org
|
7
8
|
|
8
9
|
== DESCRIPTION:
|
9
10
|
|
10
11
|
Behaviour Driven Development for Ruby on Rails.
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
rspec-rails is an RSpec extension that allows you to drive the development of
|
14
|
+
Ruby on Rails applications with RSpec.
|
14
15
|
|
15
16
|
== FEATURES:
|
16
17
|
|
@@ -41,4 +42,4 @@ expectations you can set on responses and models, etc.
|
|
41
42
|
|
42
43
|
== INSTALL
|
43
44
|
|
44
|
-
* Visit http://github.com/dchelimsky/rspec
|
45
|
+
* Visit http://wiki.github.com/dchelimsky/rspec/rails for installation instructions.
|
data/Rakefile
CHANGED
@@ -20,7 +20,7 @@ Hoe.new('rspec-rails', Spec::Rails::VERSION::STRING) do |p|
|
|
20
20
|
p.description = "Behaviour Driven Development for Ruby on Rails."
|
21
21
|
p.rubyforge_name = 'rspec'
|
22
22
|
p.developer('RSpec Development Team', 'rspec-devel@rubyforge.org')
|
23
|
-
p.extra_deps = [["rspec","1.1.
|
23
|
+
p.extra_deps = [["rspec","1.1.99.1"],["rack",">=0.4.0"]]
|
24
24
|
p.extra_dev_deps = [["cucumber",">= 0.1.13"]]
|
25
25
|
p.remote_rdoc_dir = "rspec-rails/#{Spec::Rails::VERSION::STRING}"
|
26
26
|
end
|
@@ -48,4 +48,16 @@ Spec::Rake::SpecTask.new
|
|
48
48
|
|
49
49
|
Cucumber::Rake::Task.new
|
50
50
|
|
51
|
-
task :default => [:features]
|
51
|
+
task :default => [:features]
|
52
|
+
|
53
|
+
namespace :update do
|
54
|
+
desc "update the manfest"
|
55
|
+
task :manifest do
|
56
|
+
system %q[touch Manifest.txt; rake check_manifest | grep -v "(in " | patch]
|
57
|
+
end
|
58
|
+
|
59
|
+
desc "update the gemspec"
|
60
|
+
task :gemspec do
|
61
|
+
system %q[rake debug_gem | grep -v "(in " | grep -v "s.add_dependency(%q<hoe" | grep -v "s.add_dependency(%q<cuc" > `basename \\`pwd\\``.gemspec]
|
62
|
+
end
|
63
|
+
end
|
data/TODO.txt
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
* delegate params_from to assert_recognizes
|
data/Upgrade.txt
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
=== Upgrade to rspec-rails ????
|
2
|
+
|
3
|
+
== route_for
|
4
|
+
|
5
|
+
After a change to edge rails broke our monkey-patched #route_for method, I
|
6
|
+
decided to just delegate to rails' #assert_generates method. For most cases,
|
7
|
+
this will not present a problem, but for some it might. You'll know if you
|
8
|
+
upgrade and see any newly failing, route-related examples. Here are the things
|
9
|
+
that you might need to change.
|
10
|
+
|
11
|
+
* Make sure IDs are strings
|
12
|
+
|
13
|
+
If you had :id => 1 before, you need to change that to :id => "1"
|
14
|
+
|
15
|
+
#old
|
16
|
+
route_for(:controller => 'things', :action => 'show', :id => 1).should == "/things/1"
|
17
|
+
|
18
|
+
#new
|
19
|
+
route_for(:controller => 'things', :action => 'show', :id => "1").should == "/things/1"
|
20
|
+
|
21
|
+
* Convert paths for non-get methods to hashes
|
22
|
+
|
23
|
+
If you had an example with a route that requires post, put, or delete, you'll
|
24
|
+
need to declare that explicitly.
|
25
|
+
|
26
|
+
#old
|
27
|
+
route_for(:controller => 'things', :action => 'create').should == "/things"
|
28
|
+
|
29
|
+
#new
|
30
|
+
route_for(:controller => 'things', :action => 'create').should == {:path => "/things", :method => :post}
|
@@ -108,14 +108,14 @@ begin
|
|
108
108
|
end
|
109
109
|
|
110
110
|
namespace :server do
|
111
|
-
daemonized_server_pid = File.expand_path("spec_server.pid"
|
112
|
-
|
111
|
+
daemonized_server_pid = File.expand_path("#{RAILS_ROOT}/tmp/spec_server.pid")
|
112
|
+
|
113
113
|
desc "start spec_server."
|
114
114
|
task :start do
|
115
115
|
if File.exist?(daemonized_server_pid)
|
116
116
|
$stderr.puts "spec_server is already running."
|
117
117
|
else
|
118
|
-
$stderr.puts
|
118
|
+
$stderr.puts %Q{Starting up spec_server ...}
|
119
119
|
system("ruby", "script/spec_server", "--daemon", "--pid", daemonized_server_pid)
|
120
120
|
end
|
121
121
|
end
|
@@ -125,19 +125,21 @@ begin
|
|
125
125
|
unless File.exist?(daemonized_server_pid)
|
126
126
|
$stderr.puts "No server running."
|
127
127
|
else
|
128
|
-
$stderr.puts "Shutting down spec_server
|
128
|
+
$stderr.puts "Shutting down spec_server ..."
|
129
129
|
system("kill", "-s", "TERM", File.read(daemonized_server_pid).strip) &&
|
130
130
|
File.delete(daemonized_server_pid)
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
134
|
-
desc "
|
135
|
-
task :restart
|
136
|
-
|
137
|
-
|
134
|
+
desc "restart spec_server."
|
135
|
+
task :restart => [:stop, :start]
|
136
|
+
|
137
|
+
desc "check if spec server is running"
|
138
|
+
task :status do
|
139
|
+
if File.exist?(daemonized_server_pid)
|
140
|
+
$stderr.puts %Q{spec_server is running (PID: #{File.read(daemonized_server_pid).gsub("\n","")})}
|
138
141
|
else
|
139
|
-
$stderr.puts "
|
140
|
-
system("kill", "-s", "USR2", File.read(daemonized_server_pid).strip)
|
142
|
+
$stderr.puts "No server running."
|
141
143
|
end
|
142
144
|
end
|
143
145
|
end
|
@@ -1,125 +1,24 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../vendor/plugins/rspec/lib' # For rspec installed as plugin
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../vendor/plugins/rspec-rails/lib' # For rspec installed as plugin
|
3
3
|
require 'rubygems'
|
4
|
-
require 'drb/drb'
|
5
|
-
require 'rbconfig'
|
6
|
-
require 'spec'
|
7
4
|
require 'optparse'
|
5
|
+
require 'spec/rails/spec_server'
|
8
6
|
|
9
|
-
# This is based on Florian Weber's TDDMate
|
10
|
-
module Spec
|
11
|
-
module Runner
|
12
|
-
class RailsSpecServer
|
13
|
-
def run(argv, stderr, stdout)
|
14
|
-
$stdout = stdout
|
15
|
-
$stderr = stderr
|
16
|
-
|
17
|
-
unless ActiveRecord::Base.respond_to?(:clear_reloadable_connections!)
|
18
|
-
base = ActiveRecord::Base
|
19
|
-
def base.clear_reloadable_connections!
|
20
|
-
active_connections.each do |name, conn|
|
21
|
-
if conn.requires_reloading?
|
22
|
-
conn.disconnect!
|
23
|
-
active_connections.delete(name)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
ActiveRecord::Base.clear_reloadable_connections!
|
30
|
-
|
31
|
-
if ActionController.const_defined?(:Dispatcher)
|
32
|
-
dispatcher = ::ActionController::Dispatcher.new($stdout)
|
33
|
-
dispatcher.cleanup_application
|
34
|
-
elsif ::Dispatcher.respond_to?(:reset_application!)
|
35
|
-
::Dispatcher.reset_application!
|
36
|
-
else
|
37
|
-
raise "Application reloading failed"
|
38
|
-
end
|
39
|
-
if Object.const_defined?(:Fixtures) && Fixtures.respond_to?(:reset_cache)
|
40
|
-
Fixtures.reset_cache
|
41
|
-
end
|
42
|
-
|
43
|
-
if ::ActiveSupport.const_defined?(:Dependencies)
|
44
|
-
::ActiveSupport::Dependencies.mechanism = :load
|
45
|
-
else
|
46
|
-
::Dependencies.mechanism = :load
|
47
|
-
end
|
48
|
-
|
49
|
-
require_dependency('application.rb') unless Object.const_defined?(:ApplicationController)
|
50
|
-
load File.dirname(__FILE__) + '/../spec/spec_helper.rb'
|
51
|
-
|
52
|
-
if in_memory_database?
|
53
|
-
load "#{RAILS_ROOT}/db/schema.rb" # use db agnostic schema by default
|
54
|
-
ActiveRecord::Migrator.up('db/migrate') # use migrations
|
55
|
-
end
|
56
|
-
|
57
|
-
::Spec::Runner::CommandLine.run(
|
58
|
-
::Spec::Runner::OptionParser.parse(
|
59
|
-
argv,
|
60
|
-
$stderr,
|
61
|
-
$stdout
|
62
|
-
)
|
63
|
-
)
|
64
|
-
end
|
65
|
-
|
66
|
-
def in_memory_database?
|
67
|
-
ENV["RAILS_ENV"] == "test" and
|
68
|
-
::ActiveRecord::Base.connection.class.to_s == "ActiveRecord::ConnectionAdapters::SQLite3Adapter" and
|
69
|
-
::Rails::Configuration.new.database_configuration['test']['database'] == ':memory:'
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
7
|
puts "Loading Rails environment"
|
75
8
|
|
76
9
|
ENV["RAILS_ENV"] = "test"
|
77
10
|
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
78
|
-
require 'dispatcher'
|
79
|
-
|
80
|
-
def restart_test_server
|
81
|
-
puts "restarting"
|
82
|
-
config = ::Config::CONFIG
|
83
|
-
ruby = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT']
|
84
|
-
command_line = [ruby, $0, ARGV].flatten.join(' ')
|
85
|
-
exec(command_line)
|
86
|
-
end
|
87
|
-
|
88
|
-
def daemonize(pid_file = nil)
|
89
|
-
return yield if $DEBUG
|
90
|
-
pid = Process.fork{
|
91
|
-
Process.setsid
|
92
|
-
Dir.chdir(RAILS_ROOT)
|
93
|
-
trap("SIGINT"){ exit! 0 }
|
94
|
-
trap("SIGTERM"){ exit! 0 }
|
95
|
-
trap("SIGHUP"){ restart_test_server }
|
96
|
-
File.open("/dev/null"){|f|
|
97
|
-
STDERR.reopen f
|
98
|
-
STDIN.reopen f
|
99
|
-
STDOUT.reopen f
|
100
|
-
}
|
101
|
-
yield
|
102
|
-
}
|
103
|
-
puts "spec_server launched. (PID: %d)" % pid
|
104
|
-
File.open(pid_file,"w"){|f| f.puts pid } if pid_file
|
105
|
-
exit! 0
|
106
|
-
end
|
107
11
|
|
108
12
|
options = Hash.new
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
puts "Ready"
|
115
|
-
exec_server = lambda {
|
116
|
-
trap("USR2") { restart_test_server } if Signal.list.has_key?("USR2")
|
117
|
-
DRb.start_service("druby://127.0.0.1:8989", Spec::Runner::RailsSpecServer.new)
|
118
|
-
DRb.thread.join
|
119
|
-
}
|
13
|
+
parser = OptionParser.new
|
14
|
+
parser.on("-d", "--daemon") {|ignore| options[:daemon] = true }
|
15
|
+
parser.on("-p", "--pid PIDFILE"){|pid| options[:pid] = pid }
|
16
|
+
parser.parse!(ARGV)
|
120
17
|
|
121
18
|
if options[:daemon]
|
122
|
-
daemonize(options[:pid]
|
19
|
+
::Spec::Rails::SpecServer.daemonize(options[:pid])
|
123
20
|
else
|
124
|
-
|
21
|
+
::Spec::Rails::SpecServer.run
|
125
22
|
end
|
23
|
+
|
24
|
+
puts "Ready"
|
@@ -15,11 +15,7 @@ class RspecControllerGenerator < ControllerGenerator
|
|
15
15
|
m.directory File.join('spec/helpers', class_path)
|
16
16
|
m.directory File.join('spec/views', class_path, file_name)
|
17
17
|
|
18
|
-
|
19
|
-
@default_file_extension = "rhtml"
|
20
|
-
else
|
21
|
-
@default_file_extension = "html.erb"
|
22
|
-
end
|
18
|
+
@default_file_extension = "html.erb"
|
23
19
|
|
24
20
|
# Controller spec, class, and helper.
|
25
21
|
m.template 'controller_spec.rb',
|
@@ -30,19 +30,8 @@ class RspecScaffoldGenerator < Rails::Generator::NamedBase
|
|
30
30
|
@controller_class_name = "#{@controller_class_nesting}::#{@controller_class_name_without_nesting}"
|
31
31
|
end
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
@default_file_extension = "rhtml"
|
36
|
-
else
|
37
|
-
@resource_generator = "scaffold"
|
38
|
-
@default_file_extension = "html.erb"
|
39
|
-
end
|
40
|
-
|
41
|
-
if ActionController::Base.respond_to?(:resource_action_separator)
|
42
|
-
@resource_edit_path = "/edit"
|
43
|
-
else
|
44
|
-
@resource_edit_path = ";edit"
|
45
|
-
end
|
33
|
+
@resource_generator = "scaffold"
|
34
|
+
@default_file_extension = "html.erb"
|
46
35
|
end
|
47
36
|
|
48
37
|
def manifest
|
@@ -57,12 +46,19 @@ class RspecScaffoldGenerator < Rails::Generator::NamedBase
|
|
57
46
|
m.directory(File.join('app/controllers', controller_class_path))
|
58
47
|
m.directory(File.join('app/helpers', controller_class_path))
|
59
48
|
m.directory(File.join('app/views', controller_class_path, controller_file_name))
|
49
|
+
m.directory(File.join('app/views/layouts', controller_class_path))
|
50
|
+
m.directory(File.join('public/stylesheets', class_path))
|
51
|
+
|
60
52
|
m.directory(File.join('spec/controllers', controller_class_path))
|
61
53
|
m.directory(File.join('spec/models', class_path))
|
62
54
|
m.directory(File.join('spec/helpers', class_path))
|
63
55
|
m.directory File.join('spec/fixtures', class_path)
|
64
56
|
m.directory File.join('spec/views', controller_class_path, controller_file_name)
|
65
57
|
|
58
|
+
# Layout and stylesheet.
|
59
|
+
m.template("#{@resource_generator}:layout.html.erb", File.join('app/views/layouts', controller_class_path, "#{controller_file_name}.html.erb"))
|
60
|
+
m.template("#{@resource_generator}:style.css", 'public/stylesheets/scaffold.css')
|
61
|
+
|
66
62
|
# Controller spec, class, and helper.
|
67
63
|
m.template 'rspec_scaffold:routing_spec.rb',
|
68
64
|
File.join('spec/controllers', controller_class_path, "#{controller_file_name}_routing_spec.rb")
|
@@ -6,9 +6,9 @@ describe <%= controller_class_name %>Controller do
|
|
6
6
|
@mock_<%= file_name %> ||= mock_model(<%= class_name %>, stubs)
|
7
7
|
end
|
8
8
|
|
9
|
-
describe "
|
9
|
+
describe "GET index" do
|
10
10
|
|
11
|
-
it "
|
11
|
+
it "exposes all <%= table_name.pluralize %> as @<%= table_name.pluralize %>" do
|
12
12
|
<%= class_name %>.should_receive(:find).with(:all).and_return([mock_<%= file_name %>])
|
13
13
|
get :index
|
14
14
|
assigns[:<%= table_name %>].should == [mock_<%= file_name %>]
|
@@ -16,7 +16,7 @@ describe <%= controller_class_name %>Controller do
|
|
16
16
|
|
17
17
|
describe "with mime type of xml" do
|
18
18
|
|
19
|
-
it "
|
19
|
+
it "renders all <%= table_name.pluralize %> as xml" do
|
20
20
|
request.env["HTTP_ACCEPT"] = "application/xml"
|
21
21
|
<%= class_name %>.should_receive(:find).with(:all).and_return(<%= file_name.pluralize %> = mock("Array of <%= class_name.pluralize %>"))
|
22
22
|
<%= file_name.pluralize %>.should_receive(:to_xml).and_return("generated XML")
|
@@ -28,9 +28,9 @@ describe <%= controller_class_name %>Controller do
|
|
28
28
|
|
29
29
|
end
|
30
30
|
|
31
|
-
describe "
|
31
|
+
describe "GET show" do
|
32
32
|
|
33
|
-
it "
|
33
|
+
it "exposes the requested <%= file_name %> as @<%= file_name %>" do
|
34
34
|
<%= class_name %>.should_receive(:find).with("37").and_return(mock_<%= file_name %>)
|
35
35
|
get :show, :id => "37"
|
36
36
|
assigns[:<%= file_name %>].should equal(mock_<%= file_name %>)
|
@@ -38,7 +38,7 @@ describe <%= controller_class_name %>Controller do
|
|
38
38
|
|
39
39
|
describe "with mime type of xml" do
|
40
40
|
|
41
|
-
it "
|
41
|
+
it "renders the requested <%= file_name %> as xml" do
|
42
42
|
request.env["HTTP_ACCEPT"] = "application/xml"
|
43
43
|
<%= class_name %>.should_receive(:find).with("37").and_return(mock_<%= file_name %>)
|
44
44
|
mock_<%= file_name %>.should_receive(:to_xml).and_return("generated XML")
|
@@ -50,9 +50,9 @@ describe <%= controller_class_name %>Controller do
|
|
50
50
|
|
51
51
|
end
|
52
52
|
|
53
|
-
describe "
|
53
|
+
describe "GET new" do
|
54
54
|
|
55
|
-
it "
|
55
|
+
it "exposes a new <%= file_name %> as @<%= file_name %>" do
|
56
56
|
<%= class_name %>.should_receive(:new).and_return(mock_<%= file_name %>)
|
57
57
|
get :new
|
58
58
|
assigns[:<%= file_name %>].should equal(mock_<%= file_name %>)
|
@@ -60,9 +60,9 @@ describe <%= controller_class_name %>Controller do
|
|
60
60
|
|
61
61
|
end
|
62
62
|
|
63
|
-
describe "
|
63
|
+
describe "GET edit" do
|
64
64
|
|
65
|
-
it "
|
65
|
+
it "exposes the requested <%= file_name %> as @<%= file_name %>" do
|
66
66
|
<%= class_name %>.should_receive(:find).with("37").and_return(mock_<%= file_name %>)
|
67
67
|
get :edit, :id => "37"
|
68
68
|
assigns[:<%= file_name %>].should equal(mock_<%= file_name %>)
|
@@ -70,17 +70,17 @@ describe <%= controller_class_name %>Controller do
|
|
70
70
|
|
71
71
|
end
|
72
72
|
|
73
|
-
describe "
|
73
|
+
describe "POST create" do
|
74
74
|
|
75
75
|
describe "with valid params" do
|
76
76
|
|
77
|
-
it "
|
77
|
+
it "exposes a newly created <%= file_name %> as @<%= file_name %>" do
|
78
78
|
<%= class_name %>.should_receive(:new).with({'these' => 'params'}).and_return(mock_<%= file_name %>(:save => true))
|
79
79
|
post :create, :<%= file_name %> => {:these => 'params'}
|
80
80
|
assigns(:<%= file_name %>).should equal(mock_<%= file_name %>)
|
81
81
|
end
|
82
82
|
|
83
|
-
it "
|
83
|
+
it "redirects to the created <%= file_name %>" do
|
84
84
|
<%= class_name %>.stub!(:new).and_return(mock_<%= file_name %>(:save => true))
|
85
85
|
post :create, :<%= file_name %> => {}
|
86
86
|
response.should redirect_to(<%= table_name.singularize %>_url(mock_<%= file_name %>))
|
@@ -90,13 +90,13 @@ describe <%= controller_class_name %>Controller do
|
|
90
90
|
|
91
91
|
describe "with invalid params" do
|
92
92
|
|
93
|
-
it "
|
93
|
+
it "exposes a newly created but unsaved <%= file_name %> as @<%= file_name %>" do
|
94
94
|
<%= class_name %>.stub!(:new).with({'these' => 'params'}).and_return(mock_<%= file_name %>(:save => false))
|
95
95
|
post :create, :<%= file_name %> => {:these => 'params'}
|
96
96
|
assigns(:<%= file_name %>).should equal(mock_<%= file_name %>)
|
97
97
|
end
|
98
98
|
|
99
|
-
it "
|
99
|
+
it "re-renders the 'new' template" do
|
100
100
|
<%= class_name %>.stub!(:new).and_return(mock_<%= file_name %>(:save => false))
|
101
101
|
post :create, :<%= file_name %> => {}
|
102
102
|
response.should render_template('new')
|
@@ -106,23 +106,23 @@ describe <%= controller_class_name %>Controller do
|
|
106
106
|
|
107
107
|
end
|
108
108
|
|
109
|
-
describe "
|
109
|
+
describe "PUT udpate" do
|
110
110
|
|
111
111
|
describe "with valid params" do
|
112
112
|
|
113
|
-
it "
|
113
|
+
it "updates the requested <%= file_name %>" do
|
114
114
|
<%= class_name %>.should_receive(:find).with("37").and_return(mock_<%= file_name %>)
|
115
115
|
mock_<%= file_name %>.should_receive(:update_attributes).with({'these' => 'params'})
|
116
116
|
put :update, :id => "37", :<%= file_name %> => {:these => 'params'}
|
117
117
|
end
|
118
118
|
|
119
|
-
it "
|
119
|
+
it "exposes the requested <%= file_name %> as @<%= file_name %>" do
|
120
120
|
<%= class_name %>.stub!(:find).and_return(mock_<%= file_name %>(:update_attributes => true))
|
121
121
|
put :update, :id => "1"
|
122
122
|
assigns(:<%= file_name %>).should equal(mock_<%= file_name %>)
|
123
123
|
end
|
124
124
|
|
125
|
-
it "
|
125
|
+
it "redirects to the <%= file_name %>" do
|
126
126
|
<%= class_name %>.stub!(:find).and_return(mock_<%= file_name %>(:update_attributes => true))
|
127
127
|
put :update, :id => "1"
|
128
128
|
response.should redirect_to(<%= table_name.singularize %>_url(mock_<%= file_name %>))
|
@@ -132,19 +132,19 @@ describe <%= controller_class_name %>Controller do
|
|
132
132
|
|
133
133
|
describe "with invalid params" do
|
134
134
|
|
135
|
-
it "
|
135
|
+
it "updates the requested <%= file_name %>" do
|
136
136
|
<%= class_name %>.should_receive(:find).with("37").and_return(mock_<%= file_name %>)
|
137
137
|
mock_<%= file_name %>.should_receive(:update_attributes).with({'these' => 'params'})
|
138
138
|
put :update, :id => "37", :<%= file_name %> => {:these => 'params'}
|
139
139
|
end
|
140
140
|
|
141
|
-
it "
|
141
|
+
it "exposes the <%= file_name %> as @<%= file_name %>" do
|
142
142
|
<%= class_name %>.stub!(:find).and_return(mock_<%= file_name %>(:update_attributes => false))
|
143
143
|
put :update, :id => "1"
|
144
144
|
assigns(:<%= file_name %>).should equal(mock_<%= file_name %>)
|
145
145
|
end
|
146
146
|
|
147
|
-
it "
|
147
|
+
it "re-renders the 'edit' template" do
|
148
148
|
<%= class_name %>.stub!(:find).and_return(mock_<%= file_name %>(:update_attributes => false))
|
149
149
|
put :update, :id => "1"
|
150
150
|
response.should render_template('edit')
|
@@ -154,15 +154,15 @@ describe <%= controller_class_name %>Controller do
|
|
154
154
|
|
155
155
|
end
|
156
156
|
|
157
|
-
describe "
|
157
|
+
describe "DELETE destroy" do
|
158
158
|
|
159
|
-
it "
|
159
|
+
it "destroys the requested <%= file_name %>" do
|
160
160
|
<%= class_name %>.should_receive(:find).with("37").and_return(mock_<%= file_name %>)
|
161
161
|
mock_<%= file_name %>.should_receive(:destroy)
|
162
162
|
delete :destroy, :id => "37"
|
163
163
|
end
|
164
164
|
|
165
|
-
it "
|
165
|
+
it "redirects to the <%= table_name %> list" do
|
166
166
|
<%= class_name %>.stub!(:find).and_return(mock_<%= file_name %>(:destroy => true))
|
167
167
|
delete :destroy, :id => "1"
|
168
168
|
response.should redirect_to(<%= table_name %>_url)
|
@@ -13,7 +13,7 @@ describe "/<%= table_name %>/edit.<%= default_file_extension %>" do
|
|
13
13
|
)
|
14
14
|
end
|
15
15
|
|
16
|
-
it "
|
16
|
+
it "renders the edit <%= file_name %> form" do
|
17
17
|
render "/<%= table_name %>/edit.<%= default_file_extension %>"
|
18
18
|
|
19
19
|
response.should have_tag("form[action=#{<%= file_name %>_path(@<%= file_name %>)}][method=post]") do
|
@@ -3,7 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + '<%= '/..' * class_nesting_dep
|
|
3
3
|
describe <%= controller_class_name %>Helper do
|
4
4
|
|
5
5
|
#Delete this example and add some real ones or delete this file
|
6
|
-
it "
|
6
|
+
it "is included in the helper object" do
|
7
7
|
included_modules = (class << helper; self; end).send :included_modules
|
8
8
|
included_modules.should include(<%= controller_class_name %>Helper)
|
9
9
|
end
|
@@ -18,7 +18,7 @@ describe "/<%= table_name %>/index.<%= default_file_extension %>" do
|
|
18
18
|
]
|
19
19
|
end
|
20
20
|
|
21
|
-
it "
|
21
|
+
it "renders a list of <%= table_name %>" do
|
22
22
|
render "/<%= table_name %>/index.<%= default_file_extension %>"
|
23
23
|
<% for attribute in output_attributes -%>
|
24
24
|
response.should have_tag("tr>td", <%= attribute.default_value %>.to_s, 2)
|
@@ -13,7 +13,7 @@ describe "/<%= table_name %>/new.<%= default_file_extension %>" do
|
|
13
13
|
)
|
14
14
|
end
|
15
15
|
|
16
|
-
it "
|
16
|
+
it "renders new <%= file_name %> form" do
|
17
17
|
render "/<%= table_name %>/new.<%= default_file_extension %>"
|
18
18
|
|
19
19
|
response.should have_tag("form[action=?][method=post]", <%= table_name %>_path) do
|