diff --git a/History.md b/History.md index dc84ea614c..cf773d9d78 100644 --- a/History.md +++ b/History.md @@ -1,4 +1,17 @@ -## rspec-rails release history (incomplete) +## rspec-rails-2 release history (incomplete) + +### 2.0.1 / 2010-10-15 + +[full changelog](http://github.com/rspec/rspec-rails/compare/v2.0.0...v2.0.1) + +* Enhancements + * Add option to not generate request spec (--skip-request-specs) + +* Bug fixes + * Updated the mock_[model] method generated in controller specs so it adds + any stubs submitted each time it is called. + * Fixed bug where view assigns weren't making it to the view in view specs in Rails-3.0.1. + (Emanuele Vicentini) ### 2.0.0 / 2010-10-10 diff --git a/Thorfile b/Thorfile index 9d325dfdd1..8a805ec1c7 100644 --- a/Thorfile +++ b/Thorfile @@ -1,13 +1,15 @@ class Rails < Thor VERSIONS = { :rails => { - "3.0.0" => "v3.0.0", "master" => "master", + "3.0.0" => "v3.0.0", + "3.0.1" => "v3.0.1", "3-0-stable" => "origin/3-0-stable" }, :arel => { - "3.0.0" => "v1.0.0", "master" => "master", + "3.0.0" => "v1.0.0", + "3.0.1" => "v1.0.0", "3-0-stable" => "master" } } diff --git a/lib/generators/rspec/controller/controller_generator.rb b/lib/generators/rspec/controller/controller_generator.rb index 29271c3e68..6a43f1881e 100644 --- a/lib/generators/rspec/controller/controller_generator.rb +++ b/lib/generators/rspec/controller/controller_generator.rb @@ -9,14 +9,14 @@ class ControllerGenerator < Base class_option :controller_specs, :type => :boolean, :default => true class_option :view_specs, :type => :boolean, :default => true - def create_controller_files + def generate_controller_spec return unless options[:controller_specs] template 'controller_spec.rb', File.join('spec/controllers', class_path, "#{file_name}_controller_spec.rb") end - def create_view_files + def generate_view_specs return if actions.empty? return unless options[:view_specs] diff --git a/lib/generators/rspec/helper/helper_generator.rb b/lib/generators/rspec/helper/helper_generator.rb index 86cc11ffa2..d0e7e7ac17 100644 --- a/lib/generators/rspec/helper/helper_generator.rb +++ b/lib/generators/rspec/helper/helper_generator.rb @@ -5,7 +5,7 @@ module Generators class HelperGenerator < Base class_option :helper_specs, :type => :boolean, :default => true - def create_helper_files + def generate_helper_spec return unless options[:helper_specs] template 'helper_spec.rb', File.join('spec/helpers', class_path, "#{file_name}_helper_spec.rb") diff --git a/lib/generators/rspec/integration/integration_generator.rb b/lib/generators/rspec/integration/integration_generator.rb index 459de24b40..aca6d0d98e 100644 --- a/lib/generators/rspec/integration/integration_generator.rb +++ b/lib/generators/rspec/integration/integration_generator.rb @@ -3,7 +3,11 @@ module Rspec module Generators class IntegrationGenerator < Base - def create_integration_file + class_option :request_specs, :type => :boolean, :default => true, :desc => "Generate request specs" + + def generate_request_spec + return unless options[:request_specs] + template 'request_spec.rb', File.join('spec/requests', class_path, "#{table_name}_spec.rb") end diff --git a/lib/generators/rspec/mailer/mailer_generator.rb b/lib/generators/rspec/mailer/mailer_generator.rb index ad074bd10e..88dff6ab07 100644 --- a/lib/generators/rspec/mailer/mailer_generator.rb +++ b/lib/generators/rspec/mailer/mailer_generator.rb @@ -5,11 +5,11 @@ module Generators class MailerGenerator < Base argument :actions, :type => :array, :default => [], :banner => "method method" - def create_spec_files + def generate_mailer_spec template "mailer_spec.rb", File.join('spec/mailers', class_path, "#{file_name}_spec.rb") end - def create_fixtures_files + def generate_fixtures_files actions.each do |action| @action, @path = action, File.join(file_path, action) template "fixture", File.join("spec/fixtures", @path) diff --git a/lib/generators/rspec/model/model_generator.rb b/lib/generators/rspec/model/model_generator.rb index d0599ea13b..e0528962f8 100644 --- a/lib/generators/rspec/model/model_generator.rb +++ b/lib/generators/rspec/model/model_generator.rb @@ -6,7 +6,7 @@ class ModelGenerator < Base argument :attributes, :type => :array, :default => [], :banner => "field:type field:type" class_option :fixture, :type => :boolean - def create_test_file + def create_model_spec template 'model_spec.rb', File.join('spec/models', class_path, "#{file_name}_spec.rb") end diff --git a/lib/generators/rspec/observer/observer_generator.rb b/lib/generators/rspec/observer/observer_generator.rb index 865cf6320c..2cab133e45 100644 --- a/lib/generators/rspec/observer/observer_generator.rb +++ b/lib/generators/rspec/observer/observer_generator.rb @@ -3,7 +3,7 @@ module Rspec module Generators class ObserverGenerator < Base - def create_observer_files + def generate_observer_spec template 'observer_spec.rb', File.join('spec', 'models', class_path, "#{file_name}_observer_spec.rb") end diff --git a/lib/generators/rspec/scaffold/scaffold_generator.rb b/lib/generators/rspec/scaffold/scaffold_generator.rb index d0b0fdb13c..15cf2787c8 100644 --- a/lib/generators/rspec/scaffold/scaffold_generator.rb +++ b/lib/generators/rspec/scaffold/scaffold_generator.rb @@ -18,14 +18,14 @@ class ScaffoldGenerator < Base class_option :helper_specs, :type => :boolean, :default => true, :desc => "Generate helper specs" class_option :routing_specs, :type => :boolean, :default => true, :desc => "Generate routing specs" - def copy_controller_files + def generate_controller_spec return unless options[:controller_specs] template 'controller_spec.rb', File.join('spec/controllers', controller_class_path, "#{controller_file_name}_controller_spec.rb") end - def copy_view_files + def generate_view_specs return unless options[:view_specs] copy_view :edit @@ -39,7 +39,7 @@ def copy_view_files invoke invoked, [ controller_name ] end - def copy_routing_files + def generate_routing_spec return unless options[:routing_specs] template 'routing_spec.rb', diff --git a/lib/generators/rspec/scaffold/templates/controller_spec.rb b/lib/generators/rspec/scaffold/templates/controller_spec.rb index 5cfd58694e..708f3e48f9 100755 --- a/lib/generators/rspec/scaffold/templates/controller_spec.rb +++ b/lib/generators/rspec/scaffold/templates/controller_spec.rb @@ -3,7 +3,9 @@ describe <%= controller_class_name %>Controller do def <%= mock_file_name %>(stubs={}) - @<%= mock_file_name %> ||= mock_model(<%= class_name %>, stubs).as_null_object + (@<%= mock_file_name %> ||= mock_model(<%= class_name %>).as_null_object).tap do |<%= file_name %>| + <%= file_name %>.stub(stubs) unless stubs.empty? + end end <% unless options[:singleton] -%> diff --git a/lib/generators/rspec/view/view_generator.rb b/lib/generators/rspec/view/view_generator.rb index f520ce8e57..4bc33041e3 100644 --- a/lib/generators/rspec/view/view_generator.rb +++ b/lib/generators/rspec/view/view_generator.rb @@ -7,7 +7,7 @@ class ViewGenerator < Base class_option :template_engine, :desc => "Template engine to generate view files" - def create_view_files + def create_view_specs empty_directory File.join("spec", "views", file_path) actions.each do |action| diff --git a/lib/rspec/rails.rb b/lib/rspec/rails.rb index b7b48750fa..d4bf0e3bbe 100644 --- a/lib/rspec/rails.rb +++ b/lib/rspec/rails.rb @@ -8,12 +8,13 @@ def using_active_record? end end +require 'rspec/core' + RSpec::configure do |c| c.backtrace_clean_patterns << /vendor\// c.backtrace_clean_patterns << /lib\/rspec\/rails/ end -require 'rspec/core' require 'rspec/rails/extensions' require 'rspec/rails/view_rendering' require 'rspec/rails/adapters' @@ -23,3 +24,5 @@ def using_active_record? require 'rspec/rails/module_inclusion' require 'rspec/rails/browser_simulators' require 'rspec/rails/example' + + diff --git a/lib/rspec/rails/version.rb b/lib/rspec/rails/version.rb index ed248aafe4..51d24c6a34 100644 --- a/lib/rspec/rails/version.rb +++ b/lib/rspec/rails/version.rb @@ -1,7 +1,7 @@ module RSpec # :nodoc: module Rails # :nodoc: module Version # :nodoc: - STRING = '2.0.0' + STRING = '2.0.1' end end end diff --git a/lib/rspec/rails/view_assigns.rb b/lib/rspec/rails/view_assigns.rb index 61b6e131b5..4fa8b91bfb 100644 --- a/lib/rspec/rails/view_assigns.rb +++ b/lib/rspec/rails/view_assigns.rb @@ -13,17 +13,26 @@ def assign(key, value) _encapsulated_assigns[key] = value end - if ::Rails::VERSION::STRING == "3.0.0" - def _assigns + def view_assigns + begin + # TODO: _assigns was deprecated in favor of view_assigns after + # Rails-3.0.0 was released. Since we are not able to predict when + # the _assigns/view_assigns patch will be released (I thought it + # would have been in 3.0.1, but 3.0.1 bypassed this change for a + # security fix), this bit ensures that we do the right thing without + # knowing anything about the Rails version we are dealing with. + # + # Once that change _is_ released, this can be changed to something + # that checks for the Rails version when the module is being + # interpreted, as it was before commit dd0095. super.merge(_encapsulated_assigns) - end - def view_assigns + rescue _assigns end - else # >= 3.0.1 - def view_assigns - super.merge(_encapsulated_assigns) - end + end + + def _assigns + super.merge(_encapsulated_assigns) end private @@ -32,6 +41,7 @@ def _encapsulated_assigns @_encapsulated_assigns ||= {} end end + end end end diff --git a/rspec-rails.gemspec b/rspec-rails.gemspec index 6e73e6614e..8947023bbc 100644 --- a/rspec-rails.gemspec +++ b/rspec-rails.gemspec @@ -57,6 +57,6 @@ Gem::Specification.new do |s| ************************************************** } - s.add_runtime_dependency "rspec", RSpec::Rails::Version::STRING + s.add_runtime_dependency "rspec", "~> 2.0.0" end