rspec-rails 3.0.0.beta2 → 3.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +2 -1
  4. data/Capybara.md +1 -3
  5. data/Changelog.md +126 -58
  6. data/README.md +31 -4
  7. data/lib/generators/rspec/controller/templates/controller_spec.rb +1 -1
  8. data/lib/generators/rspec/controller/templates/view_spec.rb +1 -1
  9. data/lib/generators/rspec/feature/templates/feature_spec.rb +1 -1
  10. data/lib/generators/rspec/helper/templates/helper_spec.rb +1 -1
  11. data/lib/generators/rspec/install/templates/spec/spec_helper.rb.tt +21 -1
  12. data/lib/generators/rspec/integration/templates/request_spec.rb +1 -1
  13. data/lib/generators/rspec/mailer/templates/mailer_spec.rb +1 -1
  14. data/lib/generators/rspec/model/templates/model_spec.rb +1 -1
  15. data/lib/generators/rspec/observer/templates/observer_spec.rb +1 -1
  16. data/lib/generators/rspec/scaffold/templates/controller_spec.rb +11 -3
  17. data/lib/generators/rspec/scaffold/templates/edit_spec.rb +4 -3
  18. data/lib/generators/rspec/scaffold/templates/index_spec.rb +2 -2
  19. data/lib/generators/rspec/scaffold/templates/new_spec.rb +5 -4
  20. data/lib/generators/rspec/scaffold/templates/routing_spec.rb +1 -1
  21. data/lib/generators/rspec/scaffold/templates/show_spec.rb +2 -2
  22. data/lib/generators/rspec/view/templates/view_spec.rb +1 -1
  23. data/lib/rspec/rails.rb +1 -8
  24. data/lib/rspec/rails/configuration.rb +72 -0
  25. data/lib/rspec/rails/example.rb +0 -64
  26. data/lib/rspec/rails/example/controller_example_group.rb +16 -12
  27. data/lib/rspec/rails/example/feature_example_group.rb +0 -2
  28. data/lib/rspec/rails/example/helper_example_group.rb +0 -2
  29. data/lib/rspec/rails/example/mailer_example_group.rb +0 -1
  30. data/lib/rspec/rails/example/model_example_group.rb +0 -4
  31. data/lib/rspec/rails/example/request_example_group.rb +0 -2
  32. data/lib/rspec/rails/example/routing_example_group.rb +0 -2
  33. data/lib/rspec/rails/example/view_example_group.rb +1 -2
  34. data/lib/rspec/rails/extensions.rb +0 -1
  35. data/lib/rspec/rails/fixture_support.rb +0 -8
  36. data/lib/rspec/rails/matchers.rb +1 -0
  37. data/lib/rspec/rails/matchers/have_http_status.rb +355 -0
  38. data/lib/rspec/rails/matchers/routing_matchers.rb +1 -1
  39. data/lib/rspec/rails/tasks/rspec.rake +12 -5
  40. data/lib/rspec/rails/version.rb +1 -1
  41. data/lib/rspec/rails/view_rendering.rb +6 -34
  42. metadata +42 -316
  43. metadata.gz.sig +0 -0
  44. data/features/Generators.md +0 -25
  45. data/features/GettingStarted.md +0 -84
  46. data/features/README.md +0 -48
  47. data/features/RailsVersions.md +0 -4
  48. data/features/Transactions.md +0 -84
  49. data/features/Upgrade.md +0 -121
  50. data/features/controller_specs/Cookies.md +0 -57
  51. data/features/controller_specs/README.md +0 -45
  52. data/features/controller_specs/anonymous_controller.feature +0 -436
  53. data/features/controller_specs/bypass_rescue.feature +0 -75
  54. data/features/controller_specs/controller_spec.feature +0 -58
  55. data/features/controller_specs/engine_routes.feature +0 -51
  56. data/features/controller_specs/isolation_from_views.feature +0 -87
  57. data/features/controller_specs/render_views.feature +0 -114
  58. data/features/directory_structure.feature +0 -71
  59. data/features/feature_specs/feature_spec.feature +0 -35
  60. data/features/helper_specs/helper_spec.feature +0 -122
  61. data/features/mailer_specs/url_helpers.feature +0 -38
  62. data/features/matchers/README.md +0 -18
  63. data/features/matchers/new_record_matcher.feature +0 -41
  64. data/features/matchers/redirect_to_matcher.feature +0 -40
  65. data/features/matchers/relation_match_array.feature +0 -27
  66. data/features/matchers/render_template_matcher.feature +0 -49
  67. data/features/mocks/mock_model.feature +0 -147
  68. data/features/mocks/stub_model.feature +0 -58
  69. data/features/model_specs/README.md +0 -21
  70. data/features/model_specs/errors_on.feature +0 -51
  71. data/features/model_specs/records.feature +0 -27
  72. data/features/model_specs/transactional_examples.feature +0 -109
  73. data/features/request_specs/request_spec.feature +0 -49
  74. data/features/routing_specs/README.md +0 -16
  75. data/features/routing_specs/be_routable_matcher.feature +0 -80
  76. data/features/routing_specs/engine_routes.feature +0 -38
  77. data/features/routing_specs/named_routes.feature +0 -18
  78. data/features/routing_specs/route_to_matcher.feature +0 -90
  79. data/features/step_definitions/additional_cli_steps.rb +0 -4
  80. data/features/step_definitions/model_steps.rb +0 -3
  81. data/features/support/capybara.rb +0 -7
  82. data/features/support/env.rb +0 -53
  83. data/features/support/rails_versions.rb +0 -4
  84. data/features/support/rubinius.rb +0 -6
  85. data/features/view_specs/inferred_controller_path.feature +0 -45
  86. data/features/view_specs/stub_template.feature +0 -51
  87. data/features/view_specs/view_spec.feature +0 -206
  88. data/lib/rspec/rails/extensions/active_record/base.rb +0 -58
  89. data/lib/rspec/rails/mocks.rb +0 -272
  90. data/lib/rspec/rails/vendor/webrat.rb +0 -33
  91. data/spec/generators/rspec/controller/controller_generator_spec.rb +0 -97
  92. data/spec/generators/rspec/feature/feature_generator_spec.rb +0 -43
  93. data/spec/generators/rspec/helper/helper_generator_spec.rb +0 -30
  94. data/spec/generators/rspec/install/install_generator_spec.rb +0 -30
  95. data/spec/generators/rspec/integration/integration_generator_spec.rb +0 -32
  96. data/spec/generators/rspec/mailer/mailer_generator_spec.rb +0 -48
  97. data/spec/generators/rspec/model/model_generator_spec.rb +0 -52
  98. data/spec/generators/rspec/observer/observer_generator_spec.rb +0 -21
  99. data/spec/generators/rspec/scaffold/scaffold_generator_spec.rb +0 -138
  100. data/spec/generators/rspec/view/view_generator_spec.rb +0 -41
  101. data/spec/rspec/rails/assertion_adapter_spec.rb +0 -28
  102. data/spec/rspec/rails/assertion_delegator_spec.rb +0 -43
  103. data/spec/rspec/rails/configuration_spec.rb +0 -26
  104. data/spec/rspec/rails/deprecations_spec.rb +0 -18
  105. data/spec/rspec/rails/example/controller_example_group_spec.rb +0 -159
  106. data/spec/rspec/rails/example/feature_example_group_spec.rb +0 -56
  107. data/spec/rspec/rails/example/helper_example_group_spec.rb +0 -66
  108. data/spec/rspec/rails/example/mailer_example_group_spec.rb +0 -21
  109. data/spec/rspec/rails/example/model_example_group_spec.rb +0 -15
  110. data/spec/rspec/rails/example/request_example_group_spec.rb +0 -17
  111. data/spec/rspec/rails/example/routing_example_group_spec.rb +0 -32
  112. data/spec/rspec/rails/example/view_example_group_spec.rb +0 -235
  113. data/spec/rspec/rails/extensions/active_model/errors_on_spec.rb +0 -23
  114. data/spec/rspec/rails/extensions/active_record/base_spec.rb +0 -42
  115. data/spec/rspec/rails/fixture_support_spec.rb +0 -17
  116. data/spec/rspec/rails/matchers/be_a_new_spec.rb +0 -142
  117. data/spec/rspec/rails/matchers/be_new_record_spec.rb +0 -33
  118. data/spec/rspec/rails/matchers/be_routable_spec.rb +0 -41
  119. data/spec/rspec/rails/matchers/be_valid_spec.rb +0 -73
  120. data/spec/rspec/rails/matchers/has_spec.rb +0 -29
  121. data/spec/rspec/rails/matchers/have_rendered_spec.rb +0 -93
  122. data/spec/rspec/rails/matchers/redirect_to_spec.rb +0 -81
  123. data/spec/rspec/rails/matchers/relation_match_array_spec.rb +0 -31
  124. data/spec/rspec/rails/matchers/route_to_spec.rb +0 -151
  125. data/spec/rspec/rails/minitest_lifecycle_adapter_spec.rb +0 -31
  126. data/spec/rspec/rails/mocks/mock_model_spec.rb +0 -400
  127. data/spec/rspec/rails/mocks/stub_model_spec.rb +0 -154
  128. data/spec/rspec/rails/setup_and_teardown_adapter_spec.rb +0 -32
  129. data/spec/rspec/rails/view_rendering_spec.rb +0 -111
  130. data/spec/spec_helper.rb +0 -33
  131. data/spec/support/ar_classes.rb +0 -42
  132. data/spec/support/helpers.rb +0 -34
  133. data/spec/support/matchers.rb +0 -9
  134. data/spec/support/null_object.rb +0 -6
@@ -1,4 +0,0 @@
1
- Then /^the example(s)? should( all)? pass$/ do |_, _|
2
- step %q{the output should contain "0 failures"}
3
- step %q{the exit status should be 0}
4
- end
@@ -1,3 +0,0 @@
1
- Given /a (\w+) model/ do |model_class_name|
2
- puts eval(model_class_name)
3
- end
@@ -1,7 +0,0 @@
1
- Around "@capybara" do |scenario, block|
2
- # We are caught in a weird situation here. rspec-rails supports 1.8.7 and
3
- # above, but capybara beyond a certain version only supports 1.9.3 and above.
4
- # On 1.8.7 and 1.9.2, we run most of the rspec-rails test suite but leave out
5
- # parts that require capybara.
6
- block.call if defined?(::Capybara)
7
- end
@@ -1,53 +0,0 @@
1
- require 'aruba/cucumber'
2
-
3
- module ArubaExt
4
- def run(cmd)
5
- super(cmd =~ /^rspec/ ? "bin/#{cmd}" : cmd)
6
- end
7
- end
8
-
9
- World(ArubaExt)
10
-
11
- Before do
12
- @aruba_timeout_seconds = 30
13
- end
14
-
15
- unless File.directory?('./tmp/example_app')
16
- system "rake generate:app generate:stuff"
17
- end
18
-
19
- def aruba_path(file_or_dir)
20
- File.expand_path("../../../#{file_or_dir.sub('example_app','aruba')}", __FILE__)
21
- end
22
-
23
- def example_app_path(file_or_dir)
24
- File.expand_path("../../../#{file_or_dir}", __FILE__)
25
- end
26
-
27
- def write_symlink(file_or_dir)
28
- source = example_app_path(file_or_dir)
29
- target = aruba_path(file_or_dir)
30
- system "ln -s #{source} #{target}"
31
- end
32
-
33
- def copy(file_or_dir)
34
- source = example_app_path(file_or_dir)
35
- target = aruba_path(file_or_dir)
36
- system "cp -r #{source} #{target}"
37
- end
38
-
39
- Before do
40
- steps %Q{
41
- Given a directory named "spec"
42
- }
43
-
44
- Dir['tmp/example_app/*'].each do |file_or_dir|
45
- if !(file_or_dir =~ /spec$/)
46
- write_symlink(file_or_dir)
47
- end
48
- end
49
-
50
- ["spec/spec_helper.rb"].each do |file_or_dir|
51
- write_symlink("tmp/example_app/#{file_or_dir}")
52
- end
53
- end
@@ -1,4 +0,0 @@
1
- Around "@unsupported-on-rails-3-0" do |scenario, block|
2
- require 'rails'
3
- block.call unless ::Rails.version.to_s.start_with?("3.0")
4
- end
@@ -1,6 +0,0 @@
1
- # Required until https://github.com/rubinius/rubinius/issues/2430 is resolved
2
- ENV['RBXOPT'] = "#{ENV["RBXOPT"]} -Xcompiler.no_rbc"
3
-
4
- Around "@unsupported-on-rbx" do |scenario, block|
5
- block.call unless defined?(Rubinius)
6
- end
@@ -1,45 +0,0 @@
1
- Feature: view spec infers controller path and action
2
-
3
- Scenario: infer controller path
4
- Given a file named "spec/views/widgets/new.html.erb_spec.rb" with:
5
- """ruby
6
- require "spec_helper"
7
-
8
- describe "widgets/new" do
9
- it "infers the controller path" do
10
- expect(controller.request.path_parameters[:controller]).to eq("widgets")
11
- expect(controller.controller_path).to eq("widgets")
12
- end
13
- end
14
- """
15
- When I run `rspec spec/views`
16
- Then the examples should all pass
17
-
18
- Scenario: infer action
19
- Given a file named "spec/views/widgets/new.html.erb_spec.rb" with:
20
- """ruby
21
- require "spec_helper"
22
-
23
- describe "widgets/new" do
24
- it "infers the controller path" do
25
- expect(controller.request.path_parameters[:action]).to eq("new")
26
- end
27
- end
28
- """
29
- When I run `rspec spec/views`
30
- Then the examples should all pass
31
-
32
- Scenario: do not infer action in a partial
33
- Given a file named "spec/views/widgets/_form.html.erb_spec.rb" with:
34
- """ruby
35
- require "spec_helper"
36
-
37
- describe "widgets/_form" do
38
- it "includes a link to new" do
39
- expect(controller.request.path_parameters[:action]).to be_nil
40
- end
41
- end
42
- """
43
- When I run `rspec spec/views`
44
- Then the examples should all pass
45
-
@@ -1,51 +0,0 @@
1
- Feature: stub template
2
-
3
- In order to isolate view specs from the partials rendered by the primary
4
- view, rspec-rails (since 2.2) provides the stub_template method.
5
-
6
- Scenario: stub template that does not exist
7
- Given a file named "spec/views/gadgets/list.html.erb_spec.rb" with:
8
- """ruby
9
- require "spec_helper"
10
-
11
- describe "gadgets/list" do
12
- it "renders the gadget partial for each gadget" do
13
- assign(:gadgets, [
14
- mock_model(Gadget, :id => 1, :name => "First"),
15
- mock_model(Gadget, :id => 2, :name => "Second")
16
- ])
17
- stub_template "gadgets/_gadget.html.erb" => "<%= gadget.name %><br/>"
18
- render
19
- expect(rendered).to match /First/
20
- expect(rendered).to match /Second/
21
- end
22
- end
23
- """
24
-
25
- And a file named "app/views/gadgets/list.html.erb" with:
26
- """
27
- <%= render :partial => "gadget", :collection => @gadgets %>
28
- """
29
- When I run `rspec spec/views/gadgets/list.html.erb_spec.rb`
30
- Then the examples should all pass
31
-
32
- Scenario: stub template that exists
33
- Given a file named "spec/views/gadgets/edit.html.erb_spec.rb" with:
34
- """ruby
35
- require "spec_helper"
36
-
37
- describe "gadgets/edit" do
38
- before(:each) do
39
- @gadget = assign(:gadget, stub_model(Gadget))
40
- end
41
-
42
- it "renders the form partial" do
43
- stub_template "gadgets/_form.html.erb" => "This content"
44
- render
45
- expect(rendered).to match /This content/
46
- end
47
- end
48
- """
49
- When I run `rspec spec/views/gadgets/edit.html.erb_spec.rb`
50
- Then the examples should all pass
51
-
@@ -1,206 +0,0 @@
1
- Feature: view spec
2
-
3
- View specs live in spec/views and render view templates in isolation.
4
-
5
- Scenario: passing spec that renders the described view file
6
- Given a file named "spec/views/widgets/index.html.erb_spec.rb" with:
7
- """ruby
8
- require "spec_helper"
9
-
10
- describe "widgets/index" do
11
- it "displays all the widgets" do
12
- assign(:widgets, [
13
- stub_model(Widget, :name => "slicer"),
14
- stub_model(Widget, :name => "dicer")
15
- ])
16
-
17
- render
18
-
19
- expect(rendered).to match /slicer/
20
- expect(rendered).to match /dicer/
21
- end
22
- end
23
- """
24
- When I run `rspec spec/views`
25
- Then the examples should all pass
26
-
27
- Scenario: passing spec with before and nesting
28
- Given a file named "spec/views/widgets/index.html.erb_spec.rb" with:
29
- """ruby
30
- require "spec_helper"
31
-
32
- describe "widgets/index" do
33
-
34
- context "with 2 widgets" do
35
- before(:each) do
36
- assign(:widgets, [
37
- stub_model(Widget, :name => "slicer"),
38
- stub_model(Widget, :name => "dicer")
39
- ])
40
- end
41
-
42
- it "displays both widgets" do
43
- render
44
-
45
- expect(rendered).to match /slicer/
46
- expect(rendered).to match /dicer/
47
- end
48
- end
49
- end
50
- """
51
- When I run `rspec spec/views`
52
- Then the examples should all pass
53
-
54
- Scenario: passing spec with explicit template rendering
55
- Given a file named "spec/views/widgets/widget.html.erb_spec.rb" with:
56
- """ruby
57
- require "spec_helper"
58
-
59
- describe "rendering the widget template" do
60
- it "displays the widget" do
61
- assign(:widget, stub_model(Widget, :name => "slicer"))
62
-
63
- render :template => "widgets/widget.html.erb"
64
-
65
- expect(rendered).to match /slicer/
66
- end
67
- end
68
- """
69
- And a file named "app/views/widgets/widget.html.erb" with:
70
- """
71
- <h2><%= @widget.name %></h2>
72
- """
73
- When I run `rspec spec/views`
74
- Then the examples should all pass
75
-
76
- Scenario: passing spec with a description that includes the format and handler
77
- Given a file named "spec/views/widgets/widget.xml.erb_spec.rb" with:
78
- """ruby
79
- require "spec_helper"
80
-
81
- describe "widgets/widget.html.erb" do
82
- it "renders the HTML template" do
83
- render
84
-
85
- expect(rendered).to match /HTML/
86
- end
87
- end
88
-
89
- describe "widgets/widget.xml.erb" do
90
- it "renders the XML template" do
91
- render
92
-
93
- expect(rendered).to match /XML/
94
- end
95
- end
96
- """
97
- And a file named "app/views/widgets/widget.html.erb" with:
98
- """
99
- HTML
100
- """
101
- And a file named "app/views/widgets/widget.xml.erb" with:
102
- """
103
- XML
104
- """
105
- When I run `rspec spec/views`
106
- Then the examples should all pass
107
-
108
- Scenario: passing spec with rendering of locals in a partial
109
- Given a file named "spec/views/widgets/_widget.html.erb_spec.rb" with:
110
- """ruby
111
- require "spec_helper"
112
-
113
- describe "rendering locals in a partial" do
114
- it "displays the widget" do
115
- widget = stub_model(Widget, :name => "slicer")
116
-
117
- render :partial => "widgets/widget.html.erb", :locals => {:widget => widget}
118
-
119
- expect(rendered).to match /slicer/
120
- end
121
- end
122
- """
123
- And a file named "app/views/widgets/_widget.html.erb" with:
124
- """
125
- <h3><%= widget.name %></h3>
126
- """
127
- When I run `rspec spec/views`
128
- Then the examples should all pass
129
-
130
- Scenario: passing spec with rendering of locals in an implicit partial
131
- Given a file named "spec/views/widgets/_widget.html.erb_spec.rb" with:
132
- """ruby
133
- require "spec_helper"
134
-
135
- describe "rendering locals in a partial" do
136
- it "displays the widget" do
137
- widget = stub_model(Widget, :name => "slicer")
138
-
139
- render "widgets/widget", :widget => widget
140
-
141
- expect(rendered).to match /slicer/
142
- end
143
- end
144
- """
145
- And a file named "app/views/widgets/_widget.html.erb" with:
146
- """
147
- <h3><%= widget.name %></h3>
148
- """
149
- When I run `rspec spec/views`
150
- Then the examples should all pass
151
-
152
- Scenario: passing spec with rendering of text
153
- Given a file named "spec/views/widgets/direct.html.erb_spec.rb" with:
154
- """ruby
155
- require "spec_helper"
156
-
157
- describe "rendering text directly" do
158
- it "displays the given text" do
159
-
160
- render :text => "This is directly rendered"
161
-
162
- expect(rendered).to match /directly rendered/
163
- end
164
- end
165
- """
166
- When I run `rspec spec/views`
167
- Then the examples should all pass
168
-
169
- Scenario: passing view spec that stubs a helper method
170
- Given a file named "app/views/secrets/index.html.erb" with:
171
- """
172
- <%- if admin? %>
173
- <h1>Secret admin area</h1>
174
- <%- end %>
175
- """
176
- And a file named "spec/views/secrets/index.html.erb_spec.rb" with:
177
- """ruby
178
- require 'spec_helper'
179
-
180
- describe 'secrets/index' do
181
- before do
182
- view.stub(:admin?).and_return(true)
183
- end
184
-
185
- it 'checks for admin access' do
186
- render
187
- expect(rendered).to match /Secret admin area/
188
- end
189
- end
190
- """
191
- When I run `rspec spec/views/secrets`
192
- Then the examples should all pass
193
-
194
- Scenario: request.path_parameters should match Rails by using symbols for keys
195
- Given a file named "spec/views/widgets/index.html.erb_spec.rb" with:
196
- """ruby
197
- require "spec_helper"
198
-
199
- describe "controller.request.path_parameters" do
200
- it "matches the Rails environment by using symbols for keys" do
201
- [:controller, :action].each { |k| expect(controller.request.path_parameters.keys).to include(k) }
202
- end
203
- end
204
- """
205
- When I run `rspec spec/views`
206
- Then the examples should all pass
@@ -1,58 +0,0 @@
1
- module RSpec
2
- module Rails
3
- if defined?(ActiveRecord)
4
- module Extensions
5
- module ActiveRecord
6
- # Extension to enhance `to have` on AR Model classes
7
- #
8
- # @example
9
- #
10
- # ModelClass.should have(:no).records
11
- # ModelClass.should have(1).record
12
- # ModelClass.should have(n).records
13
- if ::ActiveRecord::VERSION::STRING >= '4'
14
- def records
15
- all.to_a
16
- end
17
- else
18
- def records
19
- find(:all)
20
- end
21
- end
22
- alias :record :records
23
- end
24
-
25
- class ::ActiveRecord::Base
26
- extend RSpec::Rails::Extensions::ActiveRecord
27
- end
28
- end
29
- end
30
- end
31
- end
32
-
33
- if defined?(::ActiveModel)
34
- module ::ActiveModel::Validations
35
- # Extension to enhance `to have` on AR Model instances. Calls
36
- # model.valid? in order to prepare the object's errors object. Accepts
37
- # a :context option to specify the validation context.
38
- #
39
- # You can also use this to specify the content of the error messages.
40
- #
41
- # @example
42
- #
43
- # expect(model).to have(:no).errors_on(:attribute)
44
- # expect(model).to have(1).error_on(:attribute)
45
- # expect(model).to have(n).errors_on(:attribute)
46
- # expect(model).to have(n).errors_on(:attribute, :context => :create)
47
- #
48
- # expect(model.errors_on(:attribute)).to include("can't be blank")
49
- def errors_on(attribute, options = {})
50
- valid_args = [options[:context]].compact
51
- self.valid?(*valid_args)
52
-
53
- [self.errors[attribute]].flatten.compact
54
- end
55
-
56
- alias :error_on :errors_on
57
- end
58
- end