rspec-rails 2.14.2 → 3.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/.document +1 -1
  4. data/.yardopts +4 -2
  5. data/Capybara.md +2 -4
  6. data/Changelog.md +592 -34
  7. data/{License.txt → LICENSE.md} +5 -2
  8. data/README.md +290 -369
  9. data/lib/generators/rspec/controller/controller_generator.rb +1 -0
  10. data/lib/generators/rspec/controller/templates/controller_spec.rb +5 -5
  11. data/lib/generators/rspec/controller/templates/view_spec.rb +2 -2
  12. data/lib/generators/rspec/feature/feature_generator.rb +29 -0
  13. data/lib/generators/rspec/feature/templates/feature_singular_spec.rb +5 -0
  14. data/lib/generators/rspec/feature/templates/feature_spec.rb +5 -0
  15. data/lib/generators/rspec/generators/generator_generator.rb +24 -0
  16. data/lib/generators/rspec/generators/templates/generator_spec.rb +6 -0
  17. data/lib/generators/rspec/helper/helper_generator.rb +1 -0
  18. data/lib/generators/rspec/helper/templates/helper_spec.rb +2 -2
  19. data/lib/generators/rspec/install/install_generator.rb +44 -5
  20. data/lib/generators/rspec/install/templates/spec/rails_helper.rb +78 -0
  21. data/lib/generators/rspec/integration/integration_generator.rb +8 -13
  22. data/lib/generators/rspec/integration/templates/request_spec.rb +4 -9
  23. data/lib/generators/rspec/job/job_generator.rb +12 -0
  24. data/lib/generators/rspec/job/templates/job_spec.rb.erb +7 -0
  25. data/lib/generators/rspec/mailer/mailer_generator.rb +7 -0
  26. data/lib/generators/rspec/mailer/templates/mailer_spec.rb +7 -7
  27. data/lib/generators/rspec/mailer/templates/preview.rb +13 -0
  28. data/lib/generators/rspec/model/model_generator.rb +19 -5
  29. data/lib/generators/rspec/model/templates/fixtures.yml +1 -1
  30. data/lib/generators/rspec/model/templates/model_spec.rb +2 -2
  31. data/lib/generators/rspec/observer/observer_generator.rb +1 -0
  32. data/lib/generators/rspec/observer/templates/observer_spec.rb +2 -2
  33. data/lib/generators/rspec/request/request_generator.rb +10 -0
  34. data/lib/generators/rspec/scaffold/scaffold_generator.rb +68 -138
  35. data/lib/generators/rspec/scaffold/templates/api_controller_spec.rb +165 -0
  36. data/lib/generators/rspec/scaffold/templates/controller_spec.rb +98 -73
  37. data/lib/generators/rspec/scaffold/templates/edit_spec.rb +9 -13
  38. data/lib/generators/rspec/scaffold/templates/index_spec.rb +3 -10
  39. data/lib/generators/rspec/scaffold/templates/new_spec.rb +10 -14
  40. data/lib/generators/rspec/scaffold/templates/routing_spec.rb +21 -12
  41. data/lib/generators/rspec/scaffold/templates/show_spec.rb +4 -11
  42. data/lib/generators/rspec/system/system_generator.rb +26 -0
  43. data/lib/generators/rspec/system/templates/system_spec.rb +9 -0
  44. data/lib/generators/rspec/view/templates/view_spec.rb +2 -2
  45. data/lib/generators/rspec/view/view_generator.rb +1 -0
  46. data/lib/generators/rspec.rb +20 -6
  47. data/lib/rspec/rails/active_record.rb +25 -0
  48. data/lib/rspec/rails/adapters.rb +104 -37
  49. data/lib/rspec/rails/configuration.rb +148 -0
  50. data/lib/rspec/rails/example/controller_example_group.rb +188 -138
  51. data/lib/rspec/rails/example/feature_example_group.rb +63 -20
  52. data/lib/rspec/rails/example/helper_example_group.rb +35 -26
  53. data/lib/rspec/rails/example/job_example_group.rb +23 -0
  54. data/lib/rspec/rails/example/mailer_example_group.rb +30 -14
  55. data/lib/rspec/rails/example/model_example_group.rb +8 -7
  56. data/lib/rspec/rails/example/rails_example_group.rb +3 -1
  57. data/lib/rspec/rails/example/request_example_group.rb +23 -16
  58. data/lib/rspec/rails/example/routing_example_group.rb +49 -40
  59. data/lib/rspec/rails/example/system_example_group.rb +108 -0
  60. data/lib/rspec/rails/example/view_example_group.rb +168 -135
  61. data/lib/rspec/rails/example.rb +2 -33
  62. data/lib/rspec/rails/extensions/active_record/proxy.rb +0 -1
  63. data/lib/rspec/rails/extensions.rb +0 -1
  64. data/lib/rspec/rails/feature_check.rb +64 -0
  65. data/lib/rspec/rails/file_fixture_support.rb +17 -0
  66. data/lib/rspec/rails/fixture_file_upload_support.rb +40 -0
  67. data/lib/rspec/rails/fixture_support.rb +32 -13
  68. data/lib/rspec/rails/matchers/active_job.rb +317 -0
  69. data/lib/rspec/rails/matchers/base_matcher.rb +184 -0
  70. data/lib/rspec/rails/matchers/be_a_new.rb +69 -62
  71. data/lib/rspec/rails/matchers/be_new_record.rb +24 -21
  72. data/lib/rspec/rails/matchers/be_valid.rb +42 -33
  73. data/lib/rspec/rails/matchers/have_enqueued_mail.rb +174 -0
  74. data/lib/rspec/rails/matchers/have_http_status.rb +381 -0
  75. data/lib/rspec/rails/matchers/have_rendered.rb +54 -31
  76. data/lib/rspec/rails/matchers/redirect_to.rb +30 -29
  77. data/lib/rspec/rails/matchers/relation_match_array.rb +1 -1
  78. data/lib/rspec/rails/matchers/routing_matchers.rb +107 -93
  79. data/lib/rspec/rails/matchers.rb +13 -14
  80. data/lib/rspec/rails/tasks/rspec.rake +1 -1
  81. data/lib/rspec/rails/vendor/capybara.rb +10 -4
  82. data/lib/rspec/rails/version.rb +3 -1
  83. data/lib/rspec/rails/view_assigns.rb +18 -18
  84. data/lib/rspec/rails/view_path_builder.rb +29 -0
  85. data/lib/rspec/rails/view_rendering.rb +89 -63
  86. data/lib/rspec/rails/view_spec_methods.rb +56 -0
  87. data/lib/rspec/rails.rb +10 -10
  88. data/lib/rspec-rails.rb +66 -1
  89. data.tar.gz.sig +0 -0
  90. metadata +92 -77
  91. metadata.gz.sig +0 -0
  92. data/lib/autotest/rails_rspec2.rb +0 -85
  93. data/lib/generators/rspec/install/templates/.rspec +0 -1
  94. data/lib/generators/rspec/install/templates/spec/spec_helper.rb.tt +0 -49
  95. data/lib/rspec/rails/extensions/active_record/base.rb +0 -58
  96. data/lib/rspec/rails/matchers/have_extension.rb +0 -36
  97. data/lib/rspec/rails/mocks.rb +0 -274
  98. data/lib/rspec/rails/module_inclusion.rb +0 -19
  99. data/lib/rspec/rails/vendor/webrat.rb +0 -33
@@ -2,6 +2,7 @@ require 'generators/rspec'
2
2
 
3
3
  module Rspec
4
4
  module Generators
5
+ # @private
5
6
  class ControllerGenerator < Base
6
7
  argument :actions, :type => :array, :default => [], :banner => "action action"
7
8
 
@@ -1,13 +1,13 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  <% module_namespacing do -%>
4
- describe <%= class_name %>Controller do
4
+ RSpec.describe <%= class_name %>Controller, <%= type_metatag(:controller) %> do
5
5
 
6
6
  <% for action in actions -%>
7
- describe "GET '<%= action %>'" do
7
+ describe "GET #<%= action %>" do
8
8
  it "returns http success" do
9
- get '<%= action %>'
10
- response.should be_success
9
+ get :<%= action %>
10
+ expect(response).to have_http_status(:success)
11
11
  end
12
12
  end
13
13
 
@@ -1,5 +1,5 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
- describe "<%= file_name %>/<%= @action %>.html.<%= options[:template_engine] %>" do
3
+ RSpec.describe "<%= file_name %>/<%= @action %>.html.<%= options[:template_engine] %>", <%= type_metatag(:view) %> do
4
4
  pending "add some examples to (or delete) #{__FILE__}"
5
5
  end
@@ -0,0 +1,29 @@
1
+ require 'generators/rspec'
2
+
3
+ module Rspec
4
+ module Generators
5
+ # @private
6
+ class FeatureGenerator < Base
7
+ class_option :feature_specs, :type => :boolean, :default => true, :desc => "Generate feature specs"
8
+ class_option :singularize, :type => :boolean, :default => false, :desc => "Singularize the generated feature"
9
+
10
+ def generate_feature_spec
11
+ return unless options[:feature_specs]
12
+
13
+ template template_name, File.join('spec/features', class_path, filename)
14
+ end
15
+
16
+ def template_name
17
+ options[:singularize] ? 'feature_singular_spec.rb' : 'feature_spec.rb'
18
+ end
19
+
20
+ def filename
21
+ if options[:singularize]
22
+ "#{file_name.singularize}_spec.rb"
23
+ else
24
+ "#{file_name}_spec.rb"
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.feature "<%= class_name.singularize %>", <%= type_metatag(:feature) %> do
4
+ pending "add some scenarios (or delete) #{__FILE__}"
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.feature "<%= class_name.pluralize %>", <%= type_metatag(:feature) %> do
4
+ pending "add some scenarios (or delete) #{__FILE__}"
5
+ end
@@ -0,0 +1,24 @@
1
+ require 'generators/rspec'
2
+
3
+ module Rspec
4
+ module Generators
5
+ # @private
6
+ class GeneratorsGenerator < Base
7
+ class_option :generator_specs, :type => :boolean, :default => false, :desc => "Generate generator specs"
8
+
9
+ def generate_generator_spec
10
+ return unless options[:generator_specs]
11
+
12
+ template template_name, File.join('spec/generator', class_path, filename)
13
+ end
14
+
15
+ def template_name
16
+ 'generator_spec.rb'
17
+ end
18
+
19
+ def filename
20
+ "#{table_name}_generator_spec.rb"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,6 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe "<%= class_name.pluralize %>", <%= type_metatag(:generator) %> do
4
+
5
+ pending "add some scenarios (or delete) #{__FILE__}"
6
+ end
@@ -2,6 +2,7 @@ require 'generators/rspec'
2
2
 
3
3
  module Rspec
4
4
  module Generators
5
+ # @private
5
6
  class HelperGenerator < Base
6
7
  class_option :helper_specs, :type => :boolean, :default => true
7
8
 
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  # Specs in this file have access to a helper object that includes
4
4
  # the <%= class_name %>Helper. For example:
@@ -11,7 +11,7 @@ require 'spec_helper'
11
11
  # end
12
12
  # end
13
13
  <% module_namespacing do -%>
14
- describe <%= class_name %>Helper do
14
+ RSpec.describe <%= class_name %>Helper, <%= type_metatag(:helper) %> do
15
15
  pending "add some examples to (or delete) #{__FILE__}"
16
16
  end
17
17
  <% end -%>
@@ -1,7 +1,12 @@
1
+ require "rspec/support"
2
+ require "rspec/core"
3
+ RSpec::Support.require_rspec_core "project_initializer"
4
+ require "rspec/rails/feature_check"
5
+
1
6
  module Rspec
2
7
  module Generators
8
+ # @private
3
9
  class InstallGenerator < ::Rails::Generators::Base
4
-
5
10
  desc <<DESC
6
11
  Description:
7
12
  Copy rspec files to your application.
@@ -11,14 +16,48 @@ DESC
11
16
  @source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
12
17
  end
13
18
 
14
- def copy_dot_rspec
15
- template '.rspec'
19
+ def copy_spec_files
20
+ Dir.mktmpdir do |dir|
21
+ generate_rspec_init dir
22
+ template File.join(dir, '.rspec'), '.rspec'
23
+ directory File.join(dir, 'spec'), 'spec'
24
+ end
25
+ end
26
+
27
+ def copy_rails_files
28
+ template 'spec/rails_helper.rb'
16
29
  end
17
30
 
18
- def copy_spec_files
19
- directory 'spec'
31
+ private
32
+
33
+ def generate_rspec_init(tmpdir)
34
+ initializer = ::RSpec::Core::ProjectInitializer.new(
35
+ :destination => tmpdir,
36
+ :report_stream => StringIO.new
37
+ )
38
+ initializer.run
39
+
40
+ spec_helper_path = File.join(tmpdir, 'spec', 'spec_helper.rb')
41
+
42
+ replace_generator_command(spec_helper_path)
43
+ remove_warnings_configuration(spec_helper_path)
20
44
  end
21
45
 
46
+ def replace_generator_command(spec_helper_path)
47
+ gsub_file spec_helper_path,
48
+ 'rspec --init',
49
+ 'rails generate rspec:install',
50
+ :verbose => false
51
+ end
52
+
53
+ def remove_warnings_configuration(spec_helper_path)
54
+ empty_line = '^\n'
55
+ comment_line = '^\s*#.+\n'
56
+ gsub_file spec_helper_path,
57
+ /#{empty_line}(#{comment_line})+\s+config\.warnings = true\n/,
58
+ '',
59
+ :verbose => false
60
+ end
22
61
  end
23
62
  end
24
63
  end
@@ -0,0 +1,78 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ require 'spec_helper'
3
+ ENV['RAILS_ENV'] ||= 'test'
4
+ <% if RUBY_VERSION >= '2.0.0' %>
5
+ require File.expand_path('../config/environment', __dir__)
6
+ <% else %>
7
+ require File.expand_path('../../config/environment', __FILE__)
8
+ <% end %>
9
+ # Prevent database truncation if the environment is production
10
+ abort("The Rails environment is running in production mode!") if Rails.env.production?
11
+ require 'rspec/rails'
12
+ # Add additional requires below this line. Rails is not loaded until this point!
13
+
14
+ # Requires supporting ruby files with custom matchers and macros, etc, in
15
+ # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
16
+ # run as spec files by default. This means that files in spec/support that end
17
+ # in _spec.rb will both be required and run as specs, causing the specs to be
18
+ # run twice. It is recommended that you do not name files matching this glob to
19
+ # end with _spec.rb. You can configure this pattern with the --pattern
20
+ # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
21
+ #
22
+ # The following line is provided for convenience purposes. It has the downside
23
+ # of increasing the boot-up time by auto-requiring all files in the support
24
+ # directory. Alternatively, in the individual `*_spec.rb` files, manually
25
+ # require only the support files necessary.
26
+ #
27
+ # Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
28
+
29
+ <% if RSpec::Rails::FeatureCheck.can_maintain_test_schema? -%>
30
+ # Checks for pending migrations and applies them before tests are run.
31
+ # If you are not using ActiveRecord, you can remove these lines.
32
+ begin
33
+ ActiveRecord::Migration.maintain_test_schema!
34
+ rescue ActiveRecord::PendingMigrationError => e
35
+ puts e.to_s.strip
36
+ exit 1
37
+ end
38
+ <% elsif RSpec::Rails::FeatureCheck.can_check_pending_migrations? -%>
39
+ # Checks for pending migrations before tests are run.
40
+ # If you are not using ActiveRecord, you can remove these lines.
41
+ begin
42
+ ActiveRecord::Migration.check_pending!
43
+ rescue ActiveRecord::PendingMigrationError => e
44
+ puts e.to_s.strip
45
+ exit 1
46
+ end
47
+ <% end -%>
48
+ RSpec.configure do |config|
49
+ <% if RSpec::Rails::FeatureCheck.has_active_record? -%>
50
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
51
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
52
+
53
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
54
+ # examples within a transaction, remove the following line or assign false
55
+ # instead of true.
56
+ config.use_transactional_fixtures = true
57
+
58
+ <% end -%>
59
+ # RSpec Rails can automatically mix in different behaviours to your tests
60
+ # based on their file location, for example enabling you to call `get` and
61
+ # `post` in specs under `spec/controllers`.
62
+ #
63
+ # You can disable this behaviour by removing the line below, and instead
64
+ # explicitly tag your specs with their type, e.g.:
65
+ #
66
+ # RSpec.describe UsersController, :type => :controller do
67
+ # # ...
68
+ # end
69
+ #
70
+ # The different available types are documented in the features, such as in
71
+ # https://relishapp.com/rspec/rspec-rails/docs
72
+ config.infer_spec_type_from_file_location!
73
+
74
+ # Filter lines from Rails gems in backtraces.
75
+ config.filter_rails_from_backtrace!
76
+ # arbitrary gems may also be filtered via:
77
+ # config.filter_gems_from_backtrace("gem name")
78
+ end
@@ -2,26 +2,21 @@ require 'generators/rspec'
2
2
 
3
3
  module Rspec
4
4
  module Generators
5
+ # @private
5
6
  class IntegrationGenerator < Base
6
- class_option :request_specs, :type => :boolean, :default => true, :desc => "Generate request specs"
7
- class_option :webrat, :type => :boolean, :default => false, :desc => "Use webrat methods/matchers"
8
- class_option :webrat_matchers, :type => :boolean, :default => false, :desc => "Use webrat methods/matchers (deprecated - use --webrat)"
7
+ # Add a deprecation for this class, before rspec-rails 4, to use the
8
+ # `RequestGenerator` instead
9
+ class_option :request_specs,
10
+ :type => :boolean,
11
+ :default => true,
12
+ :desc => "Generate request specs"
9
13
 
10
14
  def generate_request_spec
11
15
  return unless options[:request_specs]
12
16
 
13
17
  template 'request_spec.rb',
14
- File.join('spec/requests', class_path, "#{table_name}_spec.rb")
18
+ File.join('spec/requests', "#{name.underscore.pluralize}_spec.rb")
15
19
  end
16
-
17
- protected
18
-
19
- # @deprecated Use `--webrat` instead.
20
- def webrat?
21
- RSpec.deprecate("the --webrat-matchers option", :replacement => "--webrat") if options[:webrat_matchers]
22
- options[:webrat] || options[:webrat_matchers]
23
- end
24
-
25
20
  end
26
21
  end
27
22
  end
@@ -1,15 +1,10 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
- describe "<%= class_name.pluralize %>" do
4
- describe "GET /<%= table_name %>" do
3
+ RSpec.describe "<%= class_name.pluralize %>", <%= type_metatag(:request) %> do
4
+ describe "GET /<%= name.underscore.pluralize %>" do
5
5
  it "works! (now write some real specs)" do
6
- <% if webrat? -%>
7
- visit <%= index_helper %>_path
8
- <% else -%>
9
- # Run the generator again with the --webrat flag if you want to use webrat methods/matchers
10
6
  get <%= index_helper %>_path
11
- <% end -%>
12
- response.status.should be(200)
7
+ expect(response).to have_http_status(200)
13
8
  end
14
9
  end
15
10
  end
@@ -0,0 +1,12 @@
1
+ require 'generators/rspec'
2
+
3
+ module Rspec
4
+ module Generators
5
+ # @private
6
+ class JobGenerator < Base
7
+ def create_job_spec
8
+ template 'job_spec.rb.erb', File.join('spec/jobs', class_path, "#{file_name}_job_spec.rb")
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ require 'rails_helper'
2
+
3
+ <% module_namespacing do -%>
4
+ RSpec.describe <%= class_name %>Job, <%= type_metatag(:job) %> do
5
+ pending "add some examples to (or delete) #{__FILE__}"
6
+ end
7
+ <% end -%>
@@ -1,7 +1,9 @@
1
1
  require 'generators/rspec'
2
+ require "rspec/rails/feature_check"
2
3
 
3
4
  module Rspec
4
5
  module Generators
6
+ # @private
5
7
  class MailerGenerator < Base
6
8
  argument :actions, :type => :array, :default => [], :banner => "method method"
7
9
 
@@ -15,6 +17,11 @@ module Rspec
15
17
  template "fixture", File.join("spec/fixtures", @path)
16
18
  end
17
19
  end
20
+
21
+ def generate_preview_files
22
+ return unless RSpec::Rails::FeatureCheck.has_action_mailer_preview?
23
+ template "preview.rb", File.join("spec/mailers/previews", class_path, "#{file_name}_preview.rb")
24
+ end
18
25
  end
19
26
  end
20
27
  end
@@ -1,19 +1,19 @@
1
- require "spec_helper"
1
+ require "rails_helper"
2
2
 
3
3
  <% module_namespacing do -%>
4
- describe <%= class_name %> do
4
+ RSpec.describe <%= Rails.version.to_f >= 5.0 ? class_name.sub(/(Mailer)?$/, 'Mailer') : class_name %>, <%= type_metatag(:mailer) %> do
5
5
  <% for action in actions -%>
6
6
  describe "<%= action %>" do
7
- let(:mail) { <%= class_name %>.<%= action %> }
7
+ let(:mail) { <%= Rails.version.to_f >= 5.0 ? class_name.sub(/(Mailer)?$/, 'Mailer') : class_name %>.<%= action %> }
8
8
 
9
9
  it "renders the headers" do
10
- mail.subject.should eq(<%= action.to_s.humanize.inspect %>)
11
- mail.to.should eq(["to@example.org"])
12
- mail.from.should eq(["from@example.com"])
10
+ expect(mail.subject).to eq(<%= action.to_s.humanize.inspect %>)
11
+ expect(mail.to).to eq(["to@example.org"])
12
+ expect(mail.from).to eq(["from@example.com"])
13
13
  end
14
14
 
15
15
  it "renders the body" do
16
- mail.body.encoded.should match("Hi")
16
+ expect(mail.body.encoded).to match("Hi")
17
17
  end
18
18
  end
19
19
 
@@ -0,0 +1,13 @@
1
+ <% module_namespacing do -%>
2
+ # Preview all emails at http://localhost:3000/rails/mailers/<%= file_path %>
3
+ class <%= class_name %>Preview < ActionMailer::Preview
4
+ <% actions.each do |action| -%>
5
+
6
+ # Preview this email at http://localhost:3000/rails/mailers/<%= file_path %>/<%= action %>
7
+ def <%= action %>
8
+ <%= Rails.version.to_f >= 5.0 ? class_name.sub(/(Mailer)?$/, 'Mailer') : class_name %>.<%= action %>
9
+ end
10
+ <% end -%>
11
+
12
+ end
13
+ <% end -%>
@@ -2,20 +2,34 @@ require 'generators/rspec'
2
2
 
3
3
  module Rspec
4
4
  module Generators
5
+ # @private
5
6
  class ModelGenerator < Base
6
- argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
7
+ argument :attributes,
8
+ :type => :array,
9
+ :default => [],
10
+ :banner => "field:type field:type"
7
11
  class_option :fixture, :type => :boolean
8
12
 
9
13
  def create_model_spec
10
- template 'model_spec.rb', File.join('spec/models', class_path, "#{file_name}_spec.rb")
14
+ template_file = File.join(
15
+ 'spec/models',
16
+ class_path,
17
+ "#{file_name}_spec.rb"
18
+ )
19
+ template 'model_spec.rb', template_file
11
20
  end
12
21
 
13
22
  hook_for :fixture_replacement
14
23
 
15
24
  def create_fixture_file
16
- if options[:fixture] && options[:fixture_replacement].nil?
17
- template 'fixtures.yml', File.join('spec/fixtures', "#{table_name}.yml")
18
- end
25
+ return unless missing_fixture_replacement?
26
+ template 'fixtures.yml', File.join('spec/fixtures', class_path, "#{(pluralize_table_names? ? plural_file_name : file_name)}.yml")
27
+ end
28
+
29
+ private
30
+
31
+ def missing_fixture_replacement?
32
+ options[:fixture] && options[:fixture_replacement].nil?
19
33
  end
20
34
  end
21
35
  end
@@ -1,4 +1,4 @@
1
- # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
2
 
3
3
  <% unless attributes.empty? -%>
4
4
  one:
@@ -1,7 +1,7 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  <% module_namespacing do -%>
4
- describe <%= class_name %> do
4
+ RSpec.describe <%= class_name %>, <%= type_metatag(:model) %> do
5
5
  pending "add some examples to (or delete) #{__FILE__}"
6
6
  end
7
7
  <% end -%>
@@ -2,6 +2,7 @@ require 'generators/rspec'
2
2
 
3
3
  module Rspec
4
4
  module Generators
5
+ # @private
5
6
  class ObserverGenerator < Base
6
7
  def generate_observer_spec
7
8
  template 'observer_spec.rb',
@@ -1,7 +1,7 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  <% module_namespacing do -%>
4
- describe <%= class_name %>Observer do
4
+ RSpec.describe <%= class_name %>Observer, <%= type_metatag(:observer) %> do
5
5
  pending "add some examples to (or delete) #{__FILE__}"
6
6
  end
7
7
  <% end -%>
@@ -0,0 +1,10 @@
1
+ require 'generators/rspec/integration/integration_generator'
2
+
3
+ module Rspec
4
+ module Generators
5
+ # @private
6
+ class RequestGenerator < IntegrationGenerator
7
+ source_paths << File.expand_path("../../integration/templates", __FILE__)
8
+ end
9
+ end
10
+ end