1 require File.dirname(__FILE__) + '/../test_helper'
2 require 'site_controller'
4 # Re-raise errors caught by the controller.
5 class SiteController; def rescue_action(e) raise e end; end
7 class SiteControllerTest < Test::Unit::TestCase
8 fixtures :pages, :page_parts
12 @controller = SiteController.new
13 @request = ActionController::TestRequest.new
14 @response = ActionController::TestResponse.new
15 @cache = @controller.cache
16 @cache.perform_caching = false
21 assert_equal Radiant::Config, @controller.config
22 assert_kind_of ResponseCache, @cache
25 def test_show_page__home_page
26 get :show_page, :url => ''
27 assert_response :success
28 assert_equal 'This is the body portion of the Ruby home page.', @response.body
31 def test_show_page__one_level_deep
32 get :show_page, :url => 'documentation/'
33 assert_response :success
34 assert_equal 'This is the documentation section.', @response.body
37 def test_show_page__two_levels_deep
38 get :show_page, :url => 'documentation/books/'
39 assert_response :success
40 assert_equal 'This is the books page.', @response.body
43 def test_show_page__not_found
44 get :show_page, :url => 'asdf'
45 assert_response :missing
46 assert_template 'site/not_found'
49 def test_show_page__missing_root_redirects_to_admin
50 pages(:homepage).destroy
51 get :show_page, :url => '/'
52 assert_redirected_to welcome_url
55 def test_show_page__radius_integration
56 get :show_page, :url => 'radius'
57 assert_response :success
58 assert_equal "<h1>Radius Test Page</h1>\n\n\n\t<ul>\n\t<li>Radius Test Child 1</li>\n\t\t<li>Radius Test Child 2</li>\n\t\t<li>Radius Test Child 3</li>\n\t</ul>", @response.body
61 def test_show_page__not_published
62 ['draft', 'hidden'].each do |url|
63 get :show_page, :url => url
64 assert_response :missing, "for URL: #{url}"
65 assert_template 'site/not_found', "for URL: #{url}"
68 #validates the custom 404 page is rendered
69 get :show_page, :url => "/gallery/gallery_draft/"
70 assert_response :missing
74 def test_show_page__on_dev_site
75 @request.host = 'dev.site.com'
76 ['draft', 'hidden'].each do |url|
77 get :show_page, :url => url
78 assert_response :success, "url: #{url}"
82 def test_show_page__on_dev_site_in_conf
83 @controller.config = { 'dev.host' => 'mysite.com' }
85 @request.host = 'mysite.com'
86 ['draft', 'hidden'].each do |url|
87 get :show_page, :url => url
88 assert_response :success, "url: #{url}"
91 @request.host = 'dev.site.com' # should function like live site because of config
92 ['draft', 'hidden'].each do |url|
93 get :show_page, :url => url
94 assert_response :missing, "url: #{url}"
98 def test_show_page__does_not_have_no_cache_header
99 get :show_page, :url => '/'
100 assert_equal false, @response.headers.keys.include?('Cache-Control')
110 def process(request, response)
111 @request, @response = request, response
112 response.headers['Status'] = '200 OK'
119 def test_show_page__page_processed
122 SiteControllerTest::TestPage.new
125 get :show_page, :url => 'really/just/a/test'
126 assert_response :success
127 page = assigns(:page)
128 assert_same @request, page.request
129 assert_same @response, page.response
132 def test_show_page__cached
133 @controller.cache.perform_caching = true
135 get :show_page, :url => 'documentation'
136 assert_response :success
137 assert File.exists?(cache_file('documentation'))
140 def test_show_page__no_cache
141 @controller.cache.perform_caching = true
143 get :show_page, :url => 'no-cache'
144 assert_response :success
145 assert !File.exists?(cache_file('no-cache'))
148 def test_show_page__no_cache_on_dev_site
149 @controller.cache.perform_caching = true
150 @request.host = 'dev.site.com'
152 get :show_page, :url => 'documentation'
153 assert_response :success
154 assert !File.exists?(cache_file('documentation'))
157 def test_show_page__no_cache_on_dev_site__cached
158 @controller.cache.perform_caching = true
159 @request.host = 'dev.site.com'
160 @cache.cache_response('documentation', response(:body => 'expired body'))
161 get :show_page, :url => 'documentation'
162 assert_response :success
163 assert_equal 'This is the documentation section.', @response.body
166 def test_show_page__no_cache_if_post
167 @controller.cache.perform_caching = true
169 post :show_page, :url => 'documentation'
170 assert_response :success
171 assert !File.exists?(cache_file('documentation'))
174 def test_show_page__no_cache_if_post__cached
175 @controller.cache.perform_caching = true
176 @request.host = 'dev.site.com'
177 @cache.cache_response('documentation', response(:body => 'expired body'))
178 post :show_page, :url => 'documentation'
179 assert_response :success
180 assert_equal 'This is the documentation section.', @response.body
184 def test_show_page__no_pages
186 get :show_page, :url => '/'
187 assert_redirected_to welcome_url
193 "#{@cache.directory}/#{path}.yml"
196 def response(options = {})
197 r = ActionController::TestResponse.new
198 options.each do |k, v|