cirandas.net

ref: master

test/unit/theme_loader_helper_test.rb


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# encoding: UTF-8
require_relative "../test_helper"

class ThemeLoaderHelperTest < ActionView::TestCase
  include ThemeLoaderHelper

  should 'get theme from environment by default' do
    @environment = mock
    @environment.stubs(:theme).returns('my-environment-theme')
    stubs(:profile).returns(nil)
    stubs(:environment).returns(@environment)
    assert_equal 'my-environment-theme', current_theme
  end

  should 'get theme from profile when profile is present' do
    profile = mock
    profile.stubs(:theme).returns('my-profile-theme')
    stubs(:profile).returns(profile)
    assert_equal 'my-profile-theme', current_theme
  end

  should 'override theme with testing theme from session' do
    stubs(:session).returns(:user_theme => 'theme-under-test')
    assert_equal 'theme-under-test', current_theme
  end

  should 'point to system theme path by default' do
    expects(:current_theme).returns('my-system-theme')
    assert_equal '/designs/themes/my-system-theme', theme_path
  end

  should 'point to user theme path when testing theme' do
    stubs(:session).returns({:user_theme => 'theme-under-test'})
    assert_equal '/user_themes/theme-under-test', theme_path
  end

  should 'point to session theme path when testing theme' do
    stubs(:session).returns({:theme => 'theme-under-test'})
    assert_equal '/designs/themes/theme-under-test', theme_path
  end

  should 'point to session theme is defined' do
    session = mock
    stubs(:session).returns(session)
    my_session_theme = 'session_theme'
    session.stubs(:[]).with(:user_theme).returns(nil)
    session.stubs(:[]).with(:theme).returns(my_session_theme)
    assert_equal '/designs/themes/' + my_session_theme, theme_path
  end

end