]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/include/SugarTheme/SugarThemeRegistryTest.php
Added unit tests.
[Github/sugarcrm.git] / tests / include / SugarTheme / SugarThemeRegistryTest.php
1 <?php
2 require_once 'include/SugarTheme/SugarTheme.php';
3 require_once 'include/dir_inc.php';
4
5 class SugarThemeRegistryTest extends Sugar_PHPUnit_Framework_TestCase
6 {
7     private $_themeName;
8     
9     public function setup()
10     {
11         $this->_themeName = SugarTestThemeUtilities::createAnonymousTheme();
12         
13         SugarThemeRegistry::buildRegistry();
14     }
15     
16     public function tearDown()
17     {
18         SugarTestThemeUtilities::removeAllCreatedAnonymousThemes();
19     }
20     
21     public function testThemesRegistered()
22     {
23         $this->assertTrue(SugarThemeRegistry::exists($this->_themeName));
24     }
25     
26     public function testGetThemeObject()
27     {
28         $object = SugarThemeRegistry::get($this->_themeName);
29         
30         $this->assertType('SugarTheme',$object);
31         $this->assertEquals($object->__toString(),$this->_themeName);
32     }
33     
34     public function testSetCurrentTheme()
35     {
36         SugarThemeRegistry::set($this->_themeName);
37         
38         $this->assertType('SugarTheme',SugarThemeRegistry::current());
39         $this->assertEquals(SugarThemeRegistry::current()->__toString(),$this->_themeName);
40     }
41     
42     public function testInListOfAvailableThemes()
43     {
44         if ( isset($GLOBALS['sugar_config']['disabled_themes']) ) {
45             $disabled_themes = $GLOBALS['sugar_config']['disabled_themes'];
46             unset($GLOBALS['sugar_config']['disabled_themes']);
47         }
48         
49         $themes = SugarThemeRegistry::availableThemes();
50         $this->assertTrue(isset($themes[$this->_themeName]));
51         $themes = SugarThemeRegistry::unAvailableThemes();
52         $this->assertTrue(!isset($themes[$this->_themeName]));
53         $themes = SugarThemeRegistry::allThemes();
54         $this->assertTrue(isset($themes[$this->_themeName]));
55         
56         if ( isset($disabled_themes) )
57             $GLOBALS['sugar_config']['disabled_themes'] = $disabled_themes;
58     }
59     
60     public function testDisabledThemeNotInListOfAvailableThemes()
61     {
62         if ( isset($GLOBALS['sugar_config']['disabled_themes']) ) {
63             $disabled_themes = $GLOBALS['sugar_config']['disabled_themes'];
64             unset($GLOBALS['sugar_config']['disabled_themes']);
65         }
66         
67         $GLOBALS['sugar_config']['disabled_themes'] = $this->_themeName;
68         
69         $themes = SugarThemeRegistry::availableThemes();
70         $this->assertTrue(!isset($themes[$this->_themeName]));
71         $themes = SugarThemeRegistry::unAvailableThemes();
72         $this->assertTrue(isset($themes[$this->_themeName]));
73         $themes = SugarThemeRegistry::allThemes();
74         $this->assertTrue(isset($themes[$this->_themeName]));
75         
76         if ( isset($disabled_themes) )
77             $GLOBALS['sugar_config']['disabled_themes'] = $disabled_themes;
78     }
79     
80     public function testCustomThemeLoaded()
81     {
82         $customTheme = SugarTestThemeUtilities::createAnonymousCustomTheme($this->_themeName);
83         
84         SugarThemeRegistry::buildRegistry();
85         
86         $this->assertEquals(
87             SugarThemeRegistry::get($customTheme)->name,
88             'custom ' . $customTheme
89             );
90     }
91     
92     public function testDefaultThemedefFileHandled()
93     {
94         create_custom_directory('themes/default/');
95         sugar_file_put_contents('custom/themes/default/themedef.php','<?php $themedef = array("group_tabs" => false);');
96         
97         SugarThemeRegistry::buildRegistry();
98         
99         $this->assertEquals(
100             SugarThemeRegistry::get($this->_themeName)->group_tabs,
101             false
102             );
103         
104         unlink('custom/themes/default/themedef.php');
105     }
106     
107     public function testClearCacheAllThemes()
108     {
109         SugarThemeRegistry::get($this->_themeName)->getCSSURL('style.css');
110         $this->assertTrue(isset(SugarThemeRegistry::get($this->_themeName)->_cssCache['style.css']),
111                             'File style.css should exist in cache');
112         
113         SugarThemeRegistry::clearAllCaches();
114         SugarThemeRegistry::buildRegistry();
115         
116         $this->assertFalse(isset(SugarThemeRegistry::get($this->_themeName)->_cssCache['style.css']),
117                             'File style.css shouldn\'t exist in cache');
118     }
119     
120     /**
121      * @group bug35307
122      */
123     public function testOldThemeIsNotRecognized()
124     {
125         $themename = SugarTestThemeUtilities::createAnonymousOldTheme();
126         
127         $this->assertNull(SugarThemeRegistry::get($themename));
128     }
129 }