Newer
Older
Thomas Steur
a validé
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
use Piwik\Plugins\CoreUpdater\UpdateCommunication;
use Piwik\Config;
use Piwik\Option;
use Piwik\UpdateCheck;
use Piwik\Version;
/**
* Class Plugins_CoreUpdater_UpdateCommunicationTest
*
* @group Plugins
*/
class Plugins_CoreUpdater_UpdateCommunicationTest extends DatabaseTestCase
{
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,
Thomas Steur
a validé
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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);
}
}