1 require File.dirname(__FILE__) + '/../spec_helper'
3 describe SiteController, "routes page requests" do
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!'
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.'
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.'
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')
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)
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.'
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')
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
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
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
76 it "should not have cache control header" do
77 get :show_page, :url => '/'
78 response.headers.keys.should_not include("Cache-Control")
81 it "should not require login" do
82 lambda { get :show_page, :url => '/' }.should_not require_login
86 describe SiteController, "when custom 404 pages are defined" do
87 scenario :file_not_found
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)
94 get :show_page, :url => "/foo/bar"
95 response.should be_missing
96 assigns[:page].should == pages(:file_not_found)
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)