| 
									
										
										
										
											2019-03-16 15:03:47 +00:00
										 |  |  | # frozen_string_literal: true | 
					
						
							| 
									
										
										
										
											2019-03-15 01:32:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  | # Redmine - project management software | 
					
						
							| 
									
										
										
										
											2021-03-25 06:58:56 +00:00
										 |  |  | # Copyright (C) 2006-2021  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-11-30 15:16:43 +00:00
										 |  |  | class ThemesTest < Redmine::IntegrationTest | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |   def setup | 
					
						
							| 
									
										
										
										
											2015-01-17 17:02:55 +00:00
										 |  |  |     Redmine::Themes.rescan | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |     @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 | 
					
						
							| 
									
										
										
										
											2015-01-17 17:02:55 +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 | 
					
						
							| 
									
										
										
										
											2017-03-02 18:20:17 +00:00
										 |  |  |     # simulate a state theme.js does not exists | 
					
						
							|  |  |  |     @theme.javascripts.clear | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |     get '/' | 
					
						
							| 
									
										
										
										
											2011-08-27 08:45:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-22 21:37:07 +00:00
										 |  |  |     assert_response :success | 
					
						
							| 
									
										
										
										
											2015-01-17 17:02:55 +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 | 
					
						
							| 
									
										
										
										
											2015-01-17 17:02:55 +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 | 
					
						
							| 
									
										
										
										
											2019-08-25 21:57:41 +00:00
										 |  |  |     @theme.favicons.clear | 
					
						
							| 
									
										
										
										
											2014-01-11 11:22:46 +00:00
										 |  |  |     get '/' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert_response :success | 
					
						
							| 
									
										
										
										
											2015-01-17 17:02:55 +00:00
										 |  |  |     assert_select 'link[rel="shortcut icon"][href^="/favicon.ico"]' | 
					
						
							| 
									
										
										
										
											2014-01-11 11:22:46 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_use_theme_favicon_if_theme_provides_one | 
					
						
							|  |  |  |     # Simulate a theme favicon | 
					
						
							| 
									
										
										
										
											2019-08-25 21:57:41 +00:00
										 |  |  |     @theme.favicons.unshift('a.ico') | 
					
						
							| 
									
										
										
										
											2014-01-11 11:22:46 +00:00
										 |  |  |     get '/' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert_response :success | 
					
						
							| 
									
										
										
										
											2015-01-17 17:02:55 +00:00
										 |  |  |     assert_select 'link[rel="shortcut icon"][href^=?]', "/themes/#{@theme.dir}/favicon/a.ico" | 
					
						
							| 
									
										
										
										
											2014-01-11 11:22:46 +00:00
										 |  |  |   ensure | 
					
						
							|  |  |  |     @theme.favicons.delete 'a.ico' | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_use_only_one_theme_favicon_if_theme_provides_many | 
					
						
							| 
									
										
										
										
											2019-08-25 21:57:41 +00:00
										 |  |  |     @theme.favicons.unshift('b.ico', 'a.png') | 
					
						
							| 
									
										
										
										
											2014-01-11 11:22:46 +00:00
										 |  |  |     get '/' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert_response :success | 
					
						
							| 
									
										
										
										
											2015-01-17 17:02:55 +00:00
										 |  |  |     assert_select 'link[rel="shortcut icon"]', 1
 | 
					
						
							|  |  |  |     assert_select 'link[rel="shortcut icon"][href^=?]', "/themes/#{@theme.dir}/favicon/b.ico" | 
					
						
							| 
									
										
										
										
											2014-01-11 11:22:46 +00:00
										 |  |  |   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' | 
					
						
							| 
									
										
										
										
											2019-08-25 21:57:41 +00:00
										 |  |  |     @theme.javascripts.unshift('theme') | 
					
						
							|  |  |  |     @theme.favicons.unshift('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 | 
					
						
							| 
									
										
										
										
											2015-01-17 17:02:55 +00:00
										 |  |  |     assert_select "link[rel=stylesheet][href^=?]", "/foo/themes/#{@theme.dir}/stylesheets/application.css" | 
					
						
							|  |  |  |     assert_select "script[src^=?]", "/foo/themes/#{@theme.dir}/javascripts/theme.js" | 
					
						
							|  |  |  |     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 |