Chris@119: # Redmine - project management software Chris@1494: # Copyright (C) 2006-2014 Jean-Philippe Lang Chris@119: # Chris@119: # This program is free software; you can redistribute it and/or Chris@119: # modify it under the terms of the GNU General Public License Chris@119: # as published by the Free Software Foundation; either version 2 Chris@119: # of the License, or (at your option) any later version. Chris@909: # Chris@119: # This program is distributed in the hope that it will be useful, Chris@119: # but WITHOUT ANY WARRANTY; without even the implied warranty of Chris@119: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Chris@119: # GNU General Public License for more details. Chris@909: # Chris@119: # You should have received a copy of the GNU General Public License Chris@119: # along with this program; if not, write to the Free Software Chris@119: # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Chris@119: Chris@119: require File.expand_path('../../../../test_helper', __FILE__) Chris@119: Chris@119: class ThemesTest < ActionController::IntegrationTest Chris@909: Chris@119: def setup Chris@119: @theme = Redmine::Themes.themes.last Chris@119: Setting.ui_theme = @theme.id Chris@119: end Chris@909: Chris@119: def teardown Chris@119: Setting.ui_theme = '' Chris@119: end Chris@909: Chris@119: def test_application_css Chris@119: get '/' Chris@909: Chris@119: assert_response :success Chris@1517: assert_select "link[rel=stylesheet][href^=/themes/#{@theme.dir}/stylesheets/application.css]" Chris@119: end Chris@909: Chris@119: def test_without_theme_js Chris@119: get '/' Chris@909: Chris@119: assert_response :success Chris@1517: assert_select "script[src^=/themes/#{@theme.dir}/javascripts/theme.js]", 0 Chris@119: end Chris@909: Chris@119: def test_with_theme_js Chris@119: # Simulates a theme.js Chris@119: @theme.javascripts << 'theme' Chris@119: get '/' Chris@909: Chris@119: assert_response :success Chris@1517: assert_select "script[src^=/themes/#{@theme.dir}/javascripts/theme.js]", 1 Chris@119: ensure Chris@119: @theme.javascripts.delete 'theme' Chris@119: end Chris@909: Chris@1517: def test_use_default_favicon_if_theme_provides_none Chris@1517: get '/' Chris@1517: Chris@1517: assert_response :success Chris@1517: assert_select 'link[rel=shortcut icon][href^=/favicon.ico]' Chris@1517: end Chris@1517: Chris@1517: def test_use_theme_favicon_if_theme_provides_one Chris@1517: # Simulate a theme favicon Chris@1517: @theme.favicons << 'a.ico' Chris@1517: get '/' Chris@1517: Chris@1517: assert_response :success Chris@1517: assert_select "link[rel=shortcut icon][href^=/themes/#{@theme.dir}/favicon/a.ico]" Chris@1517: ensure Chris@1517: @theme.favicons.delete 'a.ico' Chris@1517: end Chris@1517: Chris@1517: def test_use_only_one_theme_favicon_if_theme_provides_many Chris@1517: @theme.favicons.concat %w{b.ico a.png} Chris@1517: get '/' Chris@1517: Chris@1517: assert_response :success Chris@1517: assert_select "link[rel=shortcut icon]", 1 Chris@1517: assert_select "link[rel=shortcut icon][href^=/themes/#{@theme.dir}/favicon/b.ico]" Chris@1517: ensure Chris@1517: @theme.favicons.delete("b.ico") Chris@1517: @theme.favicons.delete("a.png") Chris@1517: end Chris@1517: Chris@119: def test_with_sub_uri Chris@119: Redmine::Utils.relative_url_root = '/foo' Chris@119: @theme.javascripts << 'theme' Chris@1517: @theme.favicons << 'a.ico' Chris@119: get '/' Chris@909: Chris@119: assert_response :success Chris@1517: assert_select "link[rel=stylesheet][href^=/foo/themes/#{@theme.dir}/stylesheets/application.css]" Chris@1517: assert_select "script[src^=/foo/themes/#{@theme.dir}/javascripts/theme.js]" Chris@1517: assert_select "link[rel=shortcut icon][href^=/foo/themes/#{@theme.dir}/favicon/a.ico]" Chris@119: ensure Chris@119: Redmine::Utils.relative_url_root = '' Chris@119: end Chris@119: end