welcome_controller_test.rb
165 lines
| 5.0 KiB
| text/x-ruby
|
RubyLexer
|
r6505 | # Redmine - project management software | ||
|
r9453 | # Copyright (C) 2006-2012 Jean-Philippe Lang | ||
|
r974 | # | ||
# This program is free software; you can redistribute it and/or | ||||
# modify it under the terms of the GNU General Public License | ||||
# as published by the Free Software Foundation; either version 2 | ||||
# of the License, or (at your option) any later version. | ||||
|
r6505 | # | ||
|
r974 | # This program is distributed in the hope that it will be useful, | ||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
# GNU General Public License for more details. | ||||
|
r6505 | # | ||
|
r974 | # You should have received a copy of the GNU General Public License | ||
# along with this program; if not, write to the Free Software | ||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
|
r4395 | require File.expand_path('../../test_helper', __FILE__) | ||
|
r974 | require 'welcome_controller' | ||
# Re-raise errors caught by the controller. | ||||
class WelcomeController; def rescue_action(e) raise e end; end | ||||
|
r2773 | class WelcomeControllerTest < ActionController::TestCase | ||
|
r10563 | fixtures :projects, :news, :users, :members | ||
|
r6505 | |||
|
r974 | def setup | ||
@controller = WelcomeController.new | ||||
@request = ActionController::TestRequest.new | ||||
@response = ActionController::TestResponse.new | ||||
User.current = nil | ||||
end | ||||
|
r6505 | |||
|
r974 | def test_index | ||
get :index | ||||
assert_response :success | ||||
assert_template 'index' | ||||
assert_not_nil assigns(:news) | ||||
assert_not_nil assigns(:projects) | ||||
|
r10701 | assert !assigns(:projects).include?(Project.where(:is_public => false).first) | ||
|
r974 | end | ||
|
r6505 | |||
|
r974 | def test_browser_language | ||
Setting.default_language = 'en' | ||||
@request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3' | ||||
get :index | ||||
assert_equal :fr, @controller.current_language | ||||
end | ||||
|
r6505 | |||
|
r1467 | def test_browser_language_alternate | ||
Setting.default_language = 'en' | ||||
@request.env['HTTP_ACCEPT_LANGUAGE'] = 'zh-TW' | ||||
get :index | ||||
|
r2430 | assert_equal :"zh-TW", @controller.current_language | ||
|
r1467 | end | ||
|
r6505 | |||
|
r1468 | def test_browser_language_alternate_not_valid | ||
Setting.default_language = 'en' | ||||
@request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr-CA' | ||||
get :index | ||||
assert_equal :fr, @controller.current_language | ||||
end | ||||
|
r6505 | |||
|
r2317 | def test_robots | ||
get :robots | ||||
assert_response :success | ||||
assert_equal 'text/plain', @response.content_type | ||||
|
r3605 | assert @response.body.match(%r{^Disallow: /projects/ecookbook/issues\r?$}) | ||
|
r2317 | end | ||
|
r6505 | |||
|
r4780 | def test_warn_on_leaving_unsaved_turn_on | ||
user = User.find(2) | ||||
user.pref.warn_on_leaving_unsaved = '1' | ||||
user.pref.save! | ||||
@request.session[:user_id] = 2 | ||||
|
r6505 | |||
|
r4780 | get :index | ||
assert_tag 'script', | ||||
:attributes => {:type => "text/javascript"}, | ||||
|
r9885 | :content => %r{warnLeavingUnsaved} | ||
|
r4780 | end | ||
|
r6505 | |||
|
r4780 | def test_warn_on_leaving_unsaved_turn_off | ||
user = User.find(2) | ||||
user.pref.warn_on_leaving_unsaved = '0' | ||||
user.pref.save! | ||||
@request.session[:user_id] = 2 | ||||
|
r6505 | |||
|
r4780 | get :index | ||
assert_no_tag 'script', | ||||
:attributes => {:type => "text/javascript"}, | ||||
|
r9885 | :content => %r{warnLeavingUnsaved} | ||
|
r4780 | end | ||
|
r8366 | |||
def test_call_hook_mixed_in | ||||
assert @controller.respond_to?(:call_hook) | ||||
end | ||||
|
r9711 | def test_project_jump_box_should_escape_names_once | ||
Project.find(1).update_attribute :name, 'Foo & Bar' | ||||
@request.session[:user_id] = 2 | ||||
get :index | ||||
assert_select "#header select" do | ||||
assert_select "option", :text => 'Foo & Bar' | ||||
end | ||||
end | ||||
|
r8366 | context "test_api_offset_and_limit" do | ||
context "without params" do | ||||
should "return 0, 25" do | ||||
assert_equal [0, 25], @controller.api_offset_and_limit({}) | ||||
end | ||||
end | ||||
context "with limit" do | ||||
should "return 0, limit" do | ||||
assert_equal [0, 30], @controller.api_offset_and_limit({:limit => 30}) | ||||
end | ||||
should "not exceed 100" do | ||||
assert_equal [0, 100], @controller.api_offset_and_limit({:limit => 120}) | ||||
end | ||||
should "not be negative" do | ||||
assert_equal [0, 25], @controller.api_offset_and_limit({:limit => -10}) | ||||
end | ||||
end | ||||
context "with offset" do | ||||
should "return offset, 25" do | ||||
assert_equal [10, 25], @controller.api_offset_and_limit({:offset => 10}) | ||||
end | ||||
should "not be negative" do | ||||
assert_equal [0, 25], @controller.api_offset_and_limit({:offset => -10}) | ||||
end | ||||
context "and limit" do | ||||
should "return offset, limit" do | ||||
assert_equal [10, 50], @controller.api_offset_and_limit({:offset => 10, :limit => 50}) | ||||
end | ||||
end | ||||
end | ||||
context "with page" do | ||||
should "return offset, 25" do | ||||
assert_equal [0, 25], @controller.api_offset_and_limit({:page => 1}) | ||||
assert_equal [50, 25], @controller.api_offset_and_limit({:page => 3}) | ||||
end | ||||
should "not be negative" do | ||||
assert_equal [0, 25], @controller.api_offset_and_limit({:page => 0}) | ||||
assert_equal [0, 25], @controller.api_offset_and_limit({:page => -2}) | ||||
end | ||||
context "and limit" do | ||||
should "return offset, limit" do | ||||
assert_equal [0, 100], @controller.api_offset_and_limit({:page => 1, :limit => 100}) | ||||
assert_equal [200, 100], @controller.api_offset_and_limit({:page => 3, :limit => 100}) | ||||
end | ||||
end | ||||
end | ||||
end | ||||
|
r974 | end | ||