Updated to latest rspec
[gitorious:georgyos-clone.git] / vendor / plugins / rspec-rails / spec / rails / example / helper_spec_spec.rb
1 require File.dirname(__FILE__) + '/../../spec_helper'
2 Spec::Runner.configuration.global_fixtures = :people
3
4 describe ExplicitHelper, :type => :helper do
5   include ExplicitHelper
6   
7   it "should not require naming the helper if describe is passed a type" do
8     method_in_explicit_helper.should match(/text from a method/)
9     helper.method_in_explicit_helper.should match(/text from a method/)
10   end
11 end
12
13 module Spec
14   module Rails
15     module Example
16       describe HelperExampleGroup, :type => :helper do
17         helper_name :explicit
18
19         it "DEPRECATED should have direct access to methods defined in helpers" do
20           method_in_explicit_helper.should =~ /text from a method/
21         end
22
23         it "should expose the helper with the #helper method" do
24           helper.method_in_explicit_helper.should =~ /text from a method/
25         end
26
27         it "should have access to named routes" do
28           rspec_on_rails_specs_url.should == "http://test.host/rspec_on_rails_specs"
29           rspec_on_rails_specs_path.should == "/rspec_on_rails_specs"
30         end
31
32         it "should fail if the helper method deson't exist" do
33           lambda { non_existent_helper_method }.should raise_error(NameError)
34           lambda { helper.non_existent_helper_method }.should raise_error(NameError)
35         end
36       end
37
38
39       describe HelperExampleGroup, "#eval_erb", :type => :helper do
40         helper_name :explicit
41
42         it "should support methods that accept blocks" do
43           eval_erb("<% prepend 'foo' do %>bar<% end %>").should == "foobar"
44         end
45       end
46
47       describe HelperExampleGroup, ".fixtures", :type => :helper do
48         helper_name :explicit
49         fixtures :animals
50
51         it "should load fixtures" do
52           pig = animals(:pig)
53           pig.class.should == Animal
54         end
55
56         it "should load global fixtures" do
57           lachie = people(:lachie)
58           lachie.class.should == Person
59         end
60       end
61       
62       describe "methods from standard helpers", :type => :helper do
63         helper_name :explicit
64         it "should be exposed to the helper" do
65           helper.link_to("Foo","http://bar").should have_tag("a")
66         end
67       end
68
69       describe HelperExampleGroup, "included modules", :type => :helper do
70         helpers = [
71           ActionView::Helpers::ActiveRecordHelper,
72           ActionView::Helpers::AssetTagHelper,
73           ActionView::Helpers::BenchmarkHelper,
74           ActionView::Helpers::CacheHelper,
75           ActionView::Helpers::CaptureHelper,
76           ActionView::Helpers::DateHelper,
77           ActionView::Helpers::DebugHelper,
78           ActionView::Helpers::FormHelper,
79           ActionView::Helpers::FormOptionsHelper,
80           ActionView::Helpers::FormTagHelper,
81           ActionView::Helpers::JavaScriptHelper,
82           ActionView::Helpers::NumberHelper,
83           ActionView::Helpers::PrototypeHelper,
84           ActionView::Helpers::ScriptaculousHelper,
85           ActionView::Helpers::TagHelper,
86           ActionView::Helpers::TextHelper,
87           ActionView::Helpers::UrlHelper
88         ]
89         helpers << ActionView::Helpers::PaginationHelper rescue nil       #removed for 2.0
90         helpers << ActionView::Helpers::JavaScriptMacrosHelper rescue nil #removed for 2.0
91         helpers.each do |helper_module|
92           # it "should include #{helper_module}" do
93           #   self.class.ancestors.should include(helper_module)
94           #   helper.class.ancestors.should include(helper_module)
95           # end
96         end
97       end
98       
99       # TODO: BT - Helper Examples should proxy method_missing to a Rails View instance.
100       # When that is done, remove this method
101       describe HelperExampleGroup, "#protect_against_forgery?", :type => :helper do
102         it "should return false" do
103           protect_against_forgery?.should be_false
104           helper.protect_against_forgery?.should be_false
105         end
106       end
107     end
108   end
109 end
110
111 module Bug11223
112   # see http://rubyforge.org/tracker/index.php?func=detail&aid=11223&group_id=797&atid=3149
113   describe 'Accessing flash from helper spec', :type => :helper do
114     it 'should not raise an error' do
115       lambda { flash['test'] }.should_not raise_error
116     end
117   end
118 end
119
120 module Spec
121   module Rails
122     module Example
123       describe HelperExampleGroup do
124         it "should clear its name from the description" do
125           group = describe("foo", :type => :helper) do
126             $nested_group = describe("bar") do
127             end
128           end
129           group.description.to_s.should == "foo"
130           $nested_group.description.to_s.should == "foo bar"
131         end
132       end
133     end
134   end
135 end