Mercurial > hg > soundsoftware-site
comparison .svn/pristine/77/77dddf9e601d2a13642541b4fb2f841096013486.svn-base @ 1298:4f746d8966dd redmine_2.3_integration
Merge from redmine-2.3 branch to create new branch redmine-2.3-integration
author | Chris Cannam |
---|---|
date | Fri, 14 Jun 2013 09:28:30 +0100 |
parents | 622f24f53b42 |
children |
comparison
equal
deleted
inserted
replaced
1297:0a574315af3e | 1298:4f746d8966dd |
---|---|
1 # Redmine - project management software | |
2 # Copyright (C) 2006-2013 Jean-Philippe Lang | |
3 # | |
4 # This program is free software; you can redistribute it and/or | |
5 # modify it under the terms of the GNU General Public License | |
6 # as published by the Free Software Foundation; either version 2 | |
7 # of the License, or (at your option) any later version. | |
8 # | |
9 # This program is distributed in the hope that it will be useful, | |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 # GNU General Public License for more details. | |
13 # | |
14 # You should have received a copy of the GNU General Public License | |
15 # along with this program; if not, write to the Free Software | |
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
17 | |
18 require File.expand_path('../../test_helper', __FILE__) | |
19 | |
20 class WelcomeControllerTest < ActionController::TestCase | |
21 fixtures :projects, :news, :users, :members | |
22 | |
23 def setup | |
24 User.current = nil | |
25 end | |
26 | |
27 def test_index | |
28 get :index | |
29 assert_response :success | |
30 assert_template 'index' | |
31 assert_not_nil assigns(:news) | |
32 assert_not_nil assigns(:projects) | |
33 assert !assigns(:projects).include?(Project.where(:is_public => false).first) | |
34 end | |
35 | |
36 def test_browser_language | |
37 Setting.default_language = 'en' | |
38 @request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3' | |
39 get :index | |
40 assert_equal :fr, @controller.current_language | |
41 end | |
42 | |
43 def test_browser_language_alternate | |
44 Setting.default_language = 'en' | |
45 @request.env['HTTP_ACCEPT_LANGUAGE'] = 'zh-TW' | |
46 get :index | |
47 assert_equal :"zh-TW", @controller.current_language | |
48 end | |
49 | |
50 def test_browser_language_alternate_not_valid | |
51 Setting.default_language = 'en' | |
52 @request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr-CA' | |
53 get :index | |
54 assert_equal :fr, @controller.current_language | |
55 end | |
56 | |
57 def test_robots | |
58 get :robots | |
59 assert_response :success | |
60 assert_equal 'text/plain', @response.content_type | |
61 assert @response.body.match(%r{^Disallow: /projects/ecookbook/issues\r?$}) | |
62 end | |
63 | |
64 def test_warn_on_leaving_unsaved_turn_on | |
65 user = User.find(2) | |
66 user.pref.warn_on_leaving_unsaved = '1' | |
67 user.pref.save! | |
68 @request.session[:user_id] = 2 | |
69 | |
70 get :index | |
71 assert_tag 'script', | |
72 :attributes => {:type => "text/javascript"}, | |
73 :content => %r{warnLeavingUnsaved} | |
74 end | |
75 | |
76 def test_warn_on_leaving_unsaved_turn_off | |
77 user = User.find(2) | |
78 user.pref.warn_on_leaving_unsaved = '0' | |
79 user.pref.save! | |
80 @request.session[:user_id] = 2 | |
81 | |
82 get :index | |
83 assert_no_tag 'script', | |
84 :attributes => {:type => "text/javascript"}, | |
85 :content => %r{warnLeavingUnsaved} | |
86 end | |
87 | |
88 def test_logout_link_should_post | |
89 @request.session[:user_id] = 2 | |
90 | |
91 get :index | |
92 assert_select 'a[href=/logout][data-method=post]', :text => 'Sign out' | |
93 end | |
94 | |
95 def test_call_hook_mixed_in | |
96 assert @controller.respond_to?(:call_hook) | |
97 end | |
98 | |
99 def test_project_jump_box_should_escape_names_once | |
100 Project.find(1).update_attribute :name, 'Foo & Bar' | |
101 @request.session[:user_id] = 2 | |
102 | |
103 get :index | |
104 assert_select "#header select" do | |
105 assert_select "option", :text => 'Foo & Bar' | |
106 end | |
107 end | |
108 | |
109 context "test_api_offset_and_limit" do | |
110 context "without params" do | |
111 should "return 0, 25" do | |
112 assert_equal [0, 25], @controller.api_offset_and_limit({}) | |
113 end | |
114 end | |
115 | |
116 context "with limit" do | |
117 should "return 0, limit" do | |
118 assert_equal [0, 30], @controller.api_offset_and_limit({:limit => 30}) | |
119 end | |
120 | |
121 should "not exceed 100" do | |
122 assert_equal [0, 100], @controller.api_offset_and_limit({:limit => 120}) | |
123 end | |
124 | |
125 should "not be negative" do | |
126 assert_equal [0, 25], @controller.api_offset_and_limit({:limit => -10}) | |
127 end | |
128 end | |
129 | |
130 context "with offset" do | |
131 should "return offset, 25" do | |
132 assert_equal [10, 25], @controller.api_offset_and_limit({:offset => 10}) | |
133 end | |
134 | |
135 should "not be negative" do | |
136 assert_equal [0, 25], @controller.api_offset_and_limit({:offset => -10}) | |
137 end | |
138 | |
139 context "and limit" do | |
140 should "return offset, limit" do | |
141 assert_equal [10, 50], @controller.api_offset_and_limit({:offset => 10, :limit => 50}) | |
142 end | |
143 end | |
144 end | |
145 | |
146 context "with page" do | |
147 should "return offset, 25" do | |
148 assert_equal [0, 25], @controller.api_offset_and_limit({:page => 1}) | |
149 assert_equal [50, 25], @controller.api_offset_and_limit({:page => 3}) | |
150 end | |
151 | |
152 should "not be negative" do | |
153 assert_equal [0, 25], @controller.api_offset_and_limit({:page => 0}) | |
154 assert_equal [0, 25], @controller.api_offset_and_limit({:page => -2}) | |
155 end | |
156 | |
157 context "and limit" do | |
158 should "return offset, limit" do | |
159 assert_equal [0, 100], @controller.api_offset_and_limit({:page => 1, :limit => 100}) | |
160 assert_equal [200, 100], @controller.api_offset_and_limit({:page => 3, :limit => 100}) | |
161 end | |
162 end | |
163 end | |
164 end | |
165 end |