rspec_generator 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES ADDED
@@ -0,0 +1 @@
1
+ Please refer to the CHANGES file for RSpec's core
data/README ADDED
@@ -0,0 +1,7 @@
1
+ Please refer to the Documentation on the website:
2
+
3
+ http://rspec.rubyforge.org/tools/rails.html
4
+
5
+ Or if you've checked this out from Subversion, also
6
+ read the README under the rails app for instructions
7
+ on how to run from source.
data/Rakefile ADDED
@@ -0,0 +1,49 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+ require 'rake/gempackagetask'
5
+ require File.dirname(__FILE__) + '/../../../../../lib/spec/version'
6
+
7
+ desc 'Default: run unit tests.'
8
+ task :default => :test
9
+
10
+ PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
11
+ PKG_NAME = 'rspec_generator'
12
+ PKG_VERSION = Spec::VERSION::STRING
13
+ PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
14
+ RELEASE_NAME = "REL #{PKG_VERSION}"
15
+ PKG_FILES = FileList[
16
+ "*.rb",
17
+ "lib/**/*",
18
+ "templates/**/*",
19
+ "[A-Z]*"
20
+ ]
21
+
22
+ desc 'Generate documentation for the rspec_on_rails plugin.'
23
+ Rake::RDocTask.new(:rdoc) do |rdoc|
24
+ rdoc.rdoc_dir = 'rdoc'
25
+ rdoc.title = 'RSpecOnRails'
26
+ rdoc.options << '--line-numbers' << '--inline-source'
27
+ rdoc.rdoc_files.include('README')
28
+ rdoc.rdoc_files.include('lib/**/*.rb')
29
+ end
30
+
31
+ spec = Gem::Specification.new do |s|
32
+ s.name = PKG_NAME
33
+ s.version = PKG_VERSION
34
+ s.summary = "RSpec plugin and generator for Ruby on Rails"
35
+ s.has_rdoc = false
36
+ s.files = PKG_FILES
37
+ s.require_path = 'lib'
38
+ s.author = "Lachie Cox, Aslak Hellesoy"
39
+ s.email = "rspec-devel@rubyforge.org"
40
+ s.homepage = "http://rspec.rubyforge.org/"
41
+ s.add_dependency("rspec", "= #{PKG_VERSION}")
42
+ end
43
+
44
+ # Create Rubygem package
45
+ Rake::GemPackageTask.new(spec) do |p|
46
+ p.gem_spec = spec
47
+ p.need_tar = false
48
+ p.need_zip = false
49
+ end
@@ -0,0 +1,160 @@
1
+ require 'rexml/document'
2
+
3
+ module Spec
4
+ module ControllerContext
5
+ def self.included(base)
6
+ super
7
+ base.send :include, Spec::ControllerContext::InstanceMethods
8
+ end
9
+
10
+ module InstanceMethods
11
+ def controller_name(name=nil)
12
+ @controller_name = name if name
13
+ @controller_name
14
+ end
15
+ end
16
+ end
17
+
18
+ module ControllerExecution
19
+
20
+ def self.included(base)
21
+ super
22
+ base.send :include, Spec::ControllerExecution::InstanceMethods
23
+ end
24
+
25
+ module InstanceMethods
26
+
27
+ attr_reader :response, :request, :controller
28
+
29
+ def setup_with_controller(controller_name=nil)
30
+ return unless controller_name
31
+
32
+ @controller_class = "#{controller_name}_controller".camelize.constantize
33
+
34
+ #@controller_class = Object.path2class @controller_class_name
35
+ raise "Can't determine controller class for #{self.class}" if @controller_class.nil?
36
+
37
+ @controller = @controller_class.new
38
+
39
+ @session = ActionController::TestSession.new
40
+
41
+ @flash = ActionController::Flash::FlashHash.new
42
+ @session['flash'] = @flash
43
+
44
+ @request = ActionController::TestRequest.new
45
+ @request.session = @session
46
+
47
+ @response = ActionController::TestResponse.new
48
+ @controller_class.send(:define_method, :rescue_action) { |e| raise e }
49
+
50
+ @deliveries = []
51
+ ActionMailer::Base.deliveries = @deliveries
52
+
53
+ # used by util_audit_assert_assigns
54
+ @assigns_asserted = []
55
+ @assigns_ignored ||= [] # untested assigns to ignore
56
+ end
57
+
58
+ def teardown_with_controller
59
+ end
60
+
61
+ def assigns(key = nil)
62
+ if key.nil?
63
+ @response.template.assigns
64
+ else
65
+ @response.template.assigns[key.to_s]
66
+ end
67
+ end
68
+
69
+
70
+ ##
71
+ # Excutes the request +action+ with +params+.
72
+ #
73
+ # See also: get, post, put, delete, head, xml_http_request
74
+
75
+ def process(action, parameters = nil)
76
+ parameters ||= {}
77
+
78
+ @request.recycle!
79
+ @request.env['REQUEST_METHOD'] ||= 'GET'
80
+ @request.action = action.to_s
81
+
82
+ @request.assign_parameters @controller_class.controller_path, action.to_s,
83
+ parameters
84
+
85
+ build_request_uri action, parameters
86
+
87
+ @controller.process @request, @response
88
+ end
89
+
90
+ ##
91
+ # Performs a GET request on +action+ with +params+.
92
+
93
+ def get(action, parameters = nil)
94
+ @request.env['REQUEST_METHOD'] = 'GET'
95
+ process action, parameters
96
+ end
97
+
98
+ ##
99
+ # Performs a HEAD request on +action+ with +params+.
100
+
101
+ def head(action, parameters = nil)
102
+ @request.env['REQUEST_METHOD'] = 'HEAD'
103
+ process action, parameters
104
+ end
105
+
106
+ ##
107
+ # Performs a POST request on +action+ with +params+.
108
+
109
+ def post(action, parameters = nil)
110
+ @request.env['REQUEST_METHOD'] = 'POST'
111
+ process action, parameters
112
+ end
113
+
114
+ ##
115
+ # Performs a PUT request on +action+ with +params+.
116
+
117
+ def put(action, parameters = nil)
118
+ @request.env['REQUEST_METHOD'] = 'PUT'
119
+ process action, parameters
120
+ end
121
+
122
+ ##
123
+ # Performs a DELETE request on +action+ with +params+.
124
+
125
+ def delete(action, parameters = nil)
126
+ @request.env['REQUEST_METHOD'] = 'DELETE'
127
+ process action, parameters
128
+ end
129
+
130
+ def xml_document
131
+ @xml_document ||= REXML::Document.new(@response.body)
132
+ end
133
+
134
+ def xml_tags(xpath)
135
+ xml_document.elements.to_a(xpath)
136
+ end
137
+
138
+ def xml_attrs(xpath)
139
+ xml_document.elements.to_a(xpath).first.attributes
140
+ end
141
+
142
+ def xml_text(xpath)
143
+ xml_document.elements.to_a(xpath).first.text.to_s
144
+ end
145
+
146
+ private
147
+
148
+ def build_request_uri(action, parameters)
149
+ return if @request.env['REQUEST_URI']
150
+
151
+ options = @controller.send :rewrite_options, parameters
152
+ options.update :only_path => true, :action => action
153
+
154
+ url = ActionController::UrlRewriter.new @request, parameters
155
+ @request.set_REQUEST_URI url.rewrite(options)
156
+ end
157
+
158
+ end
159
+ end
160
+ end
@@ -0,0 +1,173 @@
1
+
2
+ module Spec
3
+ module Runner
4
+
5
+ class Specification
6
+ attr_accessor :loaded_fixtures
7
+ end
8
+
9
+ class Context
10
+ cattr_accessor :fixture_path
11
+
12
+ class_inheritable_accessor :fixture_table_names
13
+ class_inheritable_accessor :fixture_class_names
14
+ class_inheritable_accessor :use_transactional_fixtures
15
+ class_inheritable_accessor :use_instantiated_fixtures # true, false, or :no_instances
16
+ class_inheritable_accessor :pre_loaded_fixtures
17
+
18
+ attr_accessor :loaded_fixtures, :setup_block, :teardown_block
19
+
20
+ self.fixture_table_names = []
21
+ self.use_transactional_fixtures = false
22
+ self.use_instantiated_fixtures = true
23
+ self.pre_loaded_fixtures = false
24
+
25
+ self.fixture_class_names = {}
26
+
27
+ @@already_loaded_fixtures = {}
28
+ self.fixture_class_names = {}
29
+
30
+ def self.set_fixture_class(class_names = {})
31
+ self.fixture_class_names = self.fixture_class_names.merge(class_names)
32
+ end
33
+
34
+ def self.fixtures(*table_names)
35
+ table_names = table_names.flatten.map { |n| n.to_s }
36
+ self.fixture_table_names |= table_names
37
+ require_fixture_classes(table_names)
38
+ setup_fixture_accessors(table_names)
39
+ end
40
+
41
+ def fixtures(*table_names)
42
+ self.class.fixtures(*table_names)
43
+ end
44
+
45
+ def self.require_fixture_classes(table_names=nil)
46
+ (table_names || fixture_table_names).each do |table_name|
47
+ file_name = table_name.to_s
48
+ file_name = file_name.singularize if ActiveRecord::Base.pluralize_table_names
49
+ begin
50
+ require file_name
51
+ rescue LoadError
52
+ # Let's hope the developer has included it himself
53
+ end
54
+ end
55
+ end
56
+
57
+ def self.setup_fixture_accessors(table_names=nil)
58
+
59
+ (table_names || fixture_table_names).each do |table_name|
60
+ table_name = table_name.to_s.tr('.','_')
61
+
62
+ # define_method(table_name)
63
+ # when defining the methods into Spec::Runner::ExecutionContext, you need to make sure
64
+ # it gets all the data it needs passed through somehow
65
+ # this is done in the lambda's in Spec::Runner::Context#run
66
+ Spec::Runner::ExecutionContext.send(:define_method, table_name) do |fixture, *optionals|
67
+
68
+ force_reload = optionals.shift
69
+ @fixture_cache[table_name] ||= Hash.new
70
+ @fixture_cache[table_name][fixture] = nil if force_reload
71
+
72
+ if @spec.loaded_fixtures[table_name][fixture.to_s]
73
+ @fixture_cache[table_name][fixture] ||= @spec.loaded_fixtures[table_name][fixture.to_s].find
74
+ else
75
+ raise StandardError, "No fixture with name '#{fixture}' found for table '#{table_name}'"
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ def self.uses_transaction(*methods)
82
+ @uses_transaction ||= []
83
+ @uses_transaction.concat methods.map { |m| m.to_s }
84
+ end
85
+
86
+ def self.uses_transaction?(method)
87
+ @uses_transaction && @uses_transaction.include?(method.to_s)
88
+ end
89
+
90
+ # instance
91
+ def use_transactional_fixtures?
92
+ use_transactional_fixtures
93
+ #&&
94
+ #!self.class.uses_transaction?(method_name)
95
+ end
96
+
97
+ def setup_with_fixtures
98
+ if pre_loaded_fixtures && use_transactional_fixtures?
99
+ raise RuntimeError, 'pre_loaded_fixtures requires use_transactional_fixtures'
100
+ end
101
+
102
+ # @fixture_cache = Hash.new
103
+
104
+ # Load fixtures once and begin transaction.
105
+ if use_transactional_fixtures?
106
+ if @@already_loaded_fixtures[self.class]
107
+ @loaded_fixtures = @@already_loaded_fixtures[self.class]
108
+ else
109
+ load_fixtures
110
+ @@already_loaded_fixtures[self.class] = @loaded_fixtures
111
+ end
112
+ ActiveRecord::Base.lock_mutex
113
+ ActiveRecord::Base.connection.begin_db_transaction
114
+
115
+ # Load fixtures for every test.
116
+ else
117
+ @@already_loaded_fixtures[self.class] = nil
118
+ load_fixtures
119
+ end
120
+
121
+ # Instantiate fixtures for every test if requested.
122
+ instantiate_fixtures if use_instantiated_fixtures
123
+ end
124
+
125
+ def teardown_with_fixtures
126
+ # Rollback changes.
127
+ if use_transactional_fixtures?
128
+ ActiveRecord::Base.connection.rollback_db_transaction
129
+ ActiveRecord::Base.unlock_mutex
130
+ end
131
+ ActiveRecord::Base.verify_active_connections!
132
+ end
133
+
134
+ private
135
+ def load_fixtures
136
+ @loaded_fixtures = {}
137
+ fixtures = Fixtures.create_fixtures(fixture_path, fixture_table_names, fixture_class_names)
138
+ unless fixtures.nil?
139
+ if fixtures.instance_of?(Fixtures)
140
+ @loaded_fixtures[fixtures.table_name] = fixtures
141
+ else
142
+ fixtures.each { |f| @loaded_fixtures[f.table_name] = f }
143
+ end
144
+ end
145
+ end
146
+
147
+ # for pre_loaded_fixtures, only require the classes once. huge speed improvement
148
+ @@required_fixture_classes = false
149
+
150
+ def instantiate_fixtures
151
+ if pre_loaded_fixtures
152
+ raise RuntimeError, 'Load fixtures before instantiating them.' if Fixtures.all_loaded_fixtures.empty?
153
+ unless @@required_fixture_classes
154
+ self.class.require_fixture_classes Fixtures.all_loaded_fixtures.keys
155
+ @@required_fixture_classes = true
156
+ end
157
+ Fixtures.instantiate_all_loaded_fixtures(self, load_instances?)
158
+ else
159
+ raise RuntimeError, 'Load fixtures before instantiating them.' if @loaded_fixtures.nil?
160
+ @loaded_fixtures.each do |table_name, fixtures|
161
+ Fixtures.instantiate_fixtures(self, table_name, fixtures, load_instances?)
162
+ end
163
+ end
164
+ end
165
+
166
+ def load_instances?
167
+ use_instantiated_fixtures != :no_instances
168
+ end
169
+
170
+
171
+ end
172
+ end
173
+ end
@@ -0,0 +1,67 @@
1
+ require 'application'
2
+
3
+ silence_warnings { RAILS_ENV = "test" }
4
+
5
+ require 'active_record/base'
6
+ require 'active_record/fixtures'
7
+ require 'action_controller/test_process'
8
+ require 'action_controller/integration'
9
+ require 'spec'
10
+
11
+ require File.dirname(__FILE__) + '/fixture_loading.rb'
12
+ require File.dirname(__FILE__) + '/controller_mixin.rb'
13
+
14
+ module Spec
15
+ module Runner
16
+
17
+ class ExecutionContext
18
+ include Spec::ControllerExecution
19
+ end
20
+
21
+ class Context
22
+ include Spec::ControllerContext
23
+
24
+ # entry point into rspec
25
+ # Keep it sync'ed!
26
+ def run(reporter,dry_run=false)
27
+ ctx = self
28
+
29
+ reporter.add_context(@name)
30
+
31
+ @specifications.each do |specification|
32
+
33
+ specification.run( reporter,
34
+ lambda do
35
+ @fixture_cache = Hash.new
36
+ ctx.setup_with_fixtures
37
+ setup_with_controller(ctx.controller_name)
38
+
39
+ specification.loaded_fixtures = ctx.loaded_fixtures
40
+
41
+ self.instance_exec(&ctx.setup_block) unless ctx.setup_block.nil?
42
+ end,
43
+ lambda do
44
+ self.instance_exec(&ctx.teardown_block) unless ctx.teardown_block.nil?
45
+
46
+ teardown_with_controller
47
+ ctx.teardown_with_fixtures
48
+ end,
49
+ dry_run
50
+ )
51
+
52
+ end
53
+ end
54
+
55
+ def helper(name, &block)
56
+ self.class.helper(name, &block)
57
+ end
58
+
59
+ def self.helper(name, &block)
60
+ Spec::Runner::ExecutionContext.send :define_method, name.to_sym, &block
61
+ end
62
+
63
+ end # Context
64
+
65
+ end
66
+ end
67
+
@@ -0,0 +1,34 @@
1
+ # This generator adds the basic spec_helper.rb
2
+ # and rake tasks required to use RSpec with Rails
3
+ class RspecGenerator < Rails::Generator::Base
4
+ def initialize(runtime_args, runtime_options = {})
5
+ super
6
+ end
7
+
8
+ def manifest
9
+ record do |m|
10
+ # The spec helper and Rake tasks
11
+ m.directory 'spec'
12
+ m.template 'spec_helper.rb', 'spec/spec_helper.rb'
13
+ m.template 'rspec.rake', 'lib/tasks/rspec.rake'
14
+
15
+ # Copy out the rspec_model generator
16
+ m.directory 'vendor/generators/rspec_model/templates'
17
+ m.file 'rspec_model/USAGE', 'vendor/generators/rspec_model/USAGE'
18
+ m.file 'rspec_model/rspec_model_generator.rb', 'vendor/generators/rspec_model/rspec_model_generator.rb'
19
+ m.file 'rspec_model/templates/model_spec.rb', 'vendor/generators/rspec_model/templates/model_spec.rb'
20
+
21
+ # Copy out the rspec_controller generator
22
+ m.directory 'vendor/generators/rspec_controller/templates'
23
+ m.file 'rspec_controller/USAGE', 'vendor/generators/rspec_controller/USAGE'
24
+ m.file 'rspec_controller/rspec_controller_generator.rb', 'vendor/generators/rspec_controller/rspec_controller_generator.rb'
25
+ m.file 'rspec_controller/templates/controller_spec.rb', 'vendor/generators/rspec_controller/templates/controller_spec.rb'
26
+ end
27
+ end
28
+
29
+ protected
30
+ def banner
31
+ "Usage: #{$0} rspec"
32
+ end
33
+
34
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec/rake/spectask'
2
+
3
+ desc 'Run all model and controller specs'
4
+ task :spec do
5
+ Rake::Task["spec:models"].invoke rescue got_error = true
6
+ Rake::Task["spec:controllers"].invoke rescue got_error = true
7
+
8
+ # not yet supported
9
+ #if File.exist?("spec/integration")
10
+ # Rake::Task["spec:integration"].invoke rescue got_error = true
11
+ #end
12
+
13
+ raise "RSpec failures" if got_error
14
+ end
15
+
16
+
17
+ namespace :spec do
18
+ desc "Run the specs under spec/models"
19
+ Spec::Rake::SpecTask.new(:models => "db:test:prepare") do |t|
20
+ t.spec_files = FileList['spec/models/**/*_spec.rb']
21
+ end
22
+
23
+ desc "Run the specs under spec/controllers"
24
+ Spec::Rake::SpecTask.new(:controllers => "db:test:prepare") do |t|
25
+ t.spec_files = FileList['spec/controllers/**/*_spec.rb']
26
+ end
27
+ end
@@ -0,0 +1,29 @@
1
+ Description:
2
+ The rspec_controller generator creates stubs for a new controller and its views.
3
+
4
+ The generator takes a controller name and a list of views as arguments.
5
+ The controller name may be given in CamelCase or under_score and should
6
+ not be suffixed with 'Controller'. To create a controller within a
7
+ module, specify the controller name as 'module/controller'.
8
+
9
+ The generator creates a controller class in app/controllers with view
10
+ templates in app/views/controller_name, a helper class in app/helpers,
11
+ and a functional spec suite in spec/functional.
12
+
13
+ Example:
14
+ ./script/generate rspec_controller CreditCard open debit credit close
15
+
16
+ Credit card controller with URLs like /credit_card/debit.
17
+ Controller: app/controllers/credit_card_controller.rb
18
+ Views: app/views/credit_card/debit.rhtml [...]
19
+ Helper: app/helpers/credit_card_helper.rb
20
+ Spec: spec/controllers/credit_card_controller_spec.rb
21
+
22
+ Modules Example:
23
+ ./script/generate controller 'admin/credit_card' suspend late_fee
24
+
25
+ Credit card admin controller with URLs /admin/credit_card/suspend.
26
+ Controller: app/controllers/admin/credit_card_controller.rb
27
+ Views: app/views/admin/credit_card/debit.rhtml [...]
28
+ Helper: app/helpers/admin/credit_card_helper.rb
29
+ Spec: spec/controllers/admin/credit_card_controller_spec.rb
@@ -0,0 +1,41 @@
1
+ require 'rails_generator/generators/components/controller/controller_generator'
2
+
3
+ class RspecControllerGenerator < ControllerGenerator
4
+ def manifest
5
+ record do |m|
6
+ # Check for class naming collisions.
7
+ m.class_collisions class_path, "#{class_name}Controller", "#{class_name}Helper"
8
+
9
+ # Controller, helper, views, and spec directories.
10
+ m.directory File.join('app/controllers', class_path)
11
+ m.directory File.join('app/helpers', class_path)
12
+ m.directory File.join('app/views', class_path, file_name)
13
+ m.directory File.join('spec/controllers', class_path)
14
+
15
+ # Controller class, functional spec, and helper class.
16
+ m.template 'controller:controller.rb',
17
+ File.join('app/controllers',
18
+ class_path,
19
+ "#{file_name}_controller.rb")
20
+
21
+ m.template 'controller_spec.rb',
22
+ File.join('spec/controllers',
23
+ class_path,
24
+ "#{file_name}_controller_spec.rb")
25
+
26
+ m.template 'controller:helper.rb',
27
+ File.join('app/helpers',
28
+ class_path,
29
+ "#{file_name}_helper.rb")
30
+
31
+ # View template for each action.
32
+ actions.each do |action|
33
+ path = File.join('app/views', class_path, file_name, "#{action}.rhtml")
34
+ m.template 'controller:view.rhtml',
35
+ path,
36
+ :assigns => { :action => action, :path => path }
37
+ end
38
+ end
39
+ end
40
+
41
+ end
@@ -0,0 +1,22 @@
1
+ require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../spec_helper'
2
+
3
+ context "The <%= class_name %>Controller" do
4
+ # fixtures :<%= table_name %>
5
+ controller_name :<%= class_name.underscore %>
6
+
7
+ specify "should be a <%= class_name %>Controller" do
8
+ controller.should.be.an.instance.of <%= class_name %>Controller
9
+ end
10
+
11
+ <% for action in actions -%>
12
+
13
+ specify "should accept GET to <%= action %>"
14
+ get '<%= action %>'
15
+ response.should.be.success
16
+ end
17
+ <% end -%>
18
+
19
+ specify "should have more specifications" do
20
+ violated "not enough specs"
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ Description:
2
+ The rspec_model generator creates stubs for a new model.
3
+
4
+ The generator takes a model name as its argument. The model name may be
5
+ given in CamelCase or under_score and should not be suffixed with 'Model'.
6
+
7
+ The generator creates a model class in app/models, an RSpec spec in
8
+ spec/models, database fixtures in spec/fixtures/plural_name.yml, and a migration
9
+ in db/migrate.
10
+
11
+ Example:
12
+ ./script/generate rspec_model Account
13
+
14
+ This will create an Account model:
15
+ Model: app/models/account.rb
16
+ Spec: spec/models/account_spec.rb
17
+ Fixtures: spec/fixtures/accounts.yml
18
+ Migration: db/migrate/XXX_add_accounts.rb
@@ -0,0 +1,30 @@
1
+ require 'rails_generator/generators/components/model/model_generator'
2
+
3
+ class RspecModelGenerator < ModelGenerator
4
+
5
+ def manifest
6
+
7
+ record do |m|
8
+ # Check for class naming collisions.
9
+ m.class_collisions class_path, class_name
10
+
11
+ # Model, spec, and fixture directories.
12
+ m.directory File.join('app/models', class_path)
13
+ m.directory File.join('spec/models', class_path)
14
+ m.directory File.join('spec/fixtures', class_path)
15
+
16
+ # Model class, unit test, and fixtures.
17
+ m.template 'model:model.rb', File.join('app/models', class_path, "#{file_name}.rb")
18
+ m.template 'model:fixtures.yml', File.join('spec/fixtures', class_path, "#{table_name}.yml")
19
+ m.template 'model_spec.rb', File.join('spec/models', class_path, "#{file_name}_spec.rb")
20
+
21
+ unless options[:skip_migration]
22
+ m.migration_template 'model:migration.rb', 'db/migrate', :assigns => {
23
+ :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}"
24
+ }, :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}"
25
+ end
26
+
27
+ end
28
+ end
29
+
30
+ end
@@ -0,0 +1,25 @@
1
+ require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../spec_helper'
2
+
3
+ context "<%= class_name %> class with fixtures loaded" do
4
+ fixtures :<%= table_name %>
5
+
6
+ specify "should count two <%= class_name.pluralize %>" do
7
+ <%= class_name %>.count.should.be 2
8
+ end
9
+
10
+ specify "should have more specifications" do
11
+ violated "nothing specified"
12
+ end
13
+ end
14
+
15
+ context "<%= class_name %> fixture :first" do
16
+ fixtures :<%= table_name %>
17
+
18
+ setup do
19
+ @first = <%= class_name.pluralize.underscore %>(:first)
20
+ end
21
+
22
+ specify "should have more specifications" do
23
+ violated "nothing specified"
24
+ end
25
+ end
@@ -0,0 +1,13 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
3
+ require 'rspec_on_rails'
4
+
5
+ module Spec
6
+ module Runner
7
+ class Context
8
+ self.use_transactional_fixtures = true
9
+ self.use_instantiated_fixtures = false
10
+ self.fixture_path = RAILS_ROOT + '/spec/fixtures'
11
+ end
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.11
3
+ specification_version: 1
4
+ name: rspec_generator
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.5.5
7
+ date: 2006-06-06 00:00:00 -05:00
8
+ summary: RSpec plugin and generator for Ruby on Rails
9
+ require_paths:
10
+ - lib
11
+ email: rspec-devel@rubyforge.org
12
+ homepage: http://rspec.rubyforge.org/
13
+ rubyforge_project:
14
+ description:
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ authors:
29
+ - Lachie Cox, Aslak Hellesoy
30
+ files:
31
+ - rspec_generator.rb
32
+ - lib/controller_mixin.rb
33
+ - lib/fixture_loading.rb
34
+ - lib/rspec_on_rails.rb
35
+ - templates/rspec.rake
36
+ - templates/rspec_controller
37
+ - templates/rspec_model
38
+ - templates/spec_helper.rb
39
+ - templates/rspec_controller/rspec_controller_generator.rb
40
+ - templates/rspec_controller/templates
41
+ - templates/rspec_controller/USAGE
42
+ - templates/rspec_controller/templates/controller_spec.rb
43
+ - templates/rspec_model/rspec_model_generator.rb
44
+ - templates/rspec_model/templates
45
+ - templates/rspec_model/USAGE
46
+ - templates/rspec_model/templates/model_spec.rb
47
+ - CHANGES
48
+ - Rakefile
49
+ - README
50
+ test_files: []
51
+
52
+ rdoc_options: []
53
+
54
+ extra_rdoc_files: []
55
+
56
+ executables: []
57
+
58
+ extensions: []
59
+
60
+ requirements: []
61
+
62
+ dependencies:
63
+ - !ruby/object:Gem::Dependency
64
+ name: rspec
65
+ version_requirement:
66
+ version_requirements: !ruby/object:Gem::Version::Requirement
67
+ requirements:
68
+ - - "="
69
+ - !ruby/object:Gem::Version
70
+ version: 0.5.5
71
+ version: