2 require_once 'include/SugarTheme/SugarTheme.php';
3 require_once 'include/dir_inc.php';
5 class SugarThemeRegistryTest extends Sugar_PHPUnit_Framework_TestCase
9 public function setup()
11 $this->_themeName = SugarTestThemeUtilities::createAnonymousTheme();
13 SugarThemeRegistry::buildRegistry();
16 public function tearDown()
18 SugarTestThemeUtilities::removeAllCreatedAnonymousThemes();
21 public function testThemesRegistered()
23 $this->assertTrue(SugarThemeRegistry::exists($this->_themeName));
26 public function testGetThemeObject()
28 $object = SugarThemeRegistry::get($this->_themeName);
30 $this->assertType('SugarTheme',$object);
31 $this->assertEquals($object->__toString(),$this->_themeName);
34 public function testSetCurrentTheme()
36 SugarThemeRegistry::set($this->_themeName);
38 $this->assertType('SugarTheme',SugarThemeRegistry::current());
39 $this->assertEquals(SugarThemeRegistry::current()->__toString(),$this->_themeName);
42 public function testInListOfAvailableThemes()
44 if ( isset($GLOBALS['sugar_config']['disabled_themes']) ) {
45 $disabled_themes = $GLOBALS['sugar_config']['disabled_themes'];
46 unset($GLOBALS['sugar_config']['disabled_themes']);
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]));
56 if ( isset($disabled_themes) )
57 $GLOBALS['sugar_config']['disabled_themes'] = $disabled_themes;
60 public function testDisabledThemeNotInListOfAvailableThemes()
62 if ( isset($GLOBALS['sugar_config']['disabled_themes']) ) {
63 $disabled_themes = $GLOBALS['sugar_config']['disabled_themes'];
64 unset($GLOBALS['sugar_config']['disabled_themes']);
67 $GLOBALS['sugar_config']['disabled_themes'] = $this->_themeName;
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]));
76 if ( isset($disabled_themes) )
77 $GLOBALS['sugar_config']['disabled_themes'] = $disabled_themes;
80 public function testCustomThemeLoaded()
82 $customTheme = SugarTestThemeUtilities::createAnonymousCustomTheme($this->_themeName);
84 SugarThemeRegistry::buildRegistry();
87 SugarThemeRegistry::get($customTheme)->name,
88 'custom ' . $customTheme
92 public function testDefaultThemedefFileHandled()
94 create_custom_directory('themes/default/');
95 sugar_file_put_contents('custom/themes/default/themedef.php','<?php $themedef = array("group_tabs" => false);');
97 SugarThemeRegistry::buildRegistry();
100 SugarThemeRegistry::get($this->_themeName)->group_tabs,
104 unlink('custom/themes/default/themedef.php');
107 public function testClearCacheAllThemes()
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');
113 SugarThemeRegistry::clearAllCaches();
114 SugarThemeRegistry::buildRegistry();
116 $this->assertFalse(isset(SugarThemeRegistry::get($this->_themeName)->_cssCache['style.css']),
117 'File style.css shouldn\'t exist in cache');
123 public function testOldThemeIsNotRecognized()
125 $themename = SugarTestThemeUtilities::createAnonymousOldTheme();
127 $this->assertNull(SugarThemeRegistry::get($themename));