Renamed helpers to correspond to renamed Controller classes.
[merb_radiant.git] / radiant_specs / spec / controllers / .svn / text-base / site_controller_spec.rb.svn-base
blob2db76b9d120fdff9b3b06a57c9335bae36ece9d1
1 require File.dirname(__FILE__) + '/../spec_helper'
3 describe SiteController, "routes page requests" do
4   scenario :pages
5   
6   it "should find and render home page" do
7     get :show_page, :url => ''
8     response.should be_success
9     response.body.should == 'Hello world!'
10   end
12   it "should find a page one level deep" do
13     get :show_page, :url => 'first/'
14     response.should be_success
15     response.body.should == 'First body.'
16   end
18   it "should find a page two levels deep" do
19     get :show_page, :url => 'parent/child/'
20     response.should be_success
21     response.body.should == 'Child body.'
22   end
24   it "should show page not found" do
25     get :show_page, :url => 'a/non-existant/page'
26     response.headers["Status"].should == "404 Not Found"
27     response.should render_template('site/not_found')
28   end
30   it "should redirect to admin if missing root" do
31     Page.should_receive(:find_by_url).and_raise(Page::MissingRootPageError)
32     get :show_page, :url => '/'
33     response.should redirect_to(welcome_url)
34   end
36   it "should parse pages with Radius" do
37     get :show_page, :url => 'radius'
38     response.should be_success
39     response.body.should == 'Radius body.'
40   end
42   it "should render 404 if page is not published status" do
43     ['draft', 'hidden'].each do |url|
44       get :show_page, :url => url
45       response.should be_missing
46       response.should render_template('site/not_found')
47     end
48   end
50   it "should display draft and hidden pages on default dev site" do
51     request.host = "dev.site.com"
52     ['draft', 'hidden'].each do |url|
53       get :show_page, :url => url
54       response.should be_success
55     end
56   end
58   it "should display draft and hidden pages on dev site in config" do
59     controller.config = { 'dev.host' => 'mysite.com' }
60     request.host = 'mysite.com'
61     ['draft', 'hidden'].each do |url|
62       get :show_page, :url => url
63       response.should be_success
64     end
65   end
67   it "should not display draft and hidden pages on default dev site when dev.host specified" do
68     controller.config = { 'dev.host' => 'mysite.com' }
69     request.host = 'dev.mysite.com'
70     ['draft', 'hidden'].each do |url|
71       get :show_page, :url => url
72       response.should be_missing
73     end
74   end
76   it "should not have cache control header" do
77     get :show_page, :url => '/'
78     response.headers.keys.should_not include("Cache-Control")
79   end
80   
81   it "should not require login" do
82     lambda { get :show_page, :url => '/' }.should_not require_login
83   end
84 end
86 describe SiteController, "when custom 404 pages are defined" do
87   scenario :file_not_found
88   
89   it "should use the top-most 404 page by default" do
90     get :show_page, :url => "/foo"
91     response.should be_missing
92     assigns[:page].should == pages(:file_not_found)
93     
94     get :show_page, :url => "/foo/bar"
95     response.should be_missing
96     assigns[:page].should == pages(:file_not_found)
97   end
98   
99   it "should use a custom 404 page defined under a parent page" do
100     get :show_page, :url => "/gallery/draft"
101     response.should be_missing
102     assigns[:page].should == pages(:no_picture)
103   end