| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  | # Redmine - project management software | 
					
						
							| 
									
										
										
										
											2014-01-29 22:45:39 +00:00
										 |  |  | # Copyright (C) 2006-2014  Jean-Philippe Lang | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # 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. | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  | # 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. | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  | # 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require File.expand_path('../../../../test_helper', __FILE__) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-22 17:37:16 +00:00
										 |  |  | class ThemesTest < ActionDispatch::IntegrationTest | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |   def setup | 
					
						
							|  |  |  |     @theme = Redmine::Themes.themes.last | 
					
						
							|  |  |  |     Setting.ui_theme = @theme.id | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |   def teardown | 
					
						
							|  |  |  |     Setting.ui_theme = '' | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |   def test_application_css | 
					
						
							|  |  |  |     get '/' | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |     assert_response :success | 
					
						
							| 
									
										
										
										
											2014-01-11 11:28:09 +00:00
										 |  |  |     assert_select "link[rel=stylesheet][href^=/themes/#{@theme.dir}/stylesheets/application.css]" | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |   def test_without_theme_js | 
					
						
							|  |  |  |     get '/' | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |     assert_response :success | 
					
						
							| 
									
										
										
										
											2014-01-11 11:26:53 +00:00
										 |  |  |     assert_select "script[src^=/themes/#{@theme.dir}/javascripts/theme.js]", 0
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |   def test_with_theme_js | 
					
						
							|  |  |  |     # Simulates a theme.js | 
					
						
							|  |  |  |     @theme.javascripts << 'theme' | 
					
						
							|  |  |  |     get '/' | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |     assert_response :success | 
					
						
							| 
									
										
										
										
											2014-01-11 11:26:53 +00:00
										 |  |  |     assert_select "script[src^=/themes/#{@theme.dir}/javascripts/theme.js]", 1
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |   ensure | 
					
						
							|  |  |  |     @theme.javascripts.delete 'theme' | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-11 11:22:46 +00:00
										 |  |  |   def test_use_default_favicon_if_theme_provides_none | 
					
						
							|  |  |  |     get '/' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert_response :success | 
					
						
							|  |  |  |     assert_select 'link[rel=shortcut icon][href^=/favicon.ico]' | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_use_theme_favicon_if_theme_provides_one | 
					
						
							|  |  |  |     # Simulate a theme favicon | 
					
						
							|  |  |  |     @theme.favicons << 'a.ico' | 
					
						
							|  |  |  |     get '/' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert_response :success | 
					
						
							|  |  |  |     assert_select "link[rel=shortcut icon][href^=/themes/#{@theme.dir}/favicon/a.ico]" | 
					
						
							|  |  |  |   ensure | 
					
						
							|  |  |  |     @theme.favicons.delete 'a.ico' | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_use_only_one_theme_favicon_if_theme_provides_many | 
					
						
							|  |  |  |     @theme.favicons.concat %w{b.ico a.png} | 
					
						
							|  |  |  |     get '/' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert_response :success | 
					
						
							|  |  |  |     assert_select "link[rel=shortcut icon]", 1
 | 
					
						
							|  |  |  |     assert_select "link[rel=shortcut icon][href^=/themes/#{@theme.dir}/favicon/b.ico]" | 
					
						
							|  |  |  |   ensure | 
					
						
							|  |  |  |     @theme.favicons.delete("b.ico") | 
					
						
							|  |  |  |     @theme.favicons.delete("a.png") | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-23 09:42:33 +00:00
										 |  |  |   def test_with_sub_uri | 
					
						
							|  |  |  |     Redmine::Utils.relative_url_root = '/foo' | 
					
						
							|  |  |  |     @theme.javascripts << 'theme' | 
					
						
							| 
									
										
										
										
											2014-01-11 11:22:46 +00:00
										 |  |  |     @theme.favicons << 'a.ico' | 
					
						
							| 
									
										
										
										
											2010-12-23 09:42:33 +00:00
										 |  |  |     get '/' | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-23 09:42:33 +00:00
										 |  |  |     assert_response :success | 
					
						
							| 
									
										
										
										
											2014-01-11 11:28:09 +00:00
										 |  |  |     assert_select "link[rel=stylesheet][href^=/foo/themes/#{@theme.dir}/stylesheets/application.css]" | 
					
						
							| 
									
										
										
										
											2014-01-11 11:26:53 +00:00
										 |  |  |     assert_select "script[src^=/foo/themes/#{@theme.dir}/javascripts/theme.js]" | 
					
						
							| 
									
										
										
										
											2014-01-11 11:22:46 +00:00
										 |  |  |     assert_select "link[rel=shortcut icon][href^=/foo/themes/#{@theme.dir}/favicon/a.ico]" | 
					
						
							| 
									
										
										
										
											2010-12-23 09:42:33 +00:00
										 |  |  |   ensure | 
					
						
							|  |  |  |     Redmine::Utils.relative_url_root = '' | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  | end |