diff --git a/core/Singleton.php b/core/Singleton.php index 7e7679c67aa63d7be9d7680bc990d1ca1afdc449..73bbd261963ecf05938eb59445180883969b373c 100644 --- a/core/Singleton.php +++ b/core/Singleton.php @@ -34,4 +34,13 @@ class Singleton $class = get_called_class(); unset(self::$instances[$class]); } + + /** + * Sets the singleton instance. For testing purposes. + */ + public static function setSingletonInstance($instance) + { + $class = get_called_class(); + self::$instances[$class] = $instance; + } } diff --git a/tests/PHPUnit/Plugins/MobileMessagingTest.php b/tests/PHPUnit/Plugins/MobileMessagingTest.php index be6c6bdf6dc1a7ee8525536f3f059e1f75a25ee7..f39bce51615935422dca7c3576908a5deae18689 100644 --- a/tests/PHPUnit/Plugins/MobileMessagingTest.php +++ b/tests/PHPUnit/Plugins/MobileMessagingTest.php @@ -213,7 +213,7 @@ class MobileMessagingTest extends DatabaseTestCase */ public function testPhoneNumberIsSanitized() { - $mobileMessagingAPI = new APIMobileMessaging(); + $mobileMessagingAPI = APIMobileMessaging::getInstance(); $mobileMessagingAPI->setSMSAPICredential('StubbedProvider', ''); $mobileMessagingAPI->addPhoneNumber(' 6 76 93 26 47'); $this->assertEquals('676932647', key($mobileMessagingAPI->getPhoneNumbers())); @@ -246,21 +246,18 @@ class MobileMessagingTest extends DatabaseTestCase ), ); - $stubbedAPIMobileMessaging = $this->getMock('\\Piwik\\Plugins\\MobileMessaging\\API'); + $stubbedAPIMobileMessaging = $this->getMock('\\Piwik\\Plugins\\MobileMessaging\\API', array('sendSMS', 'getInstance'), $arguments = array(), $mockClassName = '', $callOriginalConstructor = false); $stubbedAPIMobileMessaging->expects($this->once())->method('sendSMS')->with( $this->equalTo($expectedReportContent, 0), $this->equalTo($expectedPhoneNumber, 1), $this->equalTo($expectedFrom, 2) ); - $stubbedAPIMobileMessagingClass = new ReflectionProperty('\\Piwik\\Plugins\\MobileMessaging\\API', 'instance'); - $stubbedAPIMobileMessagingClass->setAccessible(true); - $stubbedAPIMobileMessagingClass->setValue($stubbedAPIMobileMessaging); + \Piwik\Plugins\MobileMessaging\API::setSingletonInstance($stubbedAPIMobileMessaging); $mobileMessaging = new MobileMessaging(); $mobileMessaging->sendReport($notificationInfo); - // restore API - $stubbedAPIMobileMessagingClass->setValue(null); + \Piwik\Plugins\MobileMessaging\API::unsetInstance(); } } diff --git a/tests/PHPUnit/Plugins/ScheduledReportsTest.php b/tests/PHPUnit/Plugins/ScheduledReportsTest.php index 71c2b17caca39fab6bd32eb33ea572320fd9630c..f46390a1763b5a0b084f498bbeecc9de843c95f0 100644 --- a/tests/PHPUnit/Plugins/ScheduledReportsTest.php +++ b/tests/PHPUnit/Plugins/ScheduledReportsTest.php @@ -356,14 +356,11 @@ class ScheduledReportsTest extends DatabaseTestCase $report6['period'] = ScheduledTime::PERIOD_NEVER; $report6['deleted'] = 0; - $stubbedAPIScheduledReports = $this->getMock('\\Piwik\\Plugins\\ScheduledReports\\API'); + $stubbedAPIScheduledReports = $this->getMock('\\Piwik\\Plugins\\ScheduledReports\\API', array('getReports', 'getInstance'), $arguments = array(), $mockClassName = '', $callOriginalConstructor = false); $stubbedAPIScheduledReports->expects($this->any())->method('getReports')->will($this->returnValue( array($report1, $report2, $report3, $report4, $report5, $report6)) ); - - $stubbedAPIScheduledReportsClass = new ReflectionProperty('\\Piwik\\Plugins\\ScheduledReports\\API', 'instance'); - $stubbedAPIScheduledReportsClass->setAccessible(true); - $stubbedAPIScheduledReportsClass->setValue($stubbedAPIScheduledReports); + \Piwik\Plugins\ScheduledReports\API::setSingletonInstance($stubbedAPIScheduledReports); // initialize sites 1 and 2 Site::$infoSites = array( @@ -396,8 +393,8 @@ class ScheduledReportsTest extends DatabaseTestCase $pdfReportPlugin->getScheduledTasks($tasks); $this->assertEquals($expectedTasks, $tasks); - // restore API - $stubbedAPIScheduledReportsClass->setValue(null); + \Piwik\Plugins\ScheduledReports\API::unsetInstance(); + } /** @@ -424,7 +421,7 @@ class ScheduledReportsTest extends DatabaseTestCase ); $getReportSubjectAndReportTitle->setAccessible(true); - list($reportSubject, $reportTitle) = $getReportSubjectAndReportTitle->invoke(new APIScheduledReports(), $websiteName, $reports); + list($reportSubject, $reportTitle) = $getReportSubjectAndReportTitle->invoke( APIScheduledReports::getInstance(), $websiteName, $reports); $this->assertEquals($expectedReportSubject, $reportSubject); $this->assertEquals($expectedReportTitle, $reportTitle); } diff --git a/tests/PHPUnit/proxy/index.php b/tests/PHPUnit/proxy/index.php index 7d2d40b5506c5d74bf21af4180539c2f05a292b4..59dbab1ec53033f0f081257d53e25174a3d0d3b2 100644 --- a/tests/PHPUnit/proxy/index.php +++ b/tests/PHPUnit/proxy/index.php @@ -21,7 +21,7 @@ Cache::deleteTrackerCache(); define('PIWIK_ENABLE_DISPATCH', false); include PIWIK_INCLUDE_PATH . '/index.php'; -$controller = new \Piwik\FrontController; +$controller = \Piwik\FrontController::getInstance(); $controller->init(); $controller->dispatch();