Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/CoreUpdater/tests/Integration/UpdateCommunicationTest.php')
-rw-r--r--plugins/CoreUpdater/tests/Integration/UpdateCommunicationTest.php121
1 files changed, 121 insertions, 0 deletions
diff --git a/plugins/CoreUpdater/tests/Integration/UpdateCommunicationTest.php b/plugins/CoreUpdater/tests/Integration/UpdateCommunicationTest.php
new file mode 100644
index 0000000000..d4ee8932c9
--- /dev/null
+++ b/plugins/CoreUpdater/tests/Integration/UpdateCommunicationTest.php
@@ -0,0 +1,121 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CoreUpdater\tests;
+
+use Piwik\Config;
+use Piwik\Option;
+use Piwik\Plugins\CoreUpdater\UpdateCommunication;
+use Piwik\UpdateCheck;
+use Piwik\Version;
+
+/**
+ * Class Plugins_CoreUpdater_UpdateCommunicationTest
+ *
+ * @group Plugins
+ */
+class UpdateCommunicationTest extends \IntegrationTestCase
+{
+ public function setUp()
+ {
+ parent::setUp();
+ }
+
+ public function test_isEnabled()
+ {
+ $updateCommunication = new UpdateCommunication();
+
+ $this->assertTrue($updateCommunication->isEnabled());
+
+ Config::getInstance()->General['enable_update_communication'] = 0;
+ $this->assertFalse($updateCommunication->isEnabled());
+
+ Config::getInstance()->General['enable_update_communication'] = 1;
+ $this->assertTrue($updateCommunication->isEnabled());
+ }
+
+ /**
+ * @dataProvider provideSendNotificationData
+ */
+ public function test_sendNotificationIfUpdateAvailable($latestVersion, $lastSentVersion, $expects, $expectedLastSentVersion)
+ {
+ $this->setLatestVersion($latestVersion);
+ $this->setLastSentVersion($lastSentVersion);
+
+ $mock = $this->getCommunicationMock(array('sendNotifications'));
+ $mock->expects($expects)->method('sendNotifications');
+ $mock->sendNotificationIfUpdateAvailable();
+
+ $this->assertEquals($expectedLastSentVersion, $this->getLastSentVersion());
+ }
+
+ public function provideSendNotificationData()
+ {
+ return array(
+ array(Version::VERSION, false, $this->never(), false), // shouldNotSend_IfNoUpdateAvailable
+ array('33.0.0', '33.0.0', $this->never(), '33.0.0'), // shouldNotSend_IfAlreadyNotified
+ array('31.0.0', '33.0.0', $this->never(), '33.0.0'), // shouldNotSend_IfAlreadyNotifiedAboutLaterRelease
+ array('3333.3333.3333-beta10', '31.0.0', $this->never(), '31.0.0'), // shouldNotSend_IfLatestVersionIsNotVersionLike,
+ array('33.0.0', false, $this->once(), '33.0.0'), // shouldSend_IfUpdateAvailableAndNeverSentAnyBefore
+ array('33.0.0', '31.0.0', $this->once(), '33.0.0'), // shouldSend_IfUpdateAvailable
+ );
+ }
+
+ public function test_sendNotifications_shouldSentCorrectEmail()
+ {
+ $this->setLatestVersion('33.0.0');
+
+ $subject = 'CoreUpdater_NotificationSubjectAvailableCoreUpdate';
+ $message = 'ScheduledReports_EmailHello
+
+CoreUpdater_ThereIsNewVersionAvailableForUpdate
+
+CoreUpdater_YouCanUpgradeAutomaticallyOrDownloadPackage
+
+index.php?module=CoreUpdater&action=newVersionAvailable
+
+CoreUpdater_FeedbackRequest
+http://piwik.org/contact/';
+
+ $mock = $this->getCommunicationMock(array('sendEmailNotification'));
+ $mock->expects($this->once())
+ ->method('sendEmailNotification')
+ ->with($this->equalTo($subject), $this->equalTo($message));
+ $mock->sendNotificationIfUpdateAvailable();
+ }
+
+ private function setLastSentVersion($value)
+ {
+ Option::set('last_update_communication_sent_core', $value);
+ }
+
+ private function getLastSentVersion()
+ {
+ return Option::get('last_update_communication_sent_core');
+ }
+
+ private function setLatestVersion($value)
+ {
+ $this->preventVersionIsOverwrittenByActualVersionCheck();
+ Option::set(UpdateCheck::LATEST_VERSION, $value);
+ }
+
+ private function preventVersionIsOverwrittenByActualVersionCheck()
+ {
+ Config::getInstance()->General['enable_auto_update'] = false;
+ }
+
+ /**
+ * @param array $methodsToOverwrite
+ * @return UpdateCommunication
+ */
+ private function getCommunicationMock($methodsToOverwrite)
+ {
+ return $this->getMock('\Piwik\Plugins\CoreUpdater\UpdateCommunication', $methodsToOverwrite);
+ }
+}