cavalle-rspec-rails 1.2.2.0.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.
- data/.document +7 -0
- data/History.rdoc +207 -0
- data/License.txt +33 -0
- data/Manifest.txt +167 -0
- data/README.rdoc +45 -0
- data/Rakefile +79 -0
- data/TODO.txt +1 -0
- data/Upgrade.rdoc +103 -0
- data/features/step_definitions/people.rb +6 -0
- data/features/support/env.rb +13 -0
- data/features/transactions/transactions_should_rollback.feature +16 -0
- data/generators/rspec/CHANGES +1 -0
- data/generators/rspec/rspec_generator.rb +54 -0
- data/generators/rspec/templates/previous_failures.txt +0 -0
- data/generators/rspec/templates/rcov.opts +2 -0
- data/generators/rspec/templates/rspec.rake +165 -0
- data/generators/rspec/templates/script/autospec +6 -0
- data/generators/rspec/templates/script/spec +10 -0
- data/generators/rspec/templates/script/spec_server +9 -0
- data/generators/rspec/templates/spec.opts +4 -0
- data/generators/rspec/templates/spec_helper.rb +47 -0
- data/generators/rspec_controller/USAGE +33 -0
- data/generators/rspec_controller/rspec_controller_generator.rb +45 -0
- data/generators/rspec_controller/templates/controller_spec.rb +25 -0
- data/generators/rspec_controller/templates/helper_spec.rb +11 -0
- data/generators/rspec_controller/templates/view_spec.rb +12 -0
- data/generators/rspec_default_values.rb +19 -0
- data/generators/rspec_model/USAGE +18 -0
- data/generators/rspec_model/rspec_model_generator.rb +35 -0
- data/generators/rspec_model/templates/model_spec.rb +15 -0
- data/generators/rspec_scaffold/rspec_scaffold_generator.rb +150 -0
- data/generators/rspec_scaffold/templates/controller_spec.rb +171 -0
- data/generators/rspec_scaffold/templates/edit_erb_spec.rb +27 -0
- data/generators/rspec_scaffold/templates/helper_spec.rb +11 -0
- data/generators/rspec_scaffold/templates/index_erb_spec.rb +28 -0
- data/generators/rspec_scaffold/templates/new_erb_spec.rb +27 -0
- data/generators/rspec_scaffold/templates/routing_spec.rb +63 -0
- data/generators/rspec_scaffold/templates/show_erb_spec.rb +23 -0
- data/init.rb +9 -0
- data/lib/autotest/discover.rb +1 -0
- data/lib/autotest/rails_rspec.rb +76 -0
- data/lib/spec/rails/example/assigns_hash_proxy.rb +39 -0
- data/lib/spec/rails/example/controller_example_group.rb +247 -0
- data/lib/spec/rails/example/cookies_proxy.rb +29 -0
- data/lib/spec/rails/example/functional_example_group.rb +84 -0
- data/lib/spec/rails/example/helper_example_group.rb +153 -0
- data/lib/spec/rails/example/model_example_group.rb +14 -0
- data/lib/spec/rails/example/render_observer.rb +67 -0
- data/lib/spec/rails/example/routing_example_group.rb +13 -0
- data/lib/spec/rails/example/routing_helpers.rb +70 -0
- data/lib/spec/rails/example/view_example_group.rb +186 -0
- data/lib/spec/rails/example.rb +47 -0
- data/lib/spec/rails/extensions/action_controller/rescue.rb +42 -0
- data/lib/spec/rails/extensions/action_controller/test_case.rb +16 -0
- data/lib/spec/rails/extensions/action_controller/test_response.rb +21 -0
- data/lib/spec/rails/extensions/action_view/base.rb +33 -0
- data/lib/spec/rails/extensions/active_record/base.rb +45 -0
- data/lib/spec/rails/extensions/active_support/test_case.rb +7 -0
- data/lib/spec/rails/extensions/spec/matchers/have.rb +23 -0
- data/lib/spec/rails/extensions/spec/runner/configuration.rb +44 -0
- data/lib/spec/rails/extensions.rb +11 -0
- data/lib/spec/rails/interop/testcase.rb +14 -0
- data/lib/spec/rails/matchers/ar_be_valid.rb +44 -0
- data/lib/spec/rails/matchers/assert_select.rb +146 -0
- data/lib/spec/rails/matchers/change.rb +11 -0
- data/lib/spec/rails/matchers/have_text.rb +57 -0
- data/lib/spec/rails/matchers/include_text.rb +54 -0
- data/lib/spec/rails/matchers/redirect_to.rb +126 -0
- data/lib/spec/rails/matchers/render_template.rb +114 -0
- data/lib/spec/rails/matchers.rb +32 -0
- data/lib/spec/rails/mocks.rb +135 -0
- data/lib/spec/rails/spec_server.rb +127 -0
- data/lib/spec/rails/story_adapter.rb +79 -0
- data/lib/spec/rails/version.rb +15 -0
- data/lib/spec/rails.rb +28 -0
- data/rspec-rails.gemspec +57 -0
- data/spec/autotest/mappings_spec.rb +86 -0
- data/spec/rails_suite.rb +7 -0
- data/spec/resources/controllers/action_view_base_spec_controller.rb +2 -0
- data/spec/resources/controllers/application.rb +9 -0
- data/spec/resources/controllers/controller_spec_controller.rb +120 -0
- data/spec/resources/controllers/example.txt +1 -0
- data/spec/resources/controllers/redirect_spec_controller.rb +70 -0
- data/spec/resources/controllers/render_spec_controller.rb +30 -0
- data/spec/resources/controllers/rjs_spec_controller.rb +58 -0
- data/spec/resources/helpers/addition_helper.rb +5 -0
- data/spec/resources/helpers/explicit_helper.rb +46 -0
- data/spec/resources/helpers/more_explicit_helper.rb +5 -0
- data/spec/resources/helpers/plugin_application_helper.rb +6 -0
- data/spec/resources/helpers/view_spec_helper.rb +13 -0
- data/spec/resources/models/animal.rb +4 -0
- data/spec/resources/models/person.rb +18 -0
- data/spec/resources/models/thing.rb +3 -0
- data/spec/resources/views/controller_spec/_partial.html.erb +0 -0
- data/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb +1 -0
- data/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb +1 -0
- data/spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb +0 -0
- data/spec/resources/views/controller_spec/action_with_errors_in_template.html.erb +1 -0
- data/spec/resources/views/controller_spec/action_with_template.html.erb +1 -0
- data/spec/resources/views/layouts/application.html.erb +0 -0
- data/spec/resources/views/layouts/simple.html.erb +0 -0
- data/spec/resources/views/objects/_object.html.erb +1 -0
- data/spec/resources/views/render_spec/_a_partial.html.erb +0 -0
- data/spec/resources/views/render_spec/action_with_alternate_layout.html.erb +0 -0
- data/spec/resources/views/render_spec/some_action.html.erb +0 -0
- data/spec/resources/views/render_spec/some_action.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/_replacement_partial.html.erb +1 -0
- data/spec/resources/views/rjs_spec/hide_div.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/hide_page_element.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/insert_html.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace_html.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/visual_effect.js.rjs +1 -0
- data/spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs +1 -0
- data/spec/resources/views/tag_spec/no_tags.html.erb +1 -0
- data/spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb +1 -0
- data/spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb +1 -0
- data/spec/resources/views/view_spec/_partial.html.erb +2 -0
- data/spec/resources/views/view_spec/_partial_used_twice.html.erb +0 -0
- data/spec/resources/views/view_spec/_partial_with_local_variable.html.erb +1 -0
- data/spec/resources/views/view_spec/_partial_with_sub_partial.html.erb +1 -0
- data/spec/resources/views/view_spec/_spacer.html.erb +1 -0
- data/spec/resources/views/view_spec/accessor.html.erb +5 -0
- data/spec/resources/views/view_spec/block_helper.html.erb +3 -0
- data/spec/resources/views/view_spec/entry_form.html.erb +2 -0
- data/spec/resources/views/view_spec/explicit_helper.html.erb +2 -0
- data/spec/resources/views/view_spec/foo/show.html.erb +1 -0
- data/spec/resources/views/view_spec/implicit_helper.html.erb +2 -0
- data/spec/resources/views/view_spec/multiple_helpers.html.erb +3 -0
- data/spec/resources/views/view_spec/path_params.html.erb +1 -0
- data/spec/resources/views/view_spec/should_not_receive.html.erb +3 -0
- data/spec/resources/views/view_spec/template_with_partial.html.erb +5 -0
- data/spec/resources/views/view_spec/template_with_partial_using_collection.html.erb +3 -0
- data/spec/resources/views/view_spec/template_with_partial_with_array.html.erb +1 -0
- data/spec/spec/rails/example/assigns_hash_proxy_spec.rb +109 -0
- data/spec/spec/rails/example/configuration_spec.rb +65 -0
- data/spec/spec/rails/example/controller_example_group_spec.rb +299 -0
- data/spec/spec/rails/example/controller_isolation_spec.rb +56 -0
- data/spec/spec/rails/example/cookies_proxy_spec.rb +87 -0
- data/spec/spec/rails/example/error_handling_spec.rb +90 -0
- data/spec/spec/rails/example/example_group_factory_spec.rb +112 -0
- data/spec/spec/rails/example/helper_example_group_spec.rb +233 -0
- data/spec/spec/rails/example/model_example_group_spec.rb +20 -0
- data/spec/spec/rails/example/routing_example_group_spec.rb +9 -0
- data/spec/spec/rails/example/shared_routing_example_group_examples.rb +44 -0
- data/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb +33 -0
- data/spec/spec/rails/example/view_example_group_spec.rb +335 -0
- data/spec/spec/rails/extensions/action_view_base_spec.rb +48 -0
- data/spec/spec/rails/extensions/active_record_spec.rb +14 -0
- data/spec/spec/rails/interop/testcase_spec.rb +70 -0
- data/spec/spec/rails/matchers/ar_be_valid_spec.rb +45 -0
- data/spec/spec/rails/matchers/assert_select_spec.rb +809 -0
- data/spec/spec/rails/matchers/errors_on_spec.rb +25 -0
- data/spec/spec/rails/matchers/have_text_spec.rb +70 -0
- data/spec/spec/rails/matchers/include_text_spec.rb +62 -0
- data/spec/spec/rails/matchers/redirect_to_spec.rb +253 -0
- data/spec/spec/rails/matchers/render_template_spec.rb +191 -0
- data/spec/spec/rails/matchers/should_change_spec.rb +15 -0
- data/spec/spec/rails/mocks/ar_classes.rb +10 -0
- data/spec/spec/rails/mocks/mock_model_spec.rb +106 -0
- data/spec/spec/rails/mocks/stub_model_spec.rb +80 -0
- data/spec/spec/rails/sample_modified_fixture.rb +8 -0
- data/spec/spec/rails/sample_spec.rb +8 -0
- data/spec/spec/rails/spec_server_spec.rb +107 -0
- data/spec/spec/rails/spec_spec.rb +11 -0
- data/spec/spec_helper.rb +79 -0
- metadata +277 -0
@@ -0,0 +1,79 @@
|
|
1
|
+
# WARNING - THIS IS PURELY EXPERIMENTAL AT THIS POINT
|
2
|
+
# Courtesy of Brian Takita and Yurii Rashkovskii
|
3
|
+
|
4
|
+
$:.unshift File.join(File.dirname(__FILE__), *%w[.. .. .. .. rspec lib])
|
5
|
+
if defined?(ActiveRecord::Base)
|
6
|
+
require 'test_help'
|
7
|
+
else
|
8
|
+
require 'action_controller/test_process'
|
9
|
+
require 'action_controller/integration'
|
10
|
+
end
|
11
|
+
require 'test/unit/testresult'
|
12
|
+
require 'spec'
|
13
|
+
require 'spec/rails'
|
14
|
+
|
15
|
+
Test::Unit.run = true
|
16
|
+
|
17
|
+
ActionController::Integration::Session.__send__ :include, Spec::Matchers
|
18
|
+
ActionController::Integration::Session.__send__ :include, Spec::Rails::Matchers
|
19
|
+
|
20
|
+
class RailsStory < ActionController::IntegrationTest
|
21
|
+
if defined?(ActiveRecord::Base)
|
22
|
+
self.use_transactional_fixtures = true
|
23
|
+
else
|
24
|
+
def self.fixture_table_names; []; end # Workaround for projects that don't use ActiveRecord
|
25
|
+
end
|
26
|
+
|
27
|
+
def initialize #:nodoc:
|
28
|
+
# TODO - eliminate this hack, which is here to stop
|
29
|
+
# Rails Stories from dumping the example summary.
|
30
|
+
Spec::Runner::Options.class_eval do
|
31
|
+
def examples_should_be_run?
|
32
|
+
false
|
33
|
+
end
|
34
|
+
end
|
35
|
+
@_result = Test::Unit::TestResult.new
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class ActiveRecordSafetyListener
|
40
|
+
include Singleton
|
41
|
+
def scenario_started(*args)
|
42
|
+
if defined?(ActiveRecord::Base)
|
43
|
+
if ActiveRecord::Base.connection.respond_to?(:increment_open_transactions)
|
44
|
+
ActiveRecord::Base.connection.increment_open_transactions
|
45
|
+
else
|
46
|
+
ActiveRecord::Base.__send__ :increment_open_transactions
|
47
|
+
end
|
48
|
+
end
|
49
|
+
ActiveRecord::Base.connection.begin_db_transaction
|
50
|
+
end
|
51
|
+
|
52
|
+
def scenario_succeeded(*args)
|
53
|
+
if defined?(ActiveRecord::Base)
|
54
|
+
ActiveRecord::Base.connection.rollback_db_transaction
|
55
|
+
if ActiveRecord::Base.connection.respond_to?(:decrement_open_transactions)
|
56
|
+
ActiveRecord::Base.connection.decrement_open_transactions
|
57
|
+
else
|
58
|
+
ActiveRecord::Base.__send__ :decrement_open_transactions
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
alias :scenario_pending :scenario_succeeded
|
63
|
+
alias :scenario_failed :scenario_succeeded
|
64
|
+
end
|
65
|
+
|
66
|
+
class Spec::Story::Runner::ScenarioRunner
|
67
|
+
def initialize
|
68
|
+
@listeners = [ActiveRecordSafetyListener.instance]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class Spec::Story::GivenScenario
|
73
|
+
def perform(instance, name = nil)
|
74
|
+
scenario = Spec::Story::Runner::StoryRunner.scenario_from_current_story @name
|
75
|
+
runner = Spec::Story::Runner::ScenarioRunner.new
|
76
|
+
runner.instance_variable_set(:@listeners,[])
|
77
|
+
runner.run(scenario, instance)
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Spec # :nodoc:
|
2
|
+
module Rails # :nodoc:
|
3
|
+
module VERSION # :nodoc:
|
4
|
+
unless defined? MAJOR
|
5
|
+
MAJOR = 1
|
6
|
+
MINOR = 2
|
7
|
+
TINY = 2
|
8
|
+
|
9
|
+
STRING = [MAJOR, MINOR, TINY].compact.join('.')
|
10
|
+
|
11
|
+
SUMMARY = "rspec-rails #{STRING}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/spec/rails.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
RAILS_ENV ||= "test"
|
2
|
+
|
3
|
+
begin
|
4
|
+
require_dependency 'application_controller'
|
5
|
+
rescue MissingSourceFile
|
6
|
+
require_dependency 'application'
|
7
|
+
end
|
8
|
+
require 'rack/utils'
|
9
|
+
|
10
|
+
require 'action_controller/test_process'
|
11
|
+
require 'action_controller/integration'
|
12
|
+
require 'active_support/test_case'
|
13
|
+
require 'active_record/fixtures' if defined?(ActiveRecord::Base)
|
14
|
+
|
15
|
+
require 'spec/test/unit'
|
16
|
+
|
17
|
+
require 'spec/rails/matchers'
|
18
|
+
require 'spec/rails/mocks'
|
19
|
+
require 'spec/rails/example'
|
20
|
+
require 'spec/rails/extensions'
|
21
|
+
require 'spec/rails/interop/testcase'
|
22
|
+
|
23
|
+
Spec::Example::ExampleGroupFactory.default(ActiveSupport::TestCase)
|
24
|
+
|
25
|
+
if ActionView::Base.respond_to?(:cache_template_extensions)
|
26
|
+
ActionView::Base.cache_template_extensions = false
|
27
|
+
end
|
28
|
+
|
data/rspec-rails.gemspec
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{rspec-rails}
|
5
|
+
s.version = "1.2.2.0.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["RSpec Development Team"]
|
9
|
+
s.date = %q{2009-04-13}
|
10
|
+
s.description = %q{Behaviour Driven Development for Ruby on Rails.}
|
11
|
+
s.email = ["rspec-devel@rubyforge.org"]
|
12
|
+
s.extra_rdoc_files = ["License.txt", "Manifest.txt", "TODO.txt", "generators/rspec/templates/previous_failures.txt"]
|
13
|
+
s.files = [".document", "History.rdoc", "License.txt", "Manifest.txt", "README.rdoc", "Rakefile", "TODO.txt", "Upgrade.rdoc", "features/step_definitions/people.rb", "features/support/env.rb", "features/transactions/transactions_should_rollback.feature", "generators/rspec/CHANGES", "generators/rspec/rspec_generator.rb", "generators/rspec/templates/previous_failures.txt", "generators/rspec/templates/rcov.opts", "generators/rspec/templates/rspec.rake", "generators/rspec/templates/script/autospec", "generators/rspec/templates/script/spec", "generators/rspec/templates/script/spec_server", "generators/rspec/templates/spec.opts", "generators/rspec/templates/spec_helper.rb", "generators/rspec_controller/USAGE", "generators/rspec_controller/rspec_controller_generator.rb", "generators/rspec_controller/templates/controller_spec.rb", "generators/rspec_controller/templates/helper_spec.rb", "generators/rspec_controller/templates/view_spec.rb", "generators/rspec_default_values.rb", "generators/rspec_model/USAGE", "generators/rspec_model/rspec_model_generator.rb", "generators/rspec_model/templates/model_spec.rb", "generators/rspec_scaffold/rspec_scaffold_generator.rb", "generators/rspec_scaffold/templates/controller_spec.rb", "generators/rspec_scaffold/templates/edit_erb_spec.rb", "generators/rspec_scaffold/templates/helper_spec.rb", "generators/rspec_scaffold/templates/index_erb_spec.rb", "generators/rspec_scaffold/templates/new_erb_spec.rb", "generators/rspec_scaffold/templates/routing_spec.rb", "generators/rspec_scaffold/templates/show_erb_spec.rb", "init.rb", "lib/autotest/discover.rb", "lib/autotest/rails_rspec.rb", "lib/spec/rails.rb", "lib/spec/rails/example.rb", "lib/spec/rails/example/assigns_hash_proxy.rb", "lib/spec/rails/example/controller_example_group.rb", "lib/spec/rails/example/cookies_proxy.rb", "lib/spec/rails/example/functional_example_group.rb", "lib/spec/rails/example/helper_example_group.rb", "lib/spec/rails/example/model_example_group.rb", "lib/spec/rails/example/render_observer.rb", "lib/spec/rails/example/routing_example_group.rb", "lib/spec/rails/example/routing_helpers.rb", "lib/spec/rails/example/view_example_group.rb", "lib/spec/rails/extensions.rb", "lib/spec/rails/extensions/action_controller/rescue.rb", "lib/spec/rails/extensions/action_controller/test_case.rb", "lib/spec/rails/extensions/action_controller/test_response.rb", "lib/spec/rails/extensions/action_view/base.rb", "lib/spec/rails/extensions/active_record/base.rb", "lib/spec/rails/extensions/active_support/test_case.rb", "lib/spec/rails/extensions/spec/matchers/have.rb", "lib/spec/rails/extensions/spec/runner/configuration.rb", "lib/spec/rails/interop/testcase.rb", "lib/spec/rails/matchers.rb", "lib/spec/rails/matchers/ar_be_valid.rb", "lib/spec/rails/matchers/assert_select.rb", "lib/spec/rails/matchers/change.rb", "lib/spec/rails/matchers/have_text.rb", "lib/spec/rails/matchers/include_text.rb", "lib/spec/rails/matchers/redirect_to.rb", "lib/spec/rails/matchers/render_template.rb", "lib/spec/rails/mocks.rb", "lib/spec/rails/spec_server.rb", "lib/spec/rails/story_adapter.rb", "lib/spec/rails/version.rb", "rspec-rails.gemspec", "spec/autotest/mappings_spec.rb", "spec/rails_suite.rb", "spec/resources/controllers/action_view_base_spec_controller.rb", "spec/resources/controllers/application.rb", "spec/resources/controllers/controller_spec_controller.rb", "spec/resources/controllers/example.txt", "spec/resources/controllers/redirect_spec_controller.rb", "spec/resources/controllers/render_spec_controller.rb", "spec/resources/controllers/rjs_spec_controller.rb", "spec/resources/helpers/addition_helper.rb", "spec/resources/helpers/explicit_helper.rb", "spec/resources/helpers/more_explicit_helper.rb", "spec/resources/helpers/plugin_application_helper.rb", "spec/resources/helpers/view_spec_helper.rb", "spec/resources/models/animal.rb", "spec/resources/models/person.rb", "spec/resources/models/thing.rb", "spec/resources/views/controller_spec/_partial.html.erb", "spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb", "spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb", "spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb", "spec/resources/views/controller_spec/action_with_errors_in_template.html.erb", "spec/resources/views/controller_spec/action_with_template.html.erb", "spec/resources/views/layouts/application.html.erb", "spec/resources/views/layouts/simple.html.erb", "spec/resources/views/objects/_object.html.erb", "spec/resources/views/render_spec/_a_partial.html.erb", "spec/resources/views/render_spec/action_with_alternate_layout.html.erb", "spec/resources/views/render_spec/some_action.html.erb", "spec/resources/views/render_spec/some_action.js.rjs", "spec/resources/views/rjs_spec/_replacement_partial.html.erb", "spec/resources/views/rjs_spec/hide_div.js.rjs", "spec/resources/views/rjs_spec/hide_page_element.js.rjs", "spec/resources/views/rjs_spec/insert_html.js.rjs", "spec/resources/views/rjs_spec/replace.js.rjs", "spec/resources/views/rjs_spec/replace_html.js.rjs", "spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs", "spec/resources/views/rjs_spec/visual_effect.js.rjs", "spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs", "spec/resources/views/tag_spec/no_tags.html.erb", "spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb", "spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb", "spec/resources/views/view_spec/_partial.html.erb", "spec/resources/views/view_spec/_partial_used_twice.html.erb", "spec/resources/views/view_spec/_partial_with_local_variable.html.erb", "spec/resources/views/view_spec/_partial_with_sub_partial.html.erb", "spec/resources/views/view_spec/_spacer.html.erb", "spec/resources/views/view_spec/accessor.html.erb", "spec/resources/views/view_spec/block_helper.html.erb", "spec/resources/views/view_spec/entry_form.html.erb", "spec/resources/views/view_spec/explicit_helper.html.erb", "spec/resources/views/view_spec/foo/show.html.erb", "spec/resources/views/view_spec/implicit_helper.html.erb", "spec/resources/views/view_spec/multiple_helpers.html.erb", "spec/resources/views/view_spec/path_params.html.erb", "spec/resources/views/view_spec/should_not_receive.html.erb", "spec/resources/views/view_spec/template_with_partial.html.erb", "spec/resources/views/view_spec/template_with_partial_using_collection.html.erb", "spec/resources/views/view_spec/template_with_partial_with_array.html.erb", "spec/spec/rails/example/assigns_hash_proxy_spec.rb", "spec/spec/rails/example/configuration_spec.rb", "spec/spec/rails/example/controller_example_group_spec.rb", "spec/spec/rails/example/controller_isolation_spec.rb", "spec/spec/rails/example/cookies_proxy_spec.rb", "spec/spec/rails/example/error_handling_spec.rb", "spec/spec/rails/example/example_group_factory_spec.rb", "spec/spec/rails/example/helper_example_group_spec.rb", "spec/spec/rails/example/model_example_group_spec.rb", "spec/spec/rails/example/routing_example_group_spec.rb", "spec/spec/rails/example/shared_routing_example_group_examples.rb", "spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb", "spec/spec/rails/example/view_example_group_spec.rb", "spec/spec/rails/extensions/action_view_base_spec.rb", "spec/spec/rails/extensions/active_record_spec.rb", "spec/spec/rails/interop/testcase_spec.rb", "spec/spec/rails/matchers/ar_be_valid_spec.rb", "spec/spec/rails/matchers/assert_select_spec.rb", "spec/spec/rails/matchers/errors_on_spec.rb", "spec/spec/rails/matchers/have_text_spec.rb", "spec/spec/rails/matchers/include_text_spec.rb", "spec/spec/rails/matchers/redirect_to_spec.rb", "spec/spec/rails/matchers/render_template_spec.rb", "spec/spec/rails/matchers/should_change_spec.rb", "spec/spec/rails/mocks/ar_classes.rb", "spec/spec/rails/mocks/mock_model_spec.rb", "spec/spec/rails/mocks/stub_model_spec.rb", "spec/spec/rails/sample_modified_fixture.rb", "spec/spec/rails/sample_spec.rb", "spec/spec/rails/spec_server_spec.rb", "spec/spec/rails/spec_spec.rb", "spec/spec_helper.rb"]
|
14
|
+
s.has_rdoc = true
|
15
|
+
s.homepage = %q{http://rspec.info}
|
16
|
+
s.post_install_message = %q{**************************************************
|
17
|
+
|
18
|
+
Thank you for installing rspec-rails-1.2.2
|
19
|
+
|
20
|
+
If you are upgrading, do this in each of your rails apps
|
21
|
+
that you want to upgrade:
|
22
|
+
|
23
|
+
$ ruby script/generate rspec
|
24
|
+
|
25
|
+
Please be sure to read History.rdoc and Upgrade.rdoc
|
26
|
+
for useful information about this release.
|
27
|
+
|
28
|
+
**************************************************
|
29
|
+
}
|
30
|
+
s.rdoc_options = ["--main", "README.rdoc"]
|
31
|
+
s.require_paths = ["lib"]
|
32
|
+
s.rubyforge_project = %q{rspec}
|
33
|
+
s.rubygems_version = %q{1.3.1}
|
34
|
+
s.summary = %q{rspec-rails 1.2.2}
|
35
|
+
|
36
|
+
if s.respond_to? :specification_version then
|
37
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
38
|
+
s.specification_version = 2
|
39
|
+
|
40
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
41
|
+
s.add_runtime_dependency(%q<rspec>, ["= 1.2.2"])
|
42
|
+
s.add_runtime_dependency(%q<rack>, [">= 0.4.0"])
|
43
|
+
s.add_development_dependency(%q<cucumber>, [">= 0.1.16"])
|
44
|
+
s.add_development_dependency(%q<hoe>, [">= 1.12.1"])
|
45
|
+
else
|
46
|
+
s.add_dependency(%q<rspec>, ["= 1.2.2"])
|
47
|
+
s.add_dependency(%q<rack>, [">= 0.4.0"])
|
48
|
+
s.add_dependency(%q<cucumber>, [">= 0.1.16"])
|
49
|
+
s.add_dependency(%q<hoe>, [">= 1.12.1"])
|
50
|
+
end
|
51
|
+
else
|
52
|
+
s.add_dependency(%q<rspec>, ["= 1.2.2"])
|
53
|
+
s.add_dependency(%q<rack>, [">= 0.4.0"])
|
54
|
+
s.add_dependency(%q<cucumber>, [">= 0.1.16"])
|
55
|
+
s.add_dependency(%q<hoe>, [">= 1.12.1"])
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require File.dirname(__FILE__) + '/../../lib/autotest/rails_rspec'
|
3
|
+
require File.dirname(__FILE__) + '/../../../rspec/spec/autotest/autotest_matchers'
|
4
|
+
|
5
|
+
describe Autotest::RailsRspec, "file mapping" do
|
6
|
+
before(:each) do
|
7
|
+
@autotest = Autotest::RailsRspec.new
|
8
|
+
@autotest.hook :initialize
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should map model example to model" do
|
12
|
+
@autotest.should map_specs(['spec/models/thing_spec.rb']).
|
13
|
+
to('app/models/thing.rb')
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should map controller example to controller" do
|
17
|
+
@autotest.should map_specs(['spec/controllers/things_controller_spec.rb']).
|
18
|
+
to('app/controllers/things_controller.rb')
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should map view.rhtml" do
|
22
|
+
@autotest.should map_specs(['spec/views/things/index.rhtml_spec.rb']).
|
23
|
+
to('app/views/things/index.rhtml')
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should map view.rhtml with underscores in example filename" do
|
27
|
+
@autotest.should map_specs(['spec/views/things/index_rhtml_spec.rb']).
|
28
|
+
to('app/views/things/index.rhtml')
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should map view.html.erb" do
|
32
|
+
@autotest.should map_specs(['spec/views/things/index.html.erb_spec.rb']).
|
33
|
+
to('app/views/things/index.html.erb')
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "between routes.rb and things which depend on routes" do
|
37
|
+
it "should map routes.rb to controllers" do
|
38
|
+
@autotest.should map_specs(['spec/controllers/things_controller_spec.rb']).
|
39
|
+
to('config/routes.rb')
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should map routes.rb to views" do
|
43
|
+
@autotest.should map_specs(['spec/views/things/action.html.erb_spec.rb']).
|
44
|
+
to('config/routes.rb')
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should map routes.rb to helpers" do
|
48
|
+
@autotest.should map_specs(['spec/helpers/things_helper_spec.rb']).
|
49
|
+
to('config/routes.rb')
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should map routing example to routes" do
|
53
|
+
@autotest.should map_specs(['spec/routing/thing_spec.rb']).
|
54
|
+
to('config/routes.rb')
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "between the config and specs" do
|
59
|
+
['spec/controllers/things_controller_spec.rb',
|
60
|
+
'spec/views/things/action.html.erb_spec.rb',
|
61
|
+
'spec/helpers/things_helper_spec.rb',
|
62
|
+
'spec/routing/thing_spec.rb',
|
63
|
+
'spec/models/thing_spec.rb'].each do |file_path|
|
64
|
+
|
65
|
+
it "should map environment.rb to #{file_path}" do
|
66
|
+
@autotest.should map_specs([file_path]).
|
67
|
+
to('config/environment.rb')
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should map environments/test.rb to #{file_path}" do
|
71
|
+
@autotest.should map_specs([file_path]).
|
72
|
+
to('config/environments/test.rb')
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should map boot.rb to #{file_path}" do
|
76
|
+
@autotest.should map_specs([file_path]).
|
77
|
+
to('config/boot.rb')
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should map spec_helper.rb to #{file_path}" do
|
81
|
+
@autotest.should map_specs([file_path]).
|
82
|
+
to('spec/spec_helper.rb')
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
data/spec/rails_suite.rb
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
class ControllerSpecController < ActionController::Base
|
2
|
+
before_filter :raise_error, :only => :action_with_skipped_before_filter
|
3
|
+
|
4
|
+
def raise_error
|
5
|
+
raise "from a before filter"
|
6
|
+
end
|
7
|
+
|
8
|
+
skip_before_filter :raise_error
|
9
|
+
|
10
|
+
prepend_view_path File.join(File.dirname(__FILE__), "..", "views")
|
11
|
+
|
12
|
+
def some_action
|
13
|
+
render :template => "template/that/does/not/actually/exist"
|
14
|
+
end
|
15
|
+
|
16
|
+
def action_with_template
|
17
|
+
render :template => "controller_spec/action_with_template"
|
18
|
+
end
|
19
|
+
|
20
|
+
def action_which_sets_flash
|
21
|
+
flash[:flash_key] = "flash value"
|
22
|
+
render :text => ""
|
23
|
+
end
|
24
|
+
|
25
|
+
def action_which_gets_session
|
26
|
+
raise "expected #{params[:session_key].inspect}\ngot #{session[:session_key].inspect}" unless (session[:session_key] == params[:expected])
|
27
|
+
render :text => ""
|
28
|
+
end
|
29
|
+
|
30
|
+
def action_which_sets_session
|
31
|
+
session[:session_key] = "session value"
|
32
|
+
end
|
33
|
+
|
34
|
+
def action_which_gets_cookie
|
35
|
+
raise "expected #{params[:expected].inspect}, got #{cookies[:cookie_key].inspect}" unless (cookies[:cookie_key] == params[:expected])
|
36
|
+
render :text => ""
|
37
|
+
end
|
38
|
+
|
39
|
+
def action_which_sets_cookie
|
40
|
+
cookies['cookie_key'] = params[:value]
|
41
|
+
render :text => ""
|
42
|
+
end
|
43
|
+
|
44
|
+
def action_with_partial
|
45
|
+
render :partial => "controller_spec/partial"
|
46
|
+
end
|
47
|
+
|
48
|
+
def action_with_partial_with_object
|
49
|
+
render :partial => "controller_spec/partial", :object => params[:thing]
|
50
|
+
end
|
51
|
+
|
52
|
+
def action_with_partial_with_locals
|
53
|
+
render :partial => "controller_spec/partial", :locals => {:thing => params[:thing]}
|
54
|
+
end
|
55
|
+
|
56
|
+
def action_with_errors_in_template
|
57
|
+
render :template => "controller_spec/action_with_errors_in_template"
|
58
|
+
end
|
59
|
+
|
60
|
+
def action_setting_the_assigns_hash
|
61
|
+
@indirect_assigns_key = :indirect_assigns_key_value
|
62
|
+
end
|
63
|
+
|
64
|
+
def action_setting_flash_after_session_reset
|
65
|
+
reset_session
|
66
|
+
flash[:after_reset] = "available"
|
67
|
+
end
|
68
|
+
|
69
|
+
def action_setting_flash_before_session_reset
|
70
|
+
flash[:before_reset] = 'available'
|
71
|
+
reset_session
|
72
|
+
end
|
73
|
+
|
74
|
+
def action_with_render_update
|
75
|
+
render :update do |page|
|
76
|
+
page.replace :bottom, 'replace_me',
|
77
|
+
:partial => 'non_existent_partial'
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def action_with_skipped_before_filter
|
82
|
+
render :text => ""
|
83
|
+
end
|
84
|
+
|
85
|
+
def action_that_renders_inline
|
86
|
+
render :inline => "<%= 'inline code' %>"
|
87
|
+
end
|
88
|
+
|
89
|
+
def action_that_assigns_false_to_a_variable
|
90
|
+
@a_variable = false
|
91
|
+
render :text => ""
|
92
|
+
end
|
93
|
+
|
94
|
+
def action_with_two_arg_render
|
95
|
+
render :update, :status => 404 do |page|
|
96
|
+
page.visual_effect :highlight, 'user_list'
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
class RescuedError < Exception; end
|
101
|
+
class UnRescuedError < Exception; end
|
102
|
+
|
103
|
+
rescue_from RescuedError do |e|
|
104
|
+
render :text => 'Rescued!'
|
105
|
+
end
|
106
|
+
|
107
|
+
def rescued_error_action
|
108
|
+
raise RescuedError
|
109
|
+
end
|
110
|
+
|
111
|
+
def un_rescued_error_action
|
112
|
+
raise UnRescuedError
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
class ControllerInheritingFromApplicationControllerController < ApplicationController
|
117
|
+
def action_with_inherited_before_filter
|
118
|
+
render :text => ""
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
This is an example file to download.
|
@@ -0,0 +1,70 @@
|
|
1
|
+
class RedirectSpecController < ApplicationController
|
2
|
+
|
3
|
+
def action_with_no_redirect
|
4
|
+
render :text => "this is just here to keep this from causing a MissingTemplate error"
|
5
|
+
end
|
6
|
+
|
7
|
+
def action_with_redirect_to_somewhere
|
8
|
+
redirect_to :action => 'somewhere'
|
9
|
+
end
|
10
|
+
|
11
|
+
def action_with_redirect_to_other_somewhere
|
12
|
+
redirect_to :controller => 'render_spec', :action => 'text_action'
|
13
|
+
end
|
14
|
+
|
15
|
+
def action_with_redirect_to_somewhere_and_return
|
16
|
+
redirect_to :action => 'somewhere' and return
|
17
|
+
render :text => "this is after the return"
|
18
|
+
end
|
19
|
+
|
20
|
+
def somewhere
|
21
|
+
render :text => "this is just here to keep this from causing a MissingTemplate error"
|
22
|
+
end
|
23
|
+
|
24
|
+
def action_with_redirect_to_rspec_site
|
25
|
+
redirect_to "http://rspec.rubyforge.org"
|
26
|
+
end
|
27
|
+
|
28
|
+
def action_with_redirect_back
|
29
|
+
redirect_to :back
|
30
|
+
end
|
31
|
+
|
32
|
+
def action_with_redirect_in_respond_to
|
33
|
+
respond_to do |wants|
|
34
|
+
wants.html { redirect_to :action => 'somewhere' }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def action_with_redirect_which_creates_query_string
|
39
|
+
redirect_to :action => "somewhere", :id => 1111, :param1 => "value1", :param2 => "value2"
|
40
|
+
end
|
41
|
+
|
42
|
+
# note: sometimes this is the URL which rails will generate from the hash in
|
43
|
+
# action_with_redirect_which_creates_query_string
|
44
|
+
def action_with_redirect_with_query_string_order1
|
45
|
+
redirect_to "http://test.host/redirect_spec/somewhere/1111?param1=value1¶m2=value2"
|
46
|
+
end
|
47
|
+
|
48
|
+
# note: sometimes this is the URL which rails will generate from the hash in
|
49
|
+
# action_with_redirect_which_creates_query_string
|
50
|
+
def action_with_redirect_with_query_string_order2
|
51
|
+
redirect_to "http://test.host/redirect_spec/somewhere/1111?param2=value2¶m1=value1"
|
52
|
+
end
|
53
|
+
|
54
|
+
def action_with_redirect_to_unroutable_url_inside_app
|
55
|
+
redirect_to :controller => "nonexistant", :action => "none"
|
56
|
+
end
|
57
|
+
|
58
|
+
def action_with_method_restriction
|
59
|
+
render :text => ''
|
60
|
+
end
|
61
|
+
|
62
|
+
def action_to_redirect_to_action_with_method_restriction
|
63
|
+
redirect_to :action => 'action_with_method_restriction'
|
64
|
+
end
|
65
|
+
|
66
|
+
def action_with_redirect_to_somewhere_with_status
|
67
|
+
redirect_to :action => 'somewhere', :status => 301
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class RenderSpecController < ApplicationController
|
2
|
+
prepend_view_path File.join(File.dirname(__FILE__), "..", "views")
|
3
|
+
|
4
|
+
def some_action
|
5
|
+
respond_to do |format|
|
6
|
+
format.html
|
7
|
+
format.js
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def action_which_renders_template_from_other_controller
|
12
|
+
render :template => 'controller_spec/action_with_template'
|
13
|
+
end
|
14
|
+
|
15
|
+
def text_action
|
16
|
+
render :text => "this is the text for this action"
|
17
|
+
end
|
18
|
+
|
19
|
+
def action_with_partial
|
20
|
+
render :partial => "a_partial"
|
21
|
+
end
|
22
|
+
|
23
|
+
def action_that_renders_nothing
|
24
|
+
render :nothing => true
|
25
|
+
end
|
26
|
+
|
27
|
+
def action_with_alternate_layout
|
28
|
+
render :layout => 'simple'
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
class RjsSpecController < ApplicationController
|
2
|
+
prepend_view_path File.join(File.dirname(__FILE__), "..", "views")
|
3
|
+
|
4
|
+
def replace_html
|
5
|
+
end
|
6
|
+
|
7
|
+
def insert_html
|
8
|
+
end
|
9
|
+
|
10
|
+
def replace
|
11
|
+
end
|
12
|
+
|
13
|
+
def hide_div
|
14
|
+
end
|
15
|
+
|
16
|
+
def hide_page_element
|
17
|
+
end
|
18
|
+
|
19
|
+
def replace_html_with_partial
|
20
|
+
end
|
21
|
+
|
22
|
+
def render_replace_html
|
23
|
+
render :update do |page|
|
24
|
+
page.replace_html 'mydiv', 'replacement text'
|
25
|
+
page.replace_html 'myotherdiv', 'other replacement text'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def render_replace_html_with_partial
|
30
|
+
render :update do |page|
|
31
|
+
page.replace_html 'mydiv', :partial => 'rjs_spec/replacement_partial'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def render_insert_html
|
36
|
+
render :update do |page|
|
37
|
+
page.insert_html 'mydiv', 'replacement text'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def render_replace
|
42
|
+
render :update do |page|
|
43
|
+
page.replace 'mydiv', 'replacement text'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def render_hide_div
|
48
|
+
render :update do |page|
|
49
|
+
page.hide 'mydiv'
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def render_hide_page_element
|
54
|
+
render :update do |page|
|
55
|
+
page['mydiv'].hide
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module ExplicitHelper
|
2
|
+
def method_in_explicit_helper
|
3
|
+
"<div>This is text from a method in the ExplicitHelper</div>"
|
4
|
+
end
|
5
|
+
|
6
|
+
# this is an example of a method spec'able with eval_erb in helper specs
|
7
|
+
def prepend(arg, &block)
|
8
|
+
begin # rails edge after 2.1.0 eliminated need for block.binding
|
9
|
+
concat(arg) + block.call
|
10
|
+
rescue
|
11
|
+
concat(arg, block.binding) + block.call
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def named_url
|
16
|
+
rspec_on_rails_specs_url
|
17
|
+
end
|
18
|
+
|
19
|
+
def named_path
|
20
|
+
rspec_on_rails_specs_path
|
21
|
+
end
|
22
|
+
|
23
|
+
def params_foo
|
24
|
+
params[:foo]
|
25
|
+
end
|
26
|
+
|
27
|
+
def session_foo
|
28
|
+
session[:foo]
|
29
|
+
end
|
30
|
+
|
31
|
+
def request_thing
|
32
|
+
request.thing
|
33
|
+
end
|
34
|
+
|
35
|
+
def flash_thing
|
36
|
+
flash[:thing]
|
37
|
+
end
|
38
|
+
|
39
|
+
def method_using_output_buffer
|
40
|
+
concat("the_text_from_concat")
|
41
|
+
end
|
42
|
+
|
43
|
+
def method_using_template
|
44
|
+
update_page { |p| p["#some_id"].replace_html "" }
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module ViewSpecHelper
|
2
|
+
def method_in_helper
|
3
|
+
"<div>This is text from a method in the ViewSpecHelper</div>"
|
4
|
+
end
|
5
|
+
|
6
|
+
def method_in_template_with_partial
|
7
|
+
"<div>method_in_template_with_partial in ViewSpecHelper</div>"
|
8
|
+
end
|
9
|
+
|
10
|
+
def method_in_partial
|
11
|
+
"<div>method_in_partial in ViewSpecHelper</div>"
|
12
|
+
end
|
13
|
+
end
|