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,23 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "errors_on" do
4
- let(:klass) do
5
- Class.new do
6
- include ActiveModel::Validations
7
- end
8
- end
9
-
10
- it "calls valid?" do
11
- model = klass.new
12
- expect(model).to receive(:valid?)
13
- model.errors_on(:foo)
14
- end
15
-
16
- it "returns the errors on that attribute" do
17
- model = klass.new
18
- allow(model).to receive(:errors) do
19
- { :foo => ['a', 'b'] }
20
- end
21
- expect(model.errors_on(:foo)).to eq(['a','b'])
22
- end
23
- end
@@ -1,42 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ::ActiveModel::Validations do
4
- describe "#errors_on" do
5
- context "ActiveModel class that takes no arguments to valid?" do
6
- let(:klass) {
7
- Class.new do
8
- include ActiveModel::Validations
9
-
10
- def self.name
11
- "ActiveModelValidationsFake"
12
- end
13
-
14
- def valid?
15
- super
16
- end
17
-
18
- attr_accessor :name
19
- validates_presence_of :name
20
- end
21
- }
22
-
23
- context "with nil name" do
24
- it "has one error" do
25
- object = klass.new
26
- object.name = ""
27
-
28
- expect(object).to have(1).error_on(:name)
29
- end
30
- end
31
-
32
- context "with non-blank name" do
33
- it "has no error" do
34
- object = klass.new
35
- object.name = "Ywen"
36
-
37
- expect(object).to have(:no).error_on(:name)
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,17 +0,0 @@
1
- require "spec_helper"
2
-
3
- module RSpec::Rails
4
- describe FixtureSupport do
5
- context "with use_transactional_fixtures set to false" do
6
- it "still supports fixture_path" do
7
- allow(RSpec.configuration).to receive(:use_transactional_fixtures) { false }
8
- group = RSpec::Core::ExampleGroup.describe do
9
- include FixtureSupport
10
- end
11
-
12
- expect(group).to respond_to(:fixture_path)
13
- expect(group).to respond_to(:fixture_path=)
14
- end
15
- end
16
- end
17
- end
@@ -1,142 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "be_a_new matcher" do
4
- include RSpec::Rails::Matchers
5
-
6
- context "new record" do
7
- let(:record) do
8
- Class.new do
9
- def new_record?; true; end
10
- end.new
11
- end
12
- context "right class" do
13
- it "passes" do
14
- expect(record).to be_a_new(record.class)
15
- end
16
- end
17
- context "wrong class" do
18
- it "fails" do
19
- expect(record).not_to be_a_new(String)
20
- end
21
- end
22
- end
23
-
24
- context "existing record" do
25
- let(:record) do
26
- Class.new do
27
- def new_record?; false; end
28
- end.new
29
- end
30
- context "right class" do
31
- it "fails" do
32
- expect(record).not_to be_a_new(record.class)
33
- end
34
- end
35
- context "wrong class" do
36
- it "fails" do
37
- expect(record).not_to be_a_new(String)
38
- end
39
- end
40
- end
41
-
42
- describe "#with" do
43
- context "right class and new record" do
44
- let(:record) do
45
- Class.new do
46
- def initialize(attributes)
47
- @attributes = attributes
48
- end
49
-
50
- def attributes
51
- @attributes.stringify_keys
52
- end
53
-
54
- def new_record?; true; end
55
- end.new(:foo => 'foo', :bar => 'bar')
56
- end
57
-
58
- context "all attributes same" do
59
- it "passes" do
60
- expect(record).to be_a_new(record.class).with(:foo => 'foo', :bar => 'bar')
61
- end
62
- end
63
-
64
- context "one attribute same" do
65
- it "passes" do
66
- expect(record).to be_a_new(record.class).with(:foo => 'foo')
67
- end
68
- end
69
-
70
- context "no attributes same" do
71
- it "fails" do
72
- expect {
73
- expect(record).to be_a_new(record.class).with(:zoo => 'zoo', :car => 'car')
74
- }.to raise_error {|e|
75
- expect(e.message).to match(/attributes {.*} were not set on #{record.inspect}/)
76
- expect(e.message).to match(/"zoo"=>"zoo"/)
77
- expect(e.message).to match(/"car"=>"car"/)
78
- }
79
- end
80
- end
81
-
82
- context "one attribute value not the same" do
83
- it "fails" do
84
- expect {
85
- expect(record).to be_a_new(record.class).with(:foo => 'bar')
86
- }.to raise_error(
87
- %Q(attribute {"foo"=>"bar"} was not set on #{record.inspect})
88
- )
89
- end
90
- end
91
- end
92
-
93
- context "wrong class and existing record" do
94
- let(:record) do
95
- Class.new do
96
- def initialize(attributes)
97
- @attributes = attributes
98
- end
99
-
100
- def attributes
101
- @attributes.stringify_keys
102
- end
103
-
104
- def new_record?; false; end
105
- end.new(:foo => 'foo', :bar => 'bar')
106
- end
107
-
108
- context "all attributes same" do
109
- it "fails" do
110
- expect {
111
- expect(record).to be_a_new(String).with(:foo => 'foo', :bar => 'bar')
112
- }.to raise_error(
113
- "expected #{record.inspect} to be a new String"
114
- )
115
- end
116
- end
117
-
118
- context "no attributes same" do
119
- it "fails" do
120
- expect {
121
- expect(record).to be_a_new(String).with(:zoo => 'zoo', :car => 'car')
122
- }.to raise_error {|e|
123
- expect(e.message).to match(/expected #{record.inspect} to be a new String and attributes {.*} were not set on #{record.inspect}/)
124
- expect(e.message).to match(/"zoo"=>"zoo"/)
125
- expect(e.message).to match(/"car"=>"car"/)
126
- }
127
- end
128
- end
129
-
130
- context "one attribute value not the same" do
131
- it "fails" do
132
- expect {
133
- expect(record).to be_a_new(String).with(:foo => 'bar')
134
- }.to raise_error(
135
- "expected #{record.inspect} to be a new String and " +
136
- %Q(attribute {"foo"=>"bar"} was not set on #{record.inspect})
137
- )
138
- end
139
- end
140
- end
141
- end
142
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "be_new_record" do
4
- include RSpec::Rails::Matchers
5
-
6
- context "un-persisted record" do
7
- let(:record) { double('record', :persisted? => false) }
8
-
9
- it "passes" do
10
- expect(record).to be_new_record
11
- end
12
-
13
- it "fails with custom failure message" do
14
- expect {
15
- expect(record).not_to be_new_record
16
- }.to raise_exception(/expected .* to be persisted, but was a new record/)
17
- end
18
- end
19
-
20
- context "persisted record" do
21
- let(:record) { double('record', :persisted? => true) }
22
-
23
- it "fails" do
24
- expect(record).not_to be_new_record
25
- end
26
-
27
- it "fails with custom failure message" do
28
- expect {
29
- expect(record).to be_new_record
30
- }.to raise_exception(/expected .* to be a new record, but was persisted/)
31
- end
32
- end
33
- end
@@ -1,41 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "be_routable" do
4
- include RSpec::Rails::Matchers::RoutingMatchers
5
- attr_reader :routes
6
-
7
- before { @routes = double("routes") }
8
-
9
- context "with should" do
10
- it "passes if routes recognize the path" do
11
- allow(routes).to receive(:recognize_path) { {} }
12
- expect do
13
- expect({:get => "/a/path"}).to be_routable
14
- end.to_not raise_error
15
- end
16
-
17
- it "fails if routes do not recognize the path" do
18
- allow(routes).to receive(:recognize_path) { raise ActionController::RoutingError.new('ignore') }
19
- expect do
20
- expect({:get => "/a/path"}).to be_routable
21
- end.to raise_error(/expected \{:get=>"\/a\/path"\} to be routable/)
22
- end
23
- end
24
-
25
- context "with should_not" do
26
-
27
- it "passes if routes do not recognize the path" do
28
- allow(routes).to receive(:recognize_path) { raise ActionController::RoutingError.new('ignore') }
29
- expect do
30
- expect({:get => "/a/path"}).not_to be_routable
31
- end.to_not raise_error
32
- end
33
-
34
- it "fails if routes recognize the path" do
35
- allow(routes).to receive(:recognize_path) { {:controller => "foo"} }
36
- expect do
37
- expect({:get => "/a/path"}).not_to be_routable
38
- end.to raise_error(/expected \{:get=>"\/a\/path"\} not to be routable, but it routes to \{:controller=>"foo"\}/)
39
- end
40
- end
41
- end
@@ -1,73 +0,0 @@
1
- require "spec_helper"
2
- require 'rspec/rails/matchers/be_valid'
3
-
4
- describe "be_valid matcher" do
5
- include RSpec::Rails::Matchers
6
-
7
- class Post
8
- include ActiveModel::Validations
9
- attr_accessor :title
10
- validates_presence_of :title
11
- end
12
-
13
- class Book
14
- def valid?
15
- false
16
- end
17
-
18
- def errors
19
- ['the spine is broken', 'the pages are dog-eared']
20
- end
21
- end
22
-
23
- class Boat
24
- def valid?
25
- false
26
- end
27
- end
28
-
29
- let(:post) { Post.new }
30
- let(:book) { Book.new }
31
- let(:boat) { Boat.new }
32
-
33
- it "includes the error messages in the failure message" do
34
- expect {
35
- expect(post).to be_valid
36
- }.to raise_exception(/Title can't be blank/)
37
- end
38
-
39
- it "includes the error messages for simple implementations of error messages" do
40
- expect {
41
- expect(book).to be_valid
42
- }.to raise_exception(/the spine is broken/)
43
- end
44
-
45
- it "includes a brief error message for the simplest implementation of validity" do
46
- expect {
47
- expect(boat).to be_valid
48
- }.to raise_exception(/expected .+ to be valid\z/)
49
- end
50
-
51
- it "includes a failure message for the negative case" do
52
- allow(post).to receive(:valid?) { true }
53
- expect {
54
- expect(post).not_to be_valid
55
- }.to raise_exception(/expected .* not to be valid/)
56
- end
57
-
58
- it "uses a custom failure message if provided" do
59
- expect {
60
- expect(post).to be_valid, "Post was not valid!"
61
- }.to raise_exception(/Post was not valid!/)
62
- end
63
-
64
- it "includes the validation context if provided" do
65
- expect(post).to receive(:valid?).with(:create) { true }
66
- expect(post).to be_valid(:create)
67
- end
68
-
69
- it "does not include the validation context if not provided" do
70
- expect(post).to receive(:valid?).with(no_args) { true }
71
- expect(post).to be_valid
72
- end
73
- end
@@ -1,29 +0,0 @@
1
- require 'spec_helper'
2
-
3
- class CollectionOwner < ActiveRecord::Base
4
- connection.execute <<-SQL
5
- CREATE TABLE collection_owners (
6
- id integer PRIMARY KEY AUTOINCREMENT
7
- )
8
- SQL
9
- has_many :associated_items do
10
- def has_some_quality?; true end
11
- end
12
- end
13
-
14
- class AssociatedItem < ActiveRecord::Base
15
- connection.execute <<-SQL
16
- CREATE TABLE associated_items (
17
- id integer PRIMARY KEY AUTOINCREMENT,
18
- collection_owner_id integer
19
- )
20
- SQL
21
- belongs_to :collection_owner
22
- end
23
-
24
- describe "should have_xxx" do
25
- it "works with ActiveRecord::Associations::CollectionProxy" do
26
- owner = CollectionOwner.new
27
- expect(owner.associated_items).to have_some_quality
28
- end
29
- end
@@ -1,93 +0,0 @@
1
- require "spec_helper"
2
-
3
- %w[have_rendered render_template].each do |template_expectation|
4
- describe template_expectation do
5
- include RSpec::Rails::Matchers::RenderTemplate
6
- let(:response) { ActionController::TestResponse.new }
7
-
8
- context "given a hash" do
9
- it "delegates to assert_template" do
10
- expect(self).to receive(:assert_template).with({:this => "hash"}, "this message")
11
- expect("response").to send(template_expectation, {:this => "hash"}, "this message")
12
- end
13
- end
14
-
15
- context "given a string" do
16
- it "delegates to assert_template" do
17
- expect(self).to receive(:assert_template).with("this string", "this message")
18
- expect("response").to send(template_expectation, "this string", "this message")
19
- end
20
- end
21
-
22
- context "given a symbol" do
23
- it "converts to_s and delegates to assert_template" do
24
- expect(self).to receive(:assert_template).with("template_name", "this message")
25
- expect("response").to send(template_expectation, :template_name, "this message")
26
- end
27
- end
28
-
29
- context "with should" do
30
- context "when assert_template passes" do
31
- it "passes" do
32
- def assert_template(*); end
33
- expect do
34
- expect(response).to send(template_expectation, "template_name")
35
- end.to_not raise_exception
36
- end
37
- end
38
-
39
- context "when assert_template fails" do
40
- it "uses failure message from assert_template" do
41
- def assert_template(*)
42
- raise ActiveSupport::TestCase::Assertion.new("this message")
43
- end
44
- expect do
45
- expect(response).to send(template_expectation, "template_name")
46
- end.to raise_error("this message")
47
- end
48
- end
49
-
50
- context "when fails due to some other exception" do
51
- it "raises that exception" do
52
- def assert_template(*)
53
- raise "oops"
54
- end
55
- expect do
56
- expect(response).to send(template_expectation, "template_name")
57
- end.to raise_exception("oops")
58
- end
59
- end
60
- end
61
-
62
- context "with should_not" do
63
- context "when assert_template fails" do
64
- it "passes" do
65
- def assert_template(*)
66
- raise ActiveSupport::TestCase::Assertion.new("this message")
67
- end
68
- expect do
69
- expect(response).to_not send(template_expectation, "template_name")
70
- end.to_not raise_exception
71
- end
72
- end
73
-
74
- context "when assert_template passes" do
75
- it "fails with custom failure message" do
76
- def assert_template(*); end
77
- expect do
78
- expect(response).to_not send(template_expectation, "template_name")
79
- end.to raise_error(/expected not to render \"template_name\", but did/)
80
- end
81
- end
82
-
83
- context "when fails due to some other exception" do
84
- it "raises that exception" do
85
- def assert_template(*); raise "oops"; end
86
- expect do
87
- expect(response).to_not send(template_expectation, "template_name")
88
- end.to raise_exception("oops")
89
- end
90
- end
91
- end
92
- end
93
- end