backup_dashlet_auto_refresh_min = $GLOBALS['sugar_config']['dashlet_auto_refresh_min']; } unset($GLOBALS['sugar_config']['dashlet_auto_refresh_min']); } public function tearDown() { if ( isset($this->backup_dashlet_auto_refresh_min) ) { $GLOBALS['sugar_config']['dashlet_auto_refresh_min'] = $this->backup_dashlet_auto_refresh_min; } } public function testIsAutoRefreshableIfRefreshable() { $dashlet = new DashletAutoRefreshTestMock('unit_test_run'); $dashlet->isRefreshable = true; $this->assertTrue($dashlet->isAutoRefreshable()); } public function testIsNotAutoRefreshableIfNotRefreshable() { $dashlet = new DashletAutoRefreshTestMock('unit_test_run'); $dashlet->isRefreshable = false; $this->assertFalse($dashlet->isAutoRefreshable()); } public function testReturnCorrectAutoRefreshOptionsWhenMinIsSet() { $langpack = new SugarTestLangPackCreator(); $langpack->setAppListString('dashlet_auto_refresh_options', array( '-1' => 'Never', '30' => 'Every 30 seconds', '60' => 'Every 1 minute', '180' => 'Every 3 minutes', '300' => 'Every 5 minutes', '600' => 'Every 10 minutes', ) ); $langpack->save(); $GLOBALS['sugar_config']['dashlet_auto_refresh_min'] = 60; $dashlet = new DashletAutoRefreshTestMock('unit_test_run'); $options = $dashlet->getAutoRefreshOptions(); $this->assertEquals( array( '-1' => 'Never', '60' => 'Every 1 minute', '180' => 'Every 3 minutes', '300' => 'Every 5 minutes', '600' => 'Every 10 minutes', ), $options ); unset($langpack); } public function testReturnCorrectAutoRefreshOptionsWhenMinIsNotSet() { $langpack = new SugarTestLangPackCreator(); $langpack->setAppListString('dashlet_auto_refresh_options', array( '-1' => 'Never', '30' => 'Every 30 seconds', '60' => 'Every 1 minute', '180' => 'Every 3 minutes', '300' => 'Every 5 minutes', '600' => 'Every 10 minutes', ) ); $langpack->save(); $dashlet = new DashletAutoRefreshTestMock('unit_test_run'); $options = $dashlet->getAutoRefreshOptions(); $this->assertEquals( array( '-1' => 'Never', '30' => 'Every 30 seconds', '60' => 'Every 1 minute', '180' => 'Every 3 minutes', '300' => 'Every 5 minutes', '600' => 'Every 10 minutes', ), $options ); unset($langpack); } public function testProcessAutoRefreshReturnsAutoRefreshTemplateNormally() { $dashlet = new DashletAutoRefreshTestMock('unit_test_run'); $dashlet->isRefreshable = true; $_REQUEST['module'] = 'unit_test'; $_REQUEST['action'] = 'unit_test'; $dashlet->seedBean = new stdClass; $dashlet->seedBean->object_name = 'unit_test'; $this->assertNotEmpty($dashlet->processAutoRefresh()); } public function testProcessAutoRefreshReturnsNothingIfDashletIsNotRefreshable() { $dashlet = new DashletAutoRefreshTestMock('unit_test_run'); $dashlet->isRefreshable = false; $_REQUEST['module'] = 'unit_test'; $_REQUEST['action'] = 'unit_test'; $dashlet->seedBean = new stdClass; $dashlet->seedBean->object_name = 'unit_test'; $this->assertEmpty($dashlet->processAutoRefresh()); } public function testProcessAutoRefreshReturnsNothingIfSystemLevelAutoRefreshingIsDisabled() { $dashlet = new DashletAutoRefreshTestMock('unit_test_run'); $GLOBALS['sugar_config']['dashlet_auto_refresh_min'] = -1; $_REQUEST['module'] = 'unit_test'; $_REQUEST['action'] = 'unit_test'; $dashlet->seedBean = new stdClass; $dashlet->seedBean->object_name = 'unit_test'; $this->assertEmpty($dashlet->processAutoRefresh()); } /** * Tests whether dashlet ignores system settings if user disables auto refresh. * @bug 52331 * @dataProvider refreshCases * @param int $systemValue * @param int $dashletValue * @param int $forceSystemValue */ public function testAllowAutoRefresh($systemValue, $dashletValue, $forceSystemValue) { $dashlet = new DashletAutoRefreshTestMock('unit_test_run'); $GLOBALS['sugar_config']['dashlet_auto_refresh_min'] = $systemValue; $dashlet->autoRefresh = $dashletValue; $this->assertEquals($forceSystemValue, $dashlet->getAutoRefresh()); } public function refreshCases() { return array( array(20, null, 0), array(20, 10, 20000), array(10, 20, 20000), array(20, -1, 0) ); } } class DashletAutoRefreshTestMock extends Dashlet { public function isAutoRefreshable() { return parent::isAutoRefreshable(); } public function getAutoRefreshOptions() { return parent::getAutoRefreshOptions(); } public function processAutoRefresh() { return parent::processAutoRefresh(); } public function getAutoRefresh() { return parent::getAutoRefresh(); } }