rspec-rails 2.99.0 → 3.0.0.beta1
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.
- checksums.yaml +8 -8
- checksums.yaml.gz.sig +2 -0
- data.tar.gz.sig +0 -0
- data/Changelog.md +40 -68
- data/License.txt +1 -0
- data/README.md +6 -4
- data/features/Generators.md +24 -0
- data/features/GettingStarted.md +84 -0
- data/features/README.md +56 -0
- data/features/RailsVersions.md +4 -0
- data/features/Transactions.md +84 -0
- data/features/Upgrade.md +121 -0
- data/features/controller_specs/Cookies.md +57 -0
- data/features/controller_specs/README.md +45 -0
- data/features/controller_specs/anonymous_controller.feature +378 -0
- data/features/controller_specs/bypass_rescue.feature +75 -0
- data/features/controller_specs/controller_spec.feature +58 -0
- data/features/controller_specs/engine_routes.feature +51 -0
- data/features/controller_specs/isolation_from_views.feature +87 -0
- data/features/controller_specs/render_views.feature +114 -0
- data/features/directory_structure.feature +71 -0
- data/features/feature_specs/feature_spec.feature +35 -0
- data/features/helper_specs/helper_spec.feature +122 -0
- data/features/mailer_specs/url_helpers.feature +38 -0
- data/features/matchers/README.md +18 -0
- data/features/matchers/new_record_matcher.feature +41 -0
- data/features/matchers/redirect_to_matcher.feature +40 -0
- data/features/matchers/relation_match_array.feature +27 -0
- data/features/matchers/render_template_matcher.feature +49 -0
- data/features/mocks/mock_model.feature +147 -0
- data/features/mocks/stub_model.feature +58 -0
- data/features/model_specs/README.md +21 -0
- data/features/model_specs/errors_on.feature +51 -0
- data/features/model_specs/records.feature +27 -0
- data/features/model_specs/transactional_examples.feature +109 -0
- data/features/request_specs/request_spec.feature +49 -0
- data/features/routing_specs/README.md +16 -0
- data/features/routing_specs/be_routable_matcher.feature +80 -0
- data/features/routing_specs/engine_routes.feature +38 -0
- data/features/routing_specs/named_routes.feature +18 -0
- data/features/routing_specs/route_to_matcher.feature +90 -0
- data/features/step_definitions/additional_cli_steps.rb +4 -0
- data/features/step_definitions/model_steps.rb +3 -0
- data/features/support/capybara.rb +7 -0
- data/features/support/env.rb +53 -0
- data/features/support/rails_versions.rb +4 -0
- data/features/support/rubinius.rb +6 -0
- data/features/view_specs/inferred_controller_path.feature +45 -0
- data/features/view_specs/stub_template.feature +51 -0
- data/features/view_specs/view_spec.feature +206 -0
- data/lib/generators/rspec/controller/templates/controller_spec.rb +1 -1
- data/lib/generators/rspec/install/templates/spec/spec_helper.rb.tt +2 -21
- data/lib/generators/rspec/integration/integration_generator.rb +2 -3
- data/lib/generators/rspec/integration/templates/request_spec.rb +1 -1
- data/lib/generators/rspec/mailer/templates/mailer_spec.rb +4 -4
- data/lib/generators/rspec/scaffold/scaffold_generator.rb +2 -3
- data/lib/generators/rspec/scaffold/templates/controller_spec.rb +16 -16
- data/lib/generators/rspec/scaffold/templates/edit_spec.rb +2 -2
- data/lib/generators/rspec/scaffold/templates/index_spec.rb +1 -1
- data/lib/generators/rspec/scaffold/templates/new_spec.rb +2 -2
- data/lib/generators/rspec/scaffold/templates/routing_spec.rb +7 -7
- data/lib/generators/rspec/scaffold/templates/show_spec.rb +2 -2
- data/lib/rspec/rails.rb +0 -5
- data/lib/rspec/rails/adapters.rb +5 -12
- data/lib/rspec/rails/example.rb +55 -24
- data/lib/rspec/rails/example/controller_example_group.rb +7 -31
- data/lib/rspec/rails/example/view_example_group.rb +0 -3
- data/lib/rspec/rails/matchers.rb +1 -2
- data/lib/rspec/rails/matchers/be_a_new.rb +1 -1
- data/lib/rspec/rails/matchers/be_new_record.rb +1 -1
- data/lib/rspec/rails/matchers/be_valid.rb +1 -1
- data/lib/rspec/rails/matchers/have_rendered.rb +1 -1
- data/lib/rspec/rails/matchers/redirect_to.rb +1 -1
- data/lib/rspec/rails/matchers/relation_match_array.rb +1 -1
- data/lib/rspec/rails/matchers/routing_matchers.rb +6 -10
- data/lib/rspec/rails/mocks.rb +5 -41
- data/lib/rspec/rails/tasks/rspec.rake +5 -12
- data/lib/rspec/rails/vendor/capybara.rb +4 -35
- data/lib/rspec/rails/version.rb +1 -1
- data/spec/generators/rspec/controller/controller_generator_spec.rb +97 -0
- data/spec/generators/rspec/helper/helper_generator_spec.rb +30 -0
- data/spec/generators/rspec/install/install_generator_spec.rb +30 -0
- data/spec/generators/rspec/integration/integration_generator_spec.rb +44 -0
- data/spec/generators/rspec/mailer/mailer_generator_spec.rb +48 -0
- data/spec/generators/rspec/model/model_generator_spec.rb +52 -0
- data/spec/generators/rspec/observer/observer_generator_spec.rb +21 -0
- data/spec/generators/rspec/scaffold/scaffold_generator_spec.rb +138 -0
- data/spec/generators/rspec/view/view_generator_spec.rb +41 -0
- data/spec/rspec/rails/assertion_adapter_spec.rb +28 -0
- data/spec/rspec/rails/assertion_delegator_spec.rb +43 -0
- data/spec/rspec/rails/configuration_spec.rb +26 -0
- data/spec/rspec/rails/deprecations_spec.rb +18 -0
- data/spec/rspec/rails/example/controller_example_group_spec.rb +100 -0
- data/spec/rspec/rails/example/feature_example_group_spec.rb +56 -0
- data/spec/rspec/rails/example/helper_example_group_spec.rb +66 -0
- data/spec/rspec/rails/example/mailer_example_group_spec.rb +21 -0
- data/spec/rspec/rails/example/model_example_group_spec.rb +15 -0
- data/spec/rspec/rails/example/request_example_group_spec.rb +17 -0
- data/spec/rspec/rails/example/routing_example_group_spec.rb +32 -0
- data/spec/rspec/rails/example/view_example_group_spec.rb +220 -0
- data/spec/rspec/rails/extensions/active_model/errors_on_spec.rb +23 -0
- data/spec/rspec/rails/extensions/active_record/base_spec.rb +42 -0
- data/spec/rspec/rails/fixture_support_spec.rb +17 -0
- data/spec/rspec/rails/matchers/be_a_new_spec.rb +142 -0
- data/spec/rspec/rails/matchers/be_new_record_spec.rb +33 -0
- data/spec/rspec/rails/matchers/be_routable_spec.rb +41 -0
- data/spec/rspec/rails/matchers/be_valid_spec.rb +44 -0
- data/spec/rspec/rails/matchers/has_spec.rb +29 -0
- data/spec/rspec/rails/matchers/have_rendered_spec.rb +93 -0
- data/spec/rspec/rails/matchers/redirect_to_spec.rb +80 -0
- data/spec/rspec/rails/matchers/relation_match_array_spec.rb +31 -0
- data/spec/rspec/rails/matchers/route_to_spec.rb +151 -0
- data/spec/rspec/rails/minitest_lifecycle_adapter_spec.rb +22 -0
- data/spec/rspec/rails/mocks/mock_model_spec.rb +378 -0
- data/spec/rspec/rails/mocks/stub_model_spec.rb +154 -0
- data/spec/rspec/rails/setup_and_teardown_adapter_spec.rb +32 -0
- data/spec/rspec/rails/view_rendering_spec.rb +111 -0
- data/spec/spec_helper.rb +35 -0
- data/spec/support/ar_classes.rb +42 -0
- data/spec/support/helpers.rb +20 -0
- data/spec/support/matchers.rb +9 -0
- data/spec/support/null_object.rb +6 -0
- metadata +229 -42
- metadata.gz.sig +0 -0
- data/lib/autotest/rails_rspec2.rb +0 -91
- data/lib/rspec/rails/infer_type_configuration.rb +0 -26
- data/lib/rspec/rails/matchers/have_extension.rb +0 -36
- data/lib/rspec/rails/module_inclusion.rb +0 -19
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Generators are not automatically loaded by Rails
|
4
|
+
require 'generators/rspec/helper/helper_generator'
|
5
|
+
|
6
|
+
describe Rspec::Generators::HelperGenerator do
|
7
|
+
# Tell the generator where to put its output (what it thinks of as Rails.root)
|
8
|
+
destination File.expand_path("../../../../../tmp", __FILE__)
|
9
|
+
|
10
|
+
before { prepare_destination }
|
11
|
+
|
12
|
+
subject { file('spec/helpers/posts_helper_spec.rb') }
|
13
|
+
describe 'generated by default' do
|
14
|
+
before do
|
15
|
+
run_generator %w(posts)
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'the spec' do
|
19
|
+
it { should exist }
|
20
|
+
it { should contain(/require 'spec_helper'/) }
|
21
|
+
it { should contain(/describe PostsHelper/) }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
describe 'skipped with a flag' do
|
25
|
+
before do
|
26
|
+
run_generator %w(posts --no-helper_specs)
|
27
|
+
end
|
28
|
+
it { should_not exist }
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'generators/rspec/install/install_generator'
|
3
|
+
|
4
|
+
describe Rspec::Generators::InstallGenerator do
|
5
|
+
destination File.expand_path("../../../../../tmp", __FILE__)
|
6
|
+
|
7
|
+
before { prepare_destination }
|
8
|
+
|
9
|
+
it "generates .rspec" do
|
10
|
+
run_generator
|
11
|
+
file('.rspec').should exist
|
12
|
+
end
|
13
|
+
|
14
|
+
it "generates spec/spec_helper.rb" do
|
15
|
+
run_generator
|
16
|
+
File.read( file('spec/spec_helper.rb') ).should =~ /^require 'rspec\/autorun'$/m
|
17
|
+
end
|
18
|
+
|
19
|
+
if ::Rails::VERSION::STRING >= '4'
|
20
|
+
it "generates spec/spec_helper.rb with a check for pending migrations" do
|
21
|
+
run_generator
|
22
|
+
File.read( file('spec/spec_helper.rb') ).should =~ /ActiveRecord::Migration\.check_pending!/m
|
23
|
+
end
|
24
|
+
else
|
25
|
+
it "generates spec/spec_helper.rb without a check for pending migrations" do
|
26
|
+
run_generator
|
27
|
+
File.read( file('spec/spec_helper.rb') ).should_not =~ /ActiveRecord::Migration\.check_pending!/m
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Generators are not automatically loaded by Rails
|
4
|
+
require 'generators/rspec/integration/integration_generator'
|
5
|
+
|
6
|
+
describe Rspec::Generators::IntegrationGenerator do
|
7
|
+
# Tell the generator where to put its output (what it thinks of as Rails.root)
|
8
|
+
destination File.expand_path("../../../../../tmp", __FILE__)
|
9
|
+
|
10
|
+
before { prepare_destination }
|
11
|
+
|
12
|
+
describe 'are not generated' do
|
13
|
+
before do
|
14
|
+
run_generator %w(posts --no-request-specs)
|
15
|
+
end
|
16
|
+
describe 'index.html.erb' do
|
17
|
+
subject { file('spec/requests/posts_spec.rb') }
|
18
|
+
it { should_not exist }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'are generated' do
|
23
|
+
describe 'without webrat matchers by default' do
|
24
|
+
before do
|
25
|
+
run_generator %w(posts)
|
26
|
+
end
|
27
|
+
subject { file('spec/requests/posts_spec.rb') }
|
28
|
+
it { should exist }
|
29
|
+
it { should contain(/require 'spec_helper'/) }
|
30
|
+
it { should contain(/describe "GET \/posts"/) }
|
31
|
+
it { should contain(/get posts_index_path/) }
|
32
|
+
end
|
33
|
+
describe 'with webrat matchers' do
|
34
|
+
before do
|
35
|
+
run_generator %w(posts --webrat)
|
36
|
+
end
|
37
|
+
subject { file('spec/requests/posts_spec.rb') }
|
38
|
+
it { should exist }
|
39
|
+
it { should contain(/require 'spec_helper'/) }
|
40
|
+
it { should contain(/describe "GET \/posts"/) }
|
41
|
+
it { should contain(/visit posts_index_path/) }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Generators are not automatically loaded by Rails
|
4
|
+
require 'generators/rspec/mailer/mailer_generator'
|
5
|
+
|
6
|
+
describe Rspec::Generators::MailerGenerator do
|
7
|
+
# Tell the generator where to put its output (what it thinks of as Rails.root)
|
8
|
+
destination File.expand_path("../../../../../tmp", __FILE__)
|
9
|
+
|
10
|
+
before { prepare_destination }
|
11
|
+
|
12
|
+
describe 'mailer spec' do
|
13
|
+
subject { file('spec/mailers/posts_spec.rb') }
|
14
|
+
describe 'a spec is created for each action' do
|
15
|
+
before do
|
16
|
+
run_generator %w(posts index show)
|
17
|
+
end
|
18
|
+
it { should exist }
|
19
|
+
it { should contain(/require "spec_helper"/) }
|
20
|
+
it { should contain(/describe "index" do/) }
|
21
|
+
it { should contain(/describe "show" do/) }
|
22
|
+
end
|
23
|
+
describe 'creates placeholder when no actions specified' do
|
24
|
+
before do
|
25
|
+
run_generator %w(posts)
|
26
|
+
end
|
27
|
+
it { should exist }
|
28
|
+
it { should contain(/require "spec_helper"/) }
|
29
|
+
it { should contain(/pending "add some examples to \(or delete\)/) }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'a fixture is generated for each action' do
|
34
|
+
before do
|
35
|
+
run_generator %w(posts index show)
|
36
|
+
end
|
37
|
+
describe 'index' do
|
38
|
+
subject { file('spec/fixtures/posts/index') }
|
39
|
+
it { should exist }
|
40
|
+
it { should contain(/Posts#index/) }
|
41
|
+
end
|
42
|
+
describe 'show' do
|
43
|
+
subject { file('spec/fixtures/posts/show') }
|
44
|
+
it { should exist }
|
45
|
+
it { should contain(/Posts#show/) }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Generators are not automatically loaded by Rails
|
4
|
+
require 'generators/rspec/model/model_generator'
|
5
|
+
|
6
|
+
describe Rspec::Generators::ModelGenerator do
|
7
|
+
# Tell the generator where to put its output (what it thinks of as Rails.root)
|
8
|
+
destination File.expand_path("../../../../../tmp", __FILE__)
|
9
|
+
|
10
|
+
before { prepare_destination }
|
11
|
+
|
12
|
+
it 'runs both the model and fixture tasks' do
|
13
|
+
gen = generator %w(posts)
|
14
|
+
gen.should_receive :create_model_spec
|
15
|
+
gen.should_receive :create_fixture_file
|
16
|
+
capture(:stdout) { gen.invoke_all }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'the generated files' do
|
20
|
+
describe 'with fixtures' do
|
21
|
+
before do
|
22
|
+
run_generator %w(posts --fixture)
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'the spec' do
|
26
|
+
subject { file('spec/models/posts_spec.rb') }
|
27
|
+
|
28
|
+
it { should exist }
|
29
|
+
it { should contain(/require 'spec_helper'/) }
|
30
|
+
it { should contain(/describe Posts/) }
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'the fixtures' do
|
34
|
+
subject { file('spec/fixtures/posts.yml') }
|
35
|
+
|
36
|
+
it { should contain(Regexp.new('# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html')) }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe 'without fixtures' do
|
41
|
+
before do
|
42
|
+
run_generator %w(posts)
|
43
|
+
end
|
44
|
+
|
45
|
+
describe 'the fixtures' do
|
46
|
+
subject { file('spec/fixtures/posts.yml') }
|
47
|
+
|
48
|
+
it { should_not exist }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Generators are not automatically loaded by Rails
|
4
|
+
require 'generators/rspec/observer/observer_generator'
|
5
|
+
|
6
|
+
describe Rspec::Generators::ObserverGenerator do
|
7
|
+
# Tell the generator where to put its output (what it thinks of as Rails.root)
|
8
|
+
destination File.expand_path("../../../../../tmp", __FILE__)
|
9
|
+
|
10
|
+
subject { file('spec/models/posts_observer_spec.rb') }
|
11
|
+
before do
|
12
|
+
prepare_destination
|
13
|
+
run_generator %w(posts)
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 'the spec' do
|
17
|
+
it { should exist }
|
18
|
+
it { should contain(/require 'spec_helper'/) }
|
19
|
+
it { should contain(/describe PostsObserver/) }
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'generators/rspec/scaffold/scaffold_generator'
|
4
|
+
|
5
|
+
describe Rspec::Generators::ScaffoldGenerator do
|
6
|
+
destination File.expand_path("../../../../../tmp", __FILE__)
|
7
|
+
|
8
|
+
before { prepare_destination }
|
9
|
+
|
10
|
+
describe 'standard controller spec' do
|
11
|
+
subject { file('spec/controllers/posts_controller_spec.rb') }
|
12
|
+
|
13
|
+
describe 'with no options' do
|
14
|
+
before { run_generator %w(posts) }
|
15
|
+
it { should contain(/require 'spec_helper'/) }
|
16
|
+
it { should contain(/describe PostsController/) }
|
17
|
+
it { should contain(%({ "these" => "params" })) }
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'with --no-controller_specs' do
|
21
|
+
before { run_generator %w(posts --no-controller_specs) }
|
22
|
+
it { should_not exist }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe 'controller spec with attributes specified' do
|
27
|
+
subject { file('spec/controllers/posts_controller_spec.rb') }
|
28
|
+
before { run_generator %w(posts title:string) }
|
29
|
+
|
30
|
+
it { should contain(%({ "title" => "MyString" })) }
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'namespaced controller spec' do
|
34
|
+
subject { file('spec/controllers/admin/posts_controller_spec.rb') }
|
35
|
+
before { run_generator %w(admin/posts) }
|
36
|
+
it { should contain(/describe Admin::PostsController/)}
|
37
|
+
end
|
38
|
+
|
39
|
+
describe 'view specs' do
|
40
|
+
describe 'with no options' do
|
41
|
+
before { run_generator %w(posts) }
|
42
|
+
describe 'edit' do
|
43
|
+
subject { file("spec/views/posts/edit.html.erb_spec.rb") }
|
44
|
+
it { should exist }
|
45
|
+
it { should contain(/require 'spec_helper'/) }
|
46
|
+
it { should contain(/describe "(.*)\/edit"/) }
|
47
|
+
it { should contain(/it "renders the edit (.*) form"/) }
|
48
|
+
end
|
49
|
+
|
50
|
+
describe 'index' do
|
51
|
+
subject { file("spec/views/posts/index.html.erb_spec.rb") }
|
52
|
+
it { should exist }
|
53
|
+
it { should contain(/require 'spec_helper'/) }
|
54
|
+
it { should contain(/describe "(.*)\/index"/) }
|
55
|
+
it { should contain(/it "renders a list of (.*)"/) }
|
56
|
+
end
|
57
|
+
|
58
|
+
describe 'new' do
|
59
|
+
subject { file("spec/views/posts/new.html.erb_spec.rb") }
|
60
|
+
it { should exist }
|
61
|
+
it { should contain(/require 'spec_helper'/) }
|
62
|
+
it { should contain(/describe "(.*)\/new"/) }
|
63
|
+
it { should contain(/it "renders new (.*) form"/) }
|
64
|
+
end
|
65
|
+
|
66
|
+
describe 'show' do
|
67
|
+
subject { file("spec/views/posts/show.html.erb_spec.rb") }
|
68
|
+
it { should exist }
|
69
|
+
it { should contain(/require 'spec_helper'/) }
|
70
|
+
it { should contain(/describe "(.*)\/show"/) }
|
71
|
+
it { should contain(/it "renders attributes in <p>"/) }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe 'with --no-template-engine' do
|
76
|
+
before { run_generator %w(posts --no-template-engine) }
|
77
|
+
describe 'edit' do
|
78
|
+
subject { file("spec/views/posts/edit.html._spec.rb") }
|
79
|
+
it { should_not exist }
|
80
|
+
end
|
81
|
+
|
82
|
+
describe 'index' do
|
83
|
+
subject { file("spec/views/posts/index.html._spec.rb") }
|
84
|
+
it { should_not exist }
|
85
|
+
end
|
86
|
+
|
87
|
+
describe 'new' do
|
88
|
+
subject { file("spec/views/posts/new.html._spec.rb") }
|
89
|
+
it { should_not exist }
|
90
|
+
end
|
91
|
+
|
92
|
+
describe 'show' do
|
93
|
+
subject { file("spec/views/posts/show.html._spec.rb") }
|
94
|
+
it { should_not exist }
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe 'with --no-view-specs' do
|
99
|
+
before { run_generator %w(posts --no-view-specs) }
|
100
|
+
|
101
|
+
describe 'edit' do
|
102
|
+
subject { file("spec/views/posts/edit.html.erb_spec.rb") }
|
103
|
+
it { should_not exist }
|
104
|
+
end
|
105
|
+
|
106
|
+
describe 'index' do
|
107
|
+
subject { file("spec/views/posts/index.html.erb_spec.rb") }
|
108
|
+
it { should_not exist }
|
109
|
+
end
|
110
|
+
|
111
|
+
describe 'new' do
|
112
|
+
subject { file("spec/views/posts/new.html.erb_spec.rb") }
|
113
|
+
it { should_not exist }
|
114
|
+
end
|
115
|
+
|
116
|
+
describe 'show' do
|
117
|
+
subject { file("spec/views/posts/show.html.erb_spec.rb") }
|
118
|
+
it { should_not exist }
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
describe 'routing spec' do
|
124
|
+
subject { file('spec/routing/posts_routing_spec.rb') }
|
125
|
+
|
126
|
+
describe 'with default options' do
|
127
|
+
before { run_generator %w(posts) }
|
128
|
+
it { should contain(/require "spec_helper"/) }
|
129
|
+
it { should contain(/describe PostsController/) }
|
130
|
+
it { should contain(/describe "routing"/) }
|
131
|
+
end
|
132
|
+
|
133
|
+
describe 'with --no-routing-specs' do
|
134
|
+
before { run_generator %w(posts --no-routing_specs) }
|
135
|
+
it { should_not exist }
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Generators are not automatically loaded by Rails
|
4
|
+
require 'generators/rspec/view/view_generator'
|
5
|
+
|
6
|
+
describe Rspec::Generators::ViewGenerator do
|
7
|
+
# Tell the generator where to put its output (what it thinks of as Rails.root)
|
8
|
+
destination File.expand_path("../../../../../tmp", __FILE__)
|
9
|
+
|
10
|
+
before { prepare_destination }
|
11
|
+
|
12
|
+
describe 'with default template engine' do
|
13
|
+
it 'generates a spec for the supplied action' do
|
14
|
+
run_generator %w(posts index)
|
15
|
+
file('spec/views/posts/index.html.erb_spec.rb').tap do |f|
|
16
|
+
f.should contain(/require 'spec_helper'/)
|
17
|
+
f.should contain(/describe "posts\/index"/)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'with a nested resource' do
|
22
|
+
it 'generates a spec for the supplied action' do
|
23
|
+
run_generator %w(admin/posts index)
|
24
|
+
file('spec/views/admin/posts/index.html.erb_spec.rb').tap do |f|
|
25
|
+
f.should contain(/require 'spec_helper'/)
|
26
|
+
f.should contain(/describe "admin\/posts\/index"/)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe 'with a specified template engine' do
|
33
|
+
it 'generates a spec for the supplied action' do
|
34
|
+
run_generator %w(posts index --template_engine haml)
|
35
|
+
file('spec/views/posts/index.html.haml_spec.rb').tap do |f|
|
36
|
+
f.should contain(/require 'spec_helper'/)
|
37
|
+
f.should contain(/describe "posts\/index"/)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe RSpec::Rails::MinitestAssertionAdapter do
|
4
|
+
include RSpec::Rails::MinitestAssertionAdapter
|
5
|
+
|
6
|
+
RSpec::Rails::Assertions.public_instance_methods.select{|m| m.to_s =~ /^(assert|flunk|refute)/}.each do |m|
|
7
|
+
if m.to_s == "assert_equal"
|
8
|
+
it "exposes #{m} to host examples" do
|
9
|
+
assert_equal 3,3
|
10
|
+
expect do
|
11
|
+
assert_equal 3,4
|
12
|
+
end.to raise_error(ActiveSupport::TestCase::Assertion)
|
13
|
+
end
|
14
|
+
else
|
15
|
+
it "exposes #{m} to host examples" do
|
16
|
+
methods.should include(m)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "does not expose internal methods of Minitest" do
|
22
|
+
methods.should_not include("_assertions")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "does not expose Minitest's message method" do
|
26
|
+
methods.should_not include("message")
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe RSpec::Rails::AssertionDelegator do
|
4
|
+
it "provides a module that delegates assertion methods to an isolated class" do
|
5
|
+
klass = Class.new {
|
6
|
+
include RSpec::Rails::AssertionDelegator.new(RSpec::Rails::Assertions)
|
7
|
+
}
|
8
|
+
|
9
|
+
expect(klass.new).to respond_to(:assert)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "delegates back to the including instance for methods the assertion module requires" do
|
13
|
+
assertions = Module.new {
|
14
|
+
def has_thing?(thing)
|
15
|
+
self.things.include?(thing)
|
16
|
+
end
|
17
|
+
}
|
18
|
+
|
19
|
+
klass = Class.new {
|
20
|
+
include RSpec::Rails::AssertionDelegator.new(assertions)
|
21
|
+
|
22
|
+
def things
|
23
|
+
[:a]
|
24
|
+
end
|
25
|
+
}
|
26
|
+
|
27
|
+
expect(klass.new).to have_thing(:a)
|
28
|
+
expect(klass.new).not_to have_thing(:b)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "does not delegate method_missing" do
|
32
|
+
assertions = Module.new {
|
33
|
+
def method_missing(method, *args)
|
34
|
+
end
|
35
|
+
}
|
36
|
+
|
37
|
+
klass = Class.new {
|
38
|
+
include RSpec::Rails::AssertionDelegator.new(assertions)
|
39
|
+
}
|
40
|
+
|
41
|
+
expect { klass.new.abc123 }.to raise_error(NoMethodError)
|
42
|
+
end
|
43
|
+
end
|