aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/plugins/rspec_on_rails/spec
diff options
context:
space:
mode:
authorfrancis <francis>2008-01-23 01:56:35 +0000
committerfrancis <francis>2008-01-23 01:56:35 +0000
commit8bd6667c7885870af45522315f501a2b87340b1a (patch)
treef0cf687df6555e26e23d78d564df8338b6c10994 /vendor/plugins/rspec_on_rails/spec
parentf906a3ab0b3f1ed0f18e5b605787cfa7c084b19a (diff)
And add the new files in new rspec_on_rails
Diffstat (limited to 'vendor/plugins/rspec_on_rails/spec')
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/example/assigns_hash_proxy_spec.rb55
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/example/configuration_spec.rb83
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/example/controller_isolation_spec.rb43
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/example/controller_spec_spec.rb179
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/example/example_group_factory_spec.rb112
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/example/helper_spec_spec.rb118
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb64
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/example/model_spec_spec.rb18
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/example/shared_behaviour_spec.rb16
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/example/test_unit_assertion_accessibility_spec.rb33
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/example/view_spec_spec.rb249
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/matchers/have_text_spec.rb62
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/sample_spec.rb7
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/spec_server_spec.rb89
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails/spec_spec.rb11
-rw-r--r--vendor/plugins/rspec_on_rails/spec/rails_suite.rb7
16 files changed, 1146 insertions, 0 deletions
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/example/assigns_hash_proxy_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/example/assigns_hash_proxy_spec.rb
new file mode 100644
index 000000000..400fb829d
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/example/assigns_hash_proxy_spec.rb
@@ -0,0 +1,55 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+describe "An AssignsHashProxy" do
+ before(:each) do
+ @object = Object.new
+ @assigns = Hash.new
+ @object.stub!(:assigns).and_return(@assigns)
+ @proxy = Spec::Rails::Example::AssignsHashProxy.new(@object)
+ end
+
+ it "has [] accessor" do
+ @proxy['foo'] = 'bar'
+ @assigns['foo'].should == 'bar'
+ @proxy['foo'].should == 'bar'
+ end
+
+ it "works for symbol key" do
+ @assigns[:foo] = 2
+ @proxy[:foo].should == 2
+ end
+
+ it "checks for string key before symbol key" do
+ @assigns['foo'] = false
+ @assigns[:foo] = 2
+ @proxy[:foo].should == false
+ end
+
+ it "each method iterates through each element like a Hash" do
+ values = {
+ 'foo' => 1,
+ 'bar' => 2,
+ 'baz' => 3
+ }
+ @proxy['foo'] = values['foo']
+ @proxy['bar'] = values['bar']
+ @proxy['baz'] = values['baz']
+
+ @proxy.each do |key, value|
+ key.should == key
+ value.should == values[key]
+ end
+ end
+
+ it "delete method deletes the element of passed in key" do
+ @proxy['foo'] = 'bar'
+ @proxy.delete('foo').should == 'bar'
+ @proxy['foo'].should be_nil
+ end
+
+ it "has_key? detects the presence of a key" do
+ @proxy['foo'] = 'bar'
+ @proxy.has_key?('foo').should == true
+ @proxy.has_key?('bar').should == false
+ end
+end
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/example/configuration_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/example/configuration_spec.rb
new file mode 100644
index 000000000..91a1b265c
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/example/configuration_spec.rb
@@ -0,0 +1,83 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+module Spec
+ module Example
+ describe Configuration, :shared => true do
+ before(:each) { @config = Configuration.new }
+ end
+
+ describe Configuration, "#use_transactional_fixtures" do
+ it_should_behave_like "Spec::Example::Configuration"
+
+ it "should return Test::Unit::TestCase.use_transactional_fixtures" do
+ @config.use_transactional_fixtures.should == Test::Unit::TestCase.use_transactional_fixtures
+ end
+
+ it "should set Test::Unit::TestCase.use_transactional_fixtures to false" do
+ Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
+ example_group.should_receive(:use_transactional_fixtures=).with(false)
+ end
+ @config.use_transactional_fixtures = false
+ end
+
+ it "should set Test::Unit::TestCase.use_transactional_fixtures to true" do
+ Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
+ example_group.should_receive(:use_transactional_fixtures=).with(true)
+ end
+ @config.use_transactional_fixtures = true
+ end
+ end
+
+ describe Configuration, "#use_instantiated_fixtures" do
+ it_should_behave_like "Spec::Example::Configuration"
+
+ it "should return Test::Unit::TestCase.use_transactional_fixtures" do
+ @config.use_instantiated_fixtures.should == Test::Unit::TestCase.use_instantiated_fixtures
+ end
+
+ it "should set Test::Unit::TestCase.use_instantiated_fixtures to false" do
+ Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
+ example_group.should_receive(:use_instantiated_fixtures=).with(false)
+ end
+ @config.use_instantiated_fixtures = false
+ end
+
+ it "should set Test::Unit::TestCase.use_instantiated_fixtures to true" do
+ Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
+ example_group.should_receive(:use_instantiated_fixtures=).with(true)
+ end
+ @config.use_instantiated_fixtures = true
+ end
+ end
+
+ describe Configuration, "#fixture_path" do
+ it_should_behave_like "Spec::Example::Configuration"
+
+ it "should default to RAILS_ROOT + '/spec/fixtures'" do
+ @config.fixture_path.should == RAILS_ROOT + '/spec/fixtures'
+ Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
+ example_group.fixture_path.should == RAILS_ROOT + '/spec/fixtures'
+ end
+ end
+
+ it "should set fixture_path" do
+ @config.fixture_path = "/new/path"
+ @config.fixture_path.should == "/new/path"
+ Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
+ example_group.fixture_path.should == "/new/path"
+ end
+ end
+ end
+
+ describe Configuration, "#global_fixtures" do
+ it_should_behave_like "Spec::Example::Configuration"
+
+ it "should set fixtures on TestCase" do
+ Configuration::EXAMPLE_GROUP_CLASSES.each do |example_group|
+ example_group.should_receive(:fixtures).with(:blah)
+ end
+ @config.global_fixtures = [:blah]
+ end
+ end
+ end
+end
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/example/controller_isolation_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/example/controller_isolation_spec.rb
new file mode 100644
index 000000000..204db15d6
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/example/controller_isolation_spec.rb
@@ -0,0 +1,43 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+require 'controller_spec_controller'
+
+describe "a controller spec running in isolation mode", :type => :controller do
+ controller_name :controller_spec
+
+ it "should not care if the template doesn't exist" do
+ get 'some_action'
+ response.should be_success
+ response.should render_template("template/that/does/not/actually/exist")
+ end
+
+ it "should not care if the template has errors" do
+ get 'action_with_errors_in_template'
+ response.should be_success
+ response.should render_template("action_with_errors_in_template")
+ end
+end
+
+describe "a controller spec running in integration mode", :type => :controller do
+ controller_name :controller_spec
+ integrate_views
+
+ before(:each) do
+ controller.class.send(:define_method, :rescue_action) { |e| raise e }
+ end
+
+ it "should render a template" do
+ get 'action_with_template'
+ response.should be_success
+ response.should have_tag('div', 'This is action_with_template.rhtml')
+ end
+
+ it "should choke if the template doesn't exist" do
+ lambda { get 'some_action' }.should raise_error(ActionController::MissingTemplate)
+ response.should_not be_success
+ end
+
+ it "should choke if the template has errors" do
+ lambda { get 'action_with_errors_in_template' }.should raise_error(ActionView::TemplateError)
+ response.should_not be_success
+ end
+end
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/example/controller_spec_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/example/controller_spec_spec.rb
new file mode 100644
index 000000000..3cc861d83
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/example/controller_spec_spec.rb
@@ -0,0 +1,179 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+require 'controller_spec_controller'
+
+['integration', 'isolation'].each do |mode|
+ describe "A controller example running in #{mode} mode", :type => :controller do
+ controller_name :controller_spec
+ integrate_views if mode == 'integration'
+
+ it "should provide controller.session as session" do
+ get 'action_with_template'
+ session.should equal(controller.session)
+ end
+
+ it "should provide the same session object before and after the action" do
+ session_before = session
+ get 'action_with_template'
+ session.should equal(session_before)
+ end
+
+ it "should ensure controller.session is NOT nil before the action" do
+ controller.session.should_not be_nil
+ get 'action_with_template'
+ end
+
+ it "should ensure controller.session is NOT nil after the action" do
+ get 'action_with_template'
+ controller.session.should_not be_nil
+ end
+
+ it "should allow specifying a partial with partial name only" do
+ get 'action_with_partial'
+ response.should render_template("_partial")
+ end
+
+ it "should allow specifying a partial with expect_render" do
+ controller.expect_render(:partial => "controller_spec/partial")
+ get 'action_with_partial'
+ end
+
+ it "should allow specifying a partial with expect_render with object" do
+ controller.expect_render(:partial => "controller_spec/partial", :object => "something")
+ get 'action_with_partial_with_object', :thing => "something"
+ end
+
+ it "should allow specifying a partial with expect_render with locals" do
+ controller.expect_render(:partial => "controller_spec/partial", :locals => {:thing => "something"})
+ get 'action_with_partial_with_locals', :thing => "something"
+ end
+
+ it "should allow a path relative to RAILS_ROOT/app/views/ when specifying a partial" do
+ get 'action_with_partial'
+ response.should render_template("controller_spec/_partial")
+ end
+
+ it "should provide access to flash" do
+ get 'action_with_template'
+ flash[:flash_key].should == "flash value"
+ end
+
+ it "should provide access to flash values set after a session reset" do
+ get 'action_setting_flash_after_session_reset'
+ flash[:after_reset].should == "available"
+ end
+
+ it "should not provide access to flash values set before a session reset" do
+ get 'action_setting_flash_before_session_reset'
+ flash[:before_reset].should_not == "available"
+ end
+
+ it "should provide access to session" do
+ get 'action_with_template'
+ session[:session_key].should == "session value"
+ end
+
+ it "should support custom routes" do
+ route_for(:controller => "custom_route_spec", :action => "custom_route").should == "/custom_route"
+ end
+
+ it "should support existing routes" do
+ route_for(:controller => "controller_spec", :action => "some_action").should == "/controller_spec/some_action"
+ end
+
+ it "should generate params for custom routes" do
+ params_from(:get, '/custom_route').should == {:controller => "custom_route_spec", :action => "custom_route"}
+ end
+
+ it "should generate params for existing routes" do
+ params_from(:get, '/controller_spec/some_action').should == {:controller => "controller_spec", :action => "some_action"}
+ end
+
+ it "should expose instance vars through the assigns hash" do
+ get 'action_setting_the_assigns_hash'
+ assigns[:indirect_assigns_key].should == :indirect_assigns_key_value
+ end
+
+ it "should expose the assigns hash directly" do
+ get 'action_setting_the_assigns_hash'
+ assigns[:direct_assigns_key].should == :direct_assigns_key_value
+ end
+
+ it "should complain when calling should_receive(:render) on the controller" do
+ lambda {
+ controller.should_receive(:render)
+ }.should raise_error(RuntimeError, /should_receive\(:render\) has been disabled/)
+ end
+
+ it "should complain when calling stub!(:render) on the controller" do
+ lambda {
+ controller.stub!(:render)
+ }.should raise_error(RuntimeError, /stub!\(:render\) has been disabled/)
+ end
+
+ it "should NOT complain when calling should_receive with arguments other than :render" do
+ controller.should_receive(:anything_besides_render)
+ lambda {
+ controller.rspec_verify
+ }.should raise_error(Exception, /expected :anything_besides_render/)
+ end
+ end
+
+ describe "Given a controller spec for RedirectSpecController running in #{mode} mode", :type => :controller do
+ controller_name :redirect_spec
+ integrate_views if mode == 'integration'
+
+ it "a redirect should ignore the absence of a template" do
+ get 'action_with_redirect_to_somewhere'
+ response.should be_redirect
+ response.redirect_url.should == "http://test.host/redirect_spec/somewhere"
+ response.should redirect_to("http://test.host/redirect_spec/somewhere")
+ end
+
+ it "a call to response.should redirect_to should fail if no redirect" do
+ get 'action_with_no_redirect'
+ lambda {
+ response.redirect?.should be_true
+ }.should fail
+ lambda {
+ response.should redirect_to("http://test.host/redirect_spec/somewhere")
+ }.should fail_with("expected redirect to \"http://test.host/redirect_spec/somewhere\", got no redirect")
+ end
+ end
+
+ describe "Given a controller spec running in #{mode} mode" do
+ example_group = describe "A controller spec"
+ # , :type => :controller do
+ # integrate_views if mode == 'integration'
+ it "a spec in a context without controller_name set should fail with a useful warning" do
+ pending("need a new way to deal with examples that should_raise")
+ # ,
+ # :should_raise => [
+ # Spec::Expectations::ExpectationNotMetError,
+ # /You have to declare the controller name in controller specs/
+ # ] do
+ end
+ end
+
+end
+
+describe ControllerSpecController, :type => :controller do
+ it "should not require naming the controller if describe is passed a type" do
+ end
+end
+
+module Spec
+ module Rails
+ module Example
+ describe ControllerExampleGroup do
+ it "should clear its name from the description" do
+ group = describe("foo", :type => :controller) do
+ $nested_group = describe("bar") do
+ end
+ end
+ group.description.to_s.should == "foo"
+ $nested_group.description.to_s.should == "foo bar"
+ end
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/example/example_group_factory_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/example/example_group_factory_spec.rb
new file mode 100644
index 000000000..0803c2f29
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/example/example_group_factory_spec.rb
@@ -0,0 +1,112 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+module Spec
+ module Example
+ describe ExampleGroupFactory do
+ it "should return a ModelExampleGroup when given :type => :model" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :type => :model
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
+ end
+
+ it "should return a ModelExampleGroup when given :spec_path => '/blah/spec/models/'" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :spec_path => '/blah/spec/models/blah.rb'
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
+ end
+
+ it "should return a ModelExampleGroup when given :spec_path => '\\blah\\spec\\models\\' (windows format)" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :spec_path => '\\blah\\spec\\models\\blah.rb'
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
+ end
+
+ it "should return a RailsExampleGroup when given :spec_path => '/blah/spec/foo/' (anything other than controllers, views and helpers)" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :spec_path => '/blah/spec/foo/blah.rb'
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::RailsExampleGroup
+ end
+
+ it "should return a RailsExampleGroup when given :spec_path => '\\blah\\spec\\foo\\' (windows format) (anything other than controllers, views and helpers)" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :spec_path => '\\blah\\spec\\foo\\blah.rb'
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::RailsExampleGroup
+ end
+
+ it "should return a ViewExampleGroup when given :type => :model" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :type => :view
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
+ end
+
+ it "should return a ViewExampleGroup when given :spec_path => '/blah/spec/views/'" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :spec_path => '/blah/spec/views/blah.rb'
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
+ end
+
+ it "should return a ModelExampleGroup when given :spec_path => '\\blah\\spec\\views\\' (windows format)" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :spec_path => '\\blah\\spec\\views\\blah.rb'
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
+ end
+
+ it "should return a HelperExampleGroup when given :type => :helper" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :type => :helper
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
+ end
+
+ it "should return a HelperExampleGroup when given :spec_path => '/blah/spec/helpers/'" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :spec_path => '/blah/spec/helpers/blah.rb'
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
+ end
+
+ it "should return a ModelExampleGroup when given :spec_path => '\\blah\\spec\\helpers\\' (windows format)" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :spec_path => '\\blah\\spec\\helpers\\blah.rb'
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
+ end
+
+ it "should return a ControllerExampleGroup when given :type => :controller" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :type => :controller
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
+ end
+
+ it "should return a ControllerExampleGroup when given :spec_path => '/blah/spec/controllers/'" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :spec_path => '/blah/spec/controllers/blah.rb'
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
+ end
+
+ it "should return a ModelExampleGroup when given :spec_path => '\\blah\\spec\\controllers\\' (windows format)" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :spec_path => '\\blah\\spec\\controllers\\blah.rb'
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
+ end
+
+ it "should favor the :type over the :spec_path" do
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
+ "name", :spec_path => '/blah/spec/models/blah.rb', :type => :controller
+ ) {}
+ example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
+ end
+ end
+ end
+end
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/example/helper_spec_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/example/helper_spec_spec.rb
new file mode 100644
index 000000000..50defecc5
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/example/helper_spec_spec.rb
@@ -0,0 +1,118 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+Spec::Runner.configuration.global_fixtures = :people
+
+describe ExplicitHelper, :type => :helper do
+ it "should not require naming the helper if describe is passed a type" do
+ method_in_explicit_helper.should match(/text from a method/)
+ end
+end
+
+module Spec
+ module Rails
+ module Example
+ describe HelperExampleGroup, :type => :helper do
+ helper_name :explicit
+
+ it "should have direct access to methods defined in helpers" do
+ method_in_explicit_helper.should =~ /text from a method/
+ end
+
+ it "should have access to named routes" do
+ rspec_on_rails_specs_url.should == "http://test.host/rspec_on_rails_specs"
+ rspec_on_rails_specs_path.should == "/rspec_on_rails_specs"
+ end
+
+ it "should fail if the helper method deson't exist" do
+ lambda { non_existant_helper_method }.should raise_error(NameError)
+ end
+ end
+
+
+ describe HelperExampleGroup, "#eval_erb", :type => :helper do
+ helper_name :explicit
+
+ it "should support methods that accept blocks" do
+ eval_erb("<% prepend 'foo' do %>bar<% end %>").should == "foobar"
+ end
+ end
+
+ describe HelperExampleGroup, ".fixtures", :type => :helper do
+ helper_name :explicit
+ fixtures :animals
+
+ it "should load fixtures" do
+ pig = animals(:pig)
+ pig.class.should == Animal
+ end
+
+ it "should load global fixtures" do
+ lachie = people(:lachie)
+ lachie.class.should == Person
+ end
+ end
+
+ describe HelperExampleGroup, "included modules", :type => :helper do
+ helpers = [
+ ActionView::Helpers::ActiveRecordHelper,
+ ActionView::Helpers::AssetTagHelper,
+ ActionView::Helpers::BenchmarkHelper,
+ ActionView::Helpers::CacheHelper,
+ ActionView::Helpers::CaptureHelper,
+ ActionView::Helpers::DateHelper,
+ ActionView::Helpers::DebugHelper,
+ ActionView::Helpers::FormHelper,
+ ActionView::Helpers::FormOptionsHelper,
+ ActionView::Helpers::FormTagHelper,
+ ActionView::Helpers::JavaScriptHelper,
+ ActionView::Helpers::NumberHelper,
+ ActionView::Helpers::PrototypeHelper,
+ ActionView::Helpers::ScriptaculousHelper,
+ ActionView::Helpers::TagHelper,
+ ActionView::Helpers::TextHelper,
+ ActionView::Helpers::UrlHelper
+ ]
+ helpers << ActionView::Helpers::PaginationHelper rescue nil #removed for 2.0
+ helpers << ActionView::Helpers::JavaScriptMacrosHelper rescue nil #removed for 2.0
+ helpers.each do |helper_module|
+ it "should include #{helper_module}" do
+ self.class.ancestors.should include(helper_module)
+ end
+ end
+ end
+
+ # TODO: BT - Helper Examples should proxy method_missing to a Rails View instance.
+ # When that is done, remove this method
+ describe HelperExampleGroup, "#protect_against_forgery?", :type => :helper do
+ it "should return false" do
+ protect_against_forgery?.should be_false
+ end
+ end
+ end
+ end
+end
+
+module Bug11223
+ # see http://rubyforge.org/tracker/index.php?func=detail&aid=11223&group_id=797&atid=3149
+ describe 'Accessing flash from helper spec', :type => :helper do
+ it 'should not raise an error' do
+ lambda { flash['test'] }.should_not raise_error
+ end
+ end
+end
+
+module Spec
+ module Rails
+ module Example
+ describe HelperExampleGroup do
+ it "should clear its name from the description" do
+ group = describe("foo", :type => :helper) do
+ $nested_group = describe("bar") do
+ end
+ end
+ group.description.to_s.should == "foo"
+ $nested_group.description.to_s.should == "foo bar"
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
new file mode 100644
index 000000000..af6729333
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb
@@ -0,0 +1,64 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+describe "IvarProxy setup", :shared => true do
+ before do
+ @object = Object.new
+ @proxy = Spec::Rails::Example::IvarProxy.new(@object)
+ end
+end
+
+describe "IvarProxy" do
+ it_should_behave_like "IvarProxy setup"
+
+ it "has [] accessor" do
+ @proxy['foo'] = 'bar'
+ @object.instance_variable_get(:@foo).should == 'bar'
+ @proxy['foo'].should == 'bar'
+ end
+
+ it "iterates through each element like a Hash" do
+ values = {
+ 'foo' => 1,
+ 'bar' => 2,
+ 'baz' => 3
+ }
+ @proxy['foo'] = values['foo']
+ @proxy['bar'] = values['bar']
+ @proxy['baz'] = values['baz']
+
+ @proxy.each do |key, value|
+ key.should == key
+ value.should == values[key]
+ end
+ end
+
+ it "detects the presence of a key" do
+ @proxy['foo'] = 'bar'
+ @proxy.has_key?('foo').should == true
+ @proxy.has_key?('bar').should == false
+ end
+end
+
+describe "IvarProxy", "#delete" do
+ it_should_behave_like "IvarProxy setup"
+
+ it "deletes the element with key" do
+ @proxy['foo'] = 'bar'
+ @proxy.delete('foo').should == 'bar'
+ @proxy['foo'].should be_nil
+ end
+
+ it "deletes nil instance variables" do
+ @proxy['foo'] = nil
+ @object.instance_variables.should include("@foo")
+ @proxy.delete('foo').should == nil
+ @proxy['foo'].should be_nil
+ @object.instance_variables.should_not include("@foo")
+ end
+
+ it "returns nil when key does not exist" do
+ @proxy['foo'].should be_nil
+ @proxy.delete('foo').should == nil
+ @proxy['foo'].should be_nil
+ end
+end
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/example/model_spec_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/example/model_spec_spec.rb
new file mode 100644
index 000000000..938744dbb
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/example/model_spec_spec.rb
@@ -0,0 +1,18 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+module Spec
+ module Rails
+ module Example
+ describe ModelExampleGroup do
+ it "should clear its name from the description" do
+ group = describe("foo", :type => :model) do
+ $nested_group = describe("bar") do
+ end
+ end
+ group.description.to_s.should == "foo"
+ $nested_group.description.to_s.should == "foo bar"
+ end
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/example/shared_behaviour_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/example/shared_behaviour_spec.rb
new file mode 100644
index 000000000..ef19817d8
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/example/shared_behaviour_spec.rb
@@ -0,0 +1,16 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+describe "A shared view example_group", :shared => true do
+ it "should have some tag with some text" do
+ response.should have_tag('div', 'This is text from a method in the ViewSpecHelper')
+ end
+end
+
+describe "A view example_group", :type => :view do
+ it_should_behave_like "A shared view example_group"
+
+ before(:each) do
+ render "view_spec/implicit_helper"
+ end
+end
+
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/example/test_unit_assertion_accessibility_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/example/test_unit_assertion_accessibility_spec.rb
new file mode 100644
index 000000000..b7a838691
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/example/test_unit_assertion_accessibility_spec.rb
@@ -0,0 +1,33 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+describe "assert_equal", :shared => true do
+ it "like assert_equal" do
+ assert_equal 1, 1
+ lambda {
+ assert_equal 1, 2
+ }.should raise_error(Test::Unit::AssertionFailedError)
+ end
+end
+
+describe "A model spec should be able to access 'test/unit' assertions", :type => :model do
+ it_should_behave_like "assert_equal"
+end
+
+describe "A view spec should be able to access 'test/unit' assertions", :type => :view do
+ it_should_behave_like "assert_equal"
+end
+
+describe "A helper spec should be able to access 'test/unit' assertions", :type => :helper do
+ it_should_behave_like "assert_equal"
+end
+
+describe "A controller spec with integrated views should be able to access 'test/unit' assertions", :type => :controller do
+ controller_name :controller_spec
+ integrate_views
+ it_should_behave_like "assert_equal"
+end
+
+describe "A controller spec should be able to access 'test/unit' assertions", :type => :controller do
+ controller_name :controller_spec
+ it_should_behave_like "assert_equal"
+end
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/example/view_spec_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/example/view_spec_spec.rb
new file mode 100644
index 000000000..17e47eee8
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/example/view_spec_spec.rb
@@ -0,0 +1,249 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+describe "A template with an implicit helper", :type => :view do
+ before(:each) do
+ render "view_spec/implicit_helper"
+ end
+
+ it "should include the helper" do
+ response.should have_tag('div', :content => "This is text from a method in the ViewSpecHelper")
+ end
+
+ it "should include the application helper" do
+ response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
+ end
+
+ it "should have access to named routes" do
+ rspec_on_rails_specs_url.should == "http://test.host/rspec_on_rails_specs"
+ rspec_on_rails_specs_path.should == "/rspec_on_rails_specs"
+ end
+end
+
+describe "A template requiring an explicit helper", :type => :view do
+ before(:each) do
+ render "view_spec/explicit_helper", :helper => 'explicit'
+ end
+
+ it "should include the helper if specified" do
+ response.should have_tag('div', :content => "This is text from a method in the ExplicitHelper")
+ end
+
+ it "should include the application helper" do
+ response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
+ end
+end
+
+describe "A template requiring multiple explicit helpers", :type => :view do
+ before(:each) do
+ render "view_spec/multiple_helpers", :helpers => ['explicit', 'more_explicit']
+ end
+
+ it "should include all specified helpers" do
+ response.should have_tag('div', :content => "This is text from a method in the ExplicitHelper")
+ response.should have_tag('div', :content => "This is text from a method in the MoreExplicitHelper")
+ end
+
+ it "should include the application helper" do
+ response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
+ end
+end
+
+describe "Message Expectations on helper methods", :type => :view do
+ it "should work" do
+ template.should_receive(:method_in_plugin_application_helper).and_return('alternate message 1')
+ render "view_spec/implicit_helper"
+ response.body.should =~ /alternate message 1/
+ end
+
+ it "should work twice" do
+ template.should_receive(:method_in_plugin_application_helper).and_return('alternate message 2')
+ render "view_spec/implicit_helper"
+ response.body.should =~ /alternate message 2/
+ end
+end
+
+describe "A template that includes a partial", :type => :view do
+ def render!
+ render "view_spec/template_with_partial"
+ end
+
+ it "should render the enclosing template" do
+ render!
+ response.should have_tag('div', "method_in_partial in ViewSpecHelper")
+ end
+
+ it "should render the partial" do
+ render!
+ response.should have_tag('div', "method_in_template_with_partial in ViewSpecHelper")
+ end
+
+ it "should include the application helper" do
+ render!
+ response.should have_tag('div', "This is text from a method in the ApplicationHelper")
+ end
+
+ it "should pass expect_render with the right partial" do
+ template.expect_render(:partial => 'partial')
+ render!
+ template.verify_rendered
+ end
+
+ it "should fail expect_render with the wrong partial" do
+ template.expect_render(:partial => 'non_existent')
+ render!
+ begin
+ template.verify_rendered
+ rescue Spec::Mocks::MockExpectationError => e
+ ensure
+ e.backtrace.find{|line| line =~ /view_spec_spec\.rb\:92/}.should_not be_nil
+ end
+ end
+
+ it "should pass expect_render when a partial is expected twice and happens twice" do
+ template.expect_render(:partial => 'partial_used_twice').twice
+ render!
+ template.verify_rendered
+ end
+
+ it "should pass expect_render when a partial is expected once and happens twice" do
+ template.expect_render(:partial => 'partial_used_twice')
+ render!
+ begin
+ template.verify_rendered
+ rescue Spec::Mocks::MockExpectationError => e
+ ensure
+ e.backtrace.find{|line| line =~ /view_spec_spec\.rb\:109/}.should_not be_nil
+ end
+ end
+
+ it "should fail expect_render with the right partial but wrong options" do
+ template.expect_render(:partial => 'partial', :locals => {:thing => Object.new})
+ render!
+ lambda {template.verify_rendered}.should raise_error(Spec::Mocks::MockExpectationError)
+ end
+end
+
+describe "A partial that includes a partial", :type => :view do
+ it "should support expect_render with nested partial" do
+ obj = Object.new
+ template.expect_render(:partial => 'partial', :object => obj)
+ render :partial => "view_spec/partial_with_sub_partial", :locals => { :partial => obj }
+ end
+end
+
+describe "A view that includes a partial using :collection and :spacer_template", :type => :view do
+ it "should render the partial w/ spacer_tamplate" do
+ render "view_spec/template_with_partial_using_collection"
+ response.should have_tag('div',/method_in_partial/)
+ response.should have_tag('div',/ApplicationHelper/)
+ response.should have_tag('div',/ViewSpecHelper/)
+ response.should have_tag('hr#spacer')
+ end
+
+ it "should render the partial" do
+ template.expect_render(:partial => 'partial',
+ :collection => ['Alice', 'Bob'],
+ :spacer_template => 'spacer')
+ render "view_spec/template_with_partial_using_collection"
+ end
+
+end
+
+describe "A view that includes a partial using an array as partial_path", :type => :view do
+ before(:each) do
+ module ActionView::Partials
+ def render_template_with_partial_with_array_support(partial_path, local_assigns = nil, deprecated_local_assigns = nil)
+ if partial_path.is_a?(Array)
+ "Array Partial"
+ else
+ render_partial_without_array_support(partial_path, local_assigns, deprecated_local_assigns)
+ end
+ end
+
+ alias :render_partial_without_array_support :render_partial
+ alias :render_partial :render_template_with_partial_with_array_support
+ end
+
+ @array = ['Alice', 'Bob']
+ assigns[:array] = @array
+ end
+
+ after(:each) do
+ module ActionView::Partials
+ alias :render_template_with_partial_with_array_support :render_partial
+ alias :render_partial :render_partial_without_array_support
+ undef render_template_with_partial_with_array_support
+ end
+ end
+
+ it "should render have the array passed through to render_partial without modification" do
+ render "view_spec/template_with_partial_with_array"
+ response.body.should match(/^Array Partial$/)
+ end
+end
+
+describe "Different types of renders (not :template)", :type => :view do
+ it "should render partial with local" do
+ render :partial => "view_spec/partial_with_local_variable", :locals => {:x => "Ender"}
+ response.should have_tag('div', :content => "Ender")
+ end
+end
+
+describe "A view", :type => :view do
+ before(:each) do
+ session[:key] = "session"
+ params[:key] = "params"
+ flash[:key] = "flash"
+ render "view_spec/accessor"
+ end
+
+ it "should have access to session data" do
+ response.should have_tag("div#session", "session")
+ end
+
+ specify "should have access to params data" do
+ response.should have_tag("div#params", "params")
+ end
+
+ it "should have access to flash data" do
+ response.should have_tag("div#flash", "flash")
+ end
+end
+
+describe "A view with a form_tag", :type => :view do
+ it "should render the right action" do
+ render "view_spec/entry_form"
+ response.should have_tag("form[action=?]","/view_spec/entry_form")
+ end
+end
+
+describe "An instantiated ViewExampleGroupController", :type => :view do
+ before do
+ render "view_spec/foo/show"
+ end
+
+ it "should return the name of the real controller that it replaces" do
+ @controller.controller_name.should == 'foo'
+ end
+
+ it "should return the path of the real controller that it replaces" do
+ @controller.controller_path.should == 'view_spec/foo'
+ end
+end
+
+module Spec
+ module Rails
+ module Example
+ describe ViewExampleGroup do
+ it "should clear its name from the description" do
+ group = describe("foo", :type => :view) do
+ $nested_group = describe("bar") do
+ end
+ end
+ group.description.to_s.should == "foo"
+ $nested_group.description.to_s.should == "foo bar"
+ end
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/matchers/have_text_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/matchers/have_text_spec.rb
new file mode 100644
index 000000000..93a1ef059
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/matchers/have_text_spec.rb
@@ -0,0 +1,62 @@
+require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
+
+describe "have_text" do
+
+ describe "where target is a Regexp" do
+ it 'should should match submitted text using a regexp' do
+ string = 'foo'
+ string.should have_text(/fo*/)
+ end
+ end
+
+ describe "where target is a String" do
+ it 'should match submitted text using a string' do
+ string = 'foo'
+ string.should have_text('foo')
+ end
+ end
+
+end
+
+describe "have_text",
+ :type => :controller do
+ ['isolation','integration'].each do |mode|
+ if mode == 'integration'
+ integrate_views
+ end
+
+ describe "where target is a response (in #{mode} mode)" do
+ controller_name :render_spec
+
+ it "should pass with exactly matching text" do
+ post 'text_action'
+ response.should have_text("this is the text for this action")
+ end
+
+ it "should pass with matching text (using Regexp)" do
+ post 'text_action'
+ response.should have_text(/is the text/)
+ end
+
+ it "should fail with matching text" do
+ post 'text_action'
+ lambda {
+ response.should have_text("this is NOT the text for this action")
+ }.should fail_with("expected \"this is NOT the text for this action\", got \"this is the text for this action\"")
+ end
+
+ it "should fail when a template is rendered" do
+ post 'some_action'
+ lambda {
+ response.should have_text("this is the text for this action")
+ }.should fail_with(/expected \"this is the text for this action\", got .*/)
+ end
+
+ it "should pass using should_not with incorrect text" do
+ post 'text_action'
+ response.should_not have_text("the accordian guy")
+ end
+ end
+ end
+end
+
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/sample_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/sample_spec.rb
new file mode 100644
index 000000000..7cd1d4e81
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/sample_spec.rb
@@ -0,0 +1,7 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+
+describe "A sample spec" do
+ it "should pass" do
+ true.should === true
+ end
+end \ No newline at end of file
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/spec_server_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/spec_server_spec.rb
new file mode 100644
index 000000000..957bd1089
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/spec_server_spec.rb
@@ -0,0 +1,89 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+
+describe "script/spec_server file", :shared => true do
+ attr_accessor :tmbundle_install_directory
+
+ after do
+ system "kill -9 #{@pid}"
+ end
+
+ it "runs a spec" do
+ dir = File.dirname(__FILE__)
+ output = ""
+ Timeout.timeout(10) do
+ loop do
+ output = `#{RAILS_ROOT}/script/spec #{dir}/sample_spec.rb --drb 2>&1`
+ break unless output.include?("No server is running")
+ end
+ end
+
+ unless $?.exitstatus == 0
+ flunk "command 'script/spec spec/sample_spec' failed\n#{output}"
+ end
+ end
+
+ def start_spec_server
+ create_spec_server_pid_file
+ start_spec_server_process
+ end
+
+ def create_spec_server_pid_file
+ current_dir = File.dirname(__FILE__)
+ pid_dir = "#{Dir.tmpdir}/#{Time.now.to_i}"
+ @spec_server_pid_file = "#{pid_dir}/spec_server.pid"
+ FileUtils.mkdir_p pid_dir
+ system "touch #{@spec_server_pid_file}"
+ @rspec_path = File.expand_path("#{current_dir}/../../../rspec/lib")
+ end
+
+ def start_spec_server_process
+ dir = File.dirname(__FILE__)
+ spec_server_cmd = %Q|export HOME=#{Dir.tmpdir}; |
+ spec_server_cmd << %Q|ruby -e 'system("echo " + Process.pid.to_s + " > #{@spec_server_pid_file}"); |
+ spec_server_cmd << %Q|$LOAD_PATH.unshift("#{@rspec_path}"); require "spec"; |
+ spec_server_cmd << %Q|load "#{RAILS_ROOT}/script/spec_server"' &|
+ system spec_server_cmd
+
+ file_content = ""
+ Timeout.timeout(5) do
+ loop do
+ file_content = File.read(@spec_server_pid_file)
+ break unless file_content.blank?
+ end
+ end
+ @pid = Integer(File.read(@spec_server_pid_file))
+ end
+end
+
+describe "script/spec_server file without TextMate bundle" do
+ it_should_behave_like "script/spec_server file"
+ before do
+ start_spec_server
+ end
+end
+
+describe "script/spec_server file with TextMate bundle" do
+ it_should_behave_like "script/spec_server file"
+ before do
+ dir = File.dirname(__FILE__)
+ @tmbundle_install_directory = File.expand_path("#{Dir.tmpdir}/Library/Application Support/TextMate/Bundles")
+ @bundle_name = "RSpec.tmbundle"
+ FileUtils.mkdir_p(tmbundle_install_directory)
+ bundle_dir = File.expand_path("#{dir}/../../../../../../#{@bundle_name}")
+ File.directory?(bundle_dir).should be_true
+ unless system(%Q|ln -s #{bundle_dir} "#{tmbundle_install_directory}"|)
+ raise "Creating link to Textmate Bundle"
+ end
+ start_spec_server
+ end
+
+ after do
+ bundle_file_to_remove = "#{tmbundle_install_directory}/#{@bundle_name}"
+ if bundle_file_to_remove == "/"
+ raise "bundle file path resolved to '/' - could not call rm"
+ end
+ unless system(%Q|rm "#{bundle_file_to_remove}"|)
+ raise "Removing Textmate bundle link failed"
+ end
+ end
+end
diff --git a/vendor/plugins/rspec_on_rails/spec/rails/spec_spec.rb b/vendor/plugins/rspec_on_rails/spec/rails/spec_spec.rb
new file mode 100644
index 000000000..ea258c7d8
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails/spec_spec.rb
@@ -0,0 +1,11 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+
+describe "script/spec file" do
+ it "should run a spec" do
+ dir = File.dirname(__FILE__)
+ output = `#{RAILS_ROOT}/script/spec #{dir}/sample_spec.rb`
+ unless $?.exitstatus == 0
+ flunk "command 'script/spec spec/sample_spec' failed\n#{output}"
+ end
+ end
+end \ No newline at end of file
diff --git a/vendor/plugins/rspec_on_rails/spec/rails_suite.rb b/vendor/plugins/rspec_on_rails/spec/rails_suite.rb
new file mode 100644
index 000000000..15effae1c
--- /dev/null
+++ b/vendor/plugins/rspec_on_rails/spec/rails_suite.rb
@@ -0,0 +1,7 @@
+dir = File.dirname(__FILE__)
+Dir["#{dir}/**/*_example.rb"].each do |file|
+ require file
+end
+Dir["#{dir}/**/*_spec.rb"].each do |file|
+ require file
+end