mcmire-rspec-rails 1.1.99.9
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/History.txt +174 -0
- data/License.txt +33 -0
- data/Manifest.txt +164 -0
- data/README.txt +45 -0
- data/Rakefile +63 -0
- data/TODO.txt +1 -0
- data/Upgrade.markdown +52 -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 +37 -0
- data/generators/rspec/templates/previous_failures.txt +0 -0
- data/generators/rspec/templates/rcov.opts +2 -0
- data/generators/rspec/templates/rspec.rake +177 -0
- data/generators/rspec/templates/script/autospec +5 -0
- data/generators/rspec/templates/script/spec +4 -0
- data/generators/rspec/templates/script/spec_server +37 -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.rb +37 -0
- data/lib/spec/rails/example.rb +53 -0
- data/lib/spec/rails/example/assigns_hash_proxy.rb +39 -0
- data/lib/spec/rails/example/controller_example_group.rb +242 -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 +167 -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_helpers.rb +68 -0
- data/lib/spec/rails/example/view_example_group.rb +186 -0
- data/lib/spec/rails/extensions.rb +15 -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 +43 -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 +48 -0
- data/lib/spec/rails/interop/testcase.rb +14 -0
- data/lib/spec/rails/matchers.rb +40 -0
- data/lib/spec/rails/matchers/ar_be_valid.rb +44 -0
- data/lib/spec/rails/matchers/assert_select.rb +131 -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/mocks.rb +135 -0
- data/lib/spec/rails/spec_server.rb +97 -0
- data/lib/spec/rails/story_adapter.rb +79 -0
- data/lib/spec/rails/version.rb +16 -0
- data/rspec-rails.gemspec +39 -0
- data/spec/autotest/mappings_spec.rb +36 -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 +116 -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.rhtml +0 -0
- data/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml +1 -0
- data/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml +1 -0
- data/spec/resources/views/controller_spec/action_setting_the_assigns_hash.rhtml +0 -0
- data/spec/resources/views/controller_spec/action_with_errors_in_template.rhtml +1 -0
- data/spec/resources/views/controller_spec/action_with_template.rhtml +1 -0
- data/spec/resources/views/layouts/application.rhtml +0 -0
- data/spec/resources/views/layouts/simple.rhtml +0 -0
- data/spec/resources/views/objects/_object.html.erb +1 -0
- data/spec/resources/views/render_spec/_a_partial.rhtml +0 -0
- data/spec/resources/views/render_spec/action_with_alternate_layout.rhtml +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/render_spec/some_action.rjs +1 -0
- data/spec/resources/views/rjs_spec/_replacement_partial.rhtml +1 -0
- data/spec/resources/views/rjs_spec/hide_div.rjs +1 -0
- data/spec/resources/views/rjs_spec/hide_page_element.rjs +1 -0
- data/spec/resources/views/rjs_spec/insert_html.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace_html.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace_html_with_partial.rjs +1 -0
- data/spec/resources/views/rjs_spec/visual_effect.rjs +1 -0
- data/spec/resources/views/rjs_spec/visual_toggle_effect.rjs +1 -0
- data/spec/resources/views/tag_spec/no_tags.rhtml +1 -0
- data/spec/resources/views/tag_spec/single_div_with_no_attributes.rhtml +1 -0
- data/spec/resources/views/tag_spec/single_div_with_one_attribute.rhtml +1 -0
- data/spec/resources/views/view_spec/_partial.rhtml +2 -0
- data/spec/resources/views/view_spec/_partial_used_twice.rhtml +0 -0
- data/spec/resources/views/view_spec/_partial_with_local_variable.rhtml +1 -0
- data/spec/resources/views/view_spec/_partial_with_sub_partial.rhtml +1 -0
- data/spec/resources/views/view_spec/_spacer.rhtml +1 -0
- data/spec/resources/views/view_spec/accessor.rhtml +5 -0
- data/spec/resources/views/view_spec/block_helper.rhtml +3 -0
- data/spec/resources/views/view_spec/entry_form.rhtml +2 -0
- data/spec/resources/views/view_spec/explicit_helper.rhtml +2 -0
- data/spec/resources/views/view_spec/foo/show.rhtml +1 -0
- data/spec/resources/views/view_spec/implicit_helper.rhtml +2 -0
- data/spec/resources/views/view_spec/multiple_helpers.rhtml +3 -0
- data/spec/resources/views/view_spec/path_params.html.erb +1 -0
- data/spec/resources/views/view_spec/should_not_receive.rhtml +3 -0
- data/spec/resources/views/view_spec/template_with_partial.rhtml +5 -0
- data/spec/resources/views/view_spec/template_with_partial_using_collection.rhtml +3 -0
- data/spec/resources/views/view_spec/template_with_partial_with_array.rhtml +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 +275 -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 +206 -0
- data/spec/spec/rails/example/model_example_group_spec.rb +20 -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 +811 -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 +183 -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 +78 -0
- metadata +262 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'drb/drb'
|
2
|
+
require 'rbconfig'
|
3
|
+
|
4
|
+
# This is based on Florian Weber's TDDMate
|
5
|
+
module Spec
|
6
|
+
module Rails
|
7
|
+
class SpecServer
|
8
|
+
class << self
|
9
|
+
def restart_test_server
|
10
|
+
puts "restarting"
|
11
|
+
config = ::Config::CONFIG
|
12
|
+
ruby = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT']
|
13
|
+
command_line = [ruby, $0, ARGV].flatten.join(' ')
|
14
|
+
exec(command_line)
|
15
|
+
end
|
16
|
+
|
17
|
+
def daemonize(pid_file = nil)
|
18
|
+
return yield if $DEBUG
|
19
|
+
pid = Process.fork{
|
20
|
+
Process.setsid
|
21
|
+
Dir.chdir(RAILS_ROOT)
|
22
|
+
trap("SIGINT"){ exit! 0 }
|
23
|
+
trap("SIGTERM"){ exit! 0 }
|
24
|
+
trap("SIGHUP"){ restart_test_server }
|
25
|
+
File.open("/dev/null"){|f|
|
26
|
+
STDERR.reopen f
|
27
|
+
STDIN.reopen f
|
28
|
+
STDOUT.reopen f
|
29
|
+
}
|
30
|
+
run
|
31
|
+
}
|
32
|
+
puts "spec_server launched (PID: %d)" % pid
|
33
|
+
File.open(pid_file,"w"){|f| f.puts pid } if pid_file
|
34
|
+
exit! 0
|
35
|
+
end
|
36
|
+
|
37
|
+
def run
|
38
|
+
trap("USR2") { ::Spec::Rails::SpecServer.restart_test_server } if Signal.list.has_key?("USR2")
|
39
|
+
DRb.start_service("druby://127.0.0.1:8989", ::Spec::Rails::SpecServer.new)
|
40
|
+
DRb.thread.join
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def run(argv, stderr, stdout)
|
45
|
+
$stdout = stdout
|
46
|
+
$stderr = stderr
|
47
|
+
|
48
|
+
::Rails::Configuration.extend Module.new {def cache_classes; false; end}
|
49
|
+
|
50
|
+
::ActiveSupport.const_defined?(:Dependencies) ?
|
51
|
+
::ActiveSupport::Dependencies.mechanism = :load :
|
52
|
+
::Dependencies.mechanism = :load
|
53
|
+
|
54
|
+
require 'action_controller/dispatcher'
|
55
|
+
dispatcher = ::ActionController::Dispatcher.new($stdout)
|
56
|
+
|
57
|
+
if ::ActionController::Dispatcher.respond_to?(:reload_application)
|
58
|
+
::ActionController::Dispatcher.reload_application
|
59
|
+
else
|
60
|
+
dispatcher.reload_application
|
61
|
+
end
|
62
|
+
|
63
|
+
if Object.const_defined?(:Fixtures) && Fixtures.respond_to?(:reset_cache)
|
64
|
+
Fixtures.reset_cache
|
65
|
+
end
|
66
|
+
|
67
|
+
unless Object.const_defined?(:ApplicationController)
|
68
|
+
%w(application_controller.rb application.rb).each do |name|
|
69
|
+
require_dependency(name) if File.exists?("#{RAILS_ROOT}/app/controllers/#{name}")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
load "#{RAILS_ROOT}/spec/spec_helper.rb"
|
73
|
+
|
74
|
+
if in_memory_database?
|
75
|
+
load "#{RAILS_ROOT}/db/schema.rb"
|
76
|
+
ActiveRecord::Migrator.up('db/migrate')
|
77
|
+
end
|
78
|
+
|
79
|
+
::Spec::Runner::CommandLine.run(
|
80
|
+
::Spec::Runner::OptionParser.parse(
|
81
|
+
argv,
|
82
|
+
$stderr,
|
83
|
+
$stdout
|
84
|
+
)
|
85
|
+
)
|
86
|
+
|
87
|
+
dispatcher.cleanup_application if dispatcher.respond_to?(:cleanup_application)
|
88
|
+
end
|
89
|
+
|
90
|
+
def in_memory_database?
|
91
|
+
ENV["RAILS_ENV"] == "test" and
|
92
|
+
::ActiveRecord::Base.connection.class.to_s == "ActiveRecord::ConnectionAdapters::SQLite3Adapter" and
|
93
|
+
::Rails::Configuration.new.database_configuration['test']['database'] == ':memory:'
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -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,16 @@
|
|
1
|
+
module Spec
|
2
|
+
module Rails
|
3
|
+
module VERSION #:nodoc:
|
4
|
+
unless defined? MAJOR
|
5
|
+
MAJOR = 1
|
6
|
+
MINOR = 1
|
7
|
+
TINY = 99
|
8
|
+
MINESCULE = 9
|
9
|
+
|
10
|
+
STRING = [MAJOR, MINOR, TINY, MINESCULE].compact.join('.')
|
11
|
+
|
12
|
+
SUMMARY = "rspec-rails #{STRING}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/rspec-rails.gemspec
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{rspec-rails}
|
5
|
+
s.version = "1.1.99.9"
|
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-02-24}
|
10
|
+
s.description = %q{Behaviour Driven Development for Ruby on Rails.}
|
11
|
+
s.email = ["rspec-devel@rubyforge.org"]
|
12
|
+
s.extra_rdoc_files = ["History.txt", "License.txt", "Manifest.txt", "README.txt", "TODO.txt", "generators/rspec/templates/previous_failures.txt"]
|
13
|
+
s.files = ["History.txt", "License.txt", "Manifest.txt", "README.txt", "Rakefile", "TODO.txt", "Upgrade.markdown", "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_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/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.rhtml", "spec/resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml", "spec/resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml", "spec/resources/views/controller_spec/action_setting_the_assigns_hash.rhtml", "spec/resources/views/controller_spec/action_with_errors_in_template.rhtml", "spec/resources/views/controller_spec/action_with_template.rhtml", "spec/resources/views/layouts/application.rhtml", "spec/resources/views/layouts/simple.rhtml", "spec/resources/views/objects/_object.html.erb", "spec/resources/views/render_spec/_a_partial.rhtml", "spec/resources/views/render_spec/action_with_alternate_layout.rhtml", "spec/resources/views/render_spec/some_action.html.erb", "spec/resources/views/render_spec/some_action.js.rjs", "spec/resources/views/render_spec/some_action.rjs", "spec/resources/views/rjs_spec/_replacement_partial.rhtml", "spec/resources/views/rjs_spec/hide_div.rjs", "spec/resources/views/rjs_spec/hide_page_element.rjs", "spec/resources/views/rjs_spec/insert_html.rjs", "spec/resources/views/rjs_spec/replace.rjs", "spec/resources/views/rjs_spec/replace_html.rjs", "spec/resources/views/rjs_spec/replace_html_with_partial.rjs", "spec/resources/views/rjs_spec/visual_effect.rjs", "spec/resources/views/rjs_spec/visual_toggle_effect.rjs", "spec/resources/views/tag_spec/no_tags.rhtml", "spec/resources/views/tag_spec/single_div_with_no_attributes.rhtml", "spec/resources/views/tag_spec/single_div_with_one_attribute.rhtml", "spec/resources/views/view_spec/_partial.rhtml", "spec/resources/views/view_spec/_partial_used_twice.rhtml", "spec/resources/views/view_spec/_partial_with_local_variable.rhtml", "spec/resources/views/view_spec/_partial_with_sub_partial.rhtml", "spec/resources/views/view_spec/_spacer.rhtml", "spec/resources/views/view_spec/accessor.rhtml", "spec/resources/views/view_spec/block_helper.rhtml", "spec/resources/views/view_spec/entry_form.rhtml", "spec/resources/views/view_spec/explicit_helper.rhtml", "spec/resources/views/view_spec/foo/show.rhtml", "spec/resources/views/view_spec/implicit_helper.rhtml", "spec/resources/views/view_spec/multiple_helpers.rhtml", "spec/resources/views/view_spec/path_params.html.erb", "spec/resources/views/view_spec/should_not_receive.rhtml", "spec/resources/views/view_spec/template_with_partial.rhtml", "spec/resources/views/view_spec/template_with_partial_using_collection.rhtml", "spec/resources/views/view_spec/template_with_partial_with_array.rhtml", "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/shared_behaviour_spec.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.rdoc_options = ["--main", "README.txt"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubyforge_project = %q{rspec}
|
19
|
+
s.rubygems_version = %q{1.3.1}
|
20
|
+
s.summary = %q{rspec-rails 1.1.99.9}
|
21
|
+
|
22
|
+
if s.respond_to? :specification_version then
|
23
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
24
|
+
s.specification_version = 2
|
25
|
+
|
26
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
27
|
+
s.add_runtime_dependency(%q<dchelimsky-rspec>, ["= 1.1.99.9"])
|
28
|
+
s.add_runtime_dependency(%q<rack>, [">= 0.4.0"])
|
29
|
+
s.add_development_dependency(%q<cucumber>, [">= 0.1.13"])
|
30
|
+
s.add_development_dependency(%q<hoe>, [">= 1.8.3"])
|
31
|
+
else
|
32
|
+
s.add_dependency(%q<dchelimsky-rspec>, ["= 1.1.99.9"])
|
33
|
+
s.add_dependency(%q<rack>, [">= 0.4.0"])
|
34
|
+
end
|
35
|
+
else
|
36
|
+
s.add_dependency(%q<dchelimsky-rspec>, ["= 1.1.99.9"])
|
37
|
+
s.add_dependency(%q<rack>, [">= 0.4.0"])
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,36 @@
|
|
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
|
+
end
|
data/spec/rails_suite.rb
ADDED
@@ -0,0 +1,116 @@
|
|
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_assigns_false_to_a_variable
|
86
|
+
@a_variable = false
|
87
|
+
render :text => ""
|
88
|
+
end
|
89
|
+
|
90
|
+
def action_with_two_arg_render
|
91
|
+
render :update, :status => 404 do |page|
|
92
|
+
page.visual_effect :highlight, 'user_list'
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
class RescuedError < Exception; end
|
97
|
+
class UnRescuedError < Exception; end
|
98
|
+
|
99
|
+
rescue_from RescuedError do |e|
|
100
|
+
render :text => 'Rescued!'
|
101
|
+
end
|
102
|
+
|
103
|
+
def rescued_error_action
|
104
|
+
raise RescuedError
|
105
|
+
end
|
106
|
+
|
107
|
+
def un_rescued_error_action
|
108
|
+
raise UnRescuedError
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
class ControllerInheritingFromApplicationControllerController < ApplicationController
|
113
|
+
def action_with_inherited_before_filter
|
114
|
+
render :text => ""
|
115
|
+
end
|
116
|
+
end
|
@@ -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
|
+
|