Open Journal Systems  3.3.0
ScheduledTaskHelperTest.php
1 <?php
2 
17 import('lib.pkp.tests.PKPTestCase');
18 import('lib.pkp.classes.scheduledTask.ScheduledTask');
19 
21 
31  function testNotifyExecutionResultError($taskId, $taskName, $message) {
32  $taskResult = false;
33  $expectedSubject = __(SCHEDULED_TASK_MESSAGE_TYPE_ERROR);
34  $this->_setReportErrorOnly('On');
35  $expectedTestResult = null; // Will send email (it's null because we mocked Mail::send()).
36 
37  $helper = $this->_getHelper($expectedSubject, $message);
38 
39  // Exercise the system.
40  $actualResult = $helper->notifyExecutionResult($taskId, $taskName, $taskResult, $message);
41  $this->assertEquals($expectedTestResult, $actualResult);
42 
43  // Now set report error only to off and we should get the same result.
44  $this->_setReportErrorOnly('Off');
45  $actualResult = $helper->notifyExecutionResult($taskId, $taskName, $taskResult, $message);
46  $this->assertEquals($expectedTestResult, $actualResult);
47  }
48 
58  function testNotifyExecutionResultSuccess($taskId, $taskName, $message) {
59  $taskResult = true;
60  $expectedSubject = __(SCHEDULED_TASK_MESSAGE_TYPE_COMPLETED);
61  $this->_setReportErrorOnly('On');
62  $expectedTestResult = false; // Will NOT send email.
63 
64  $helper = $this->_getHelper($expectedSubject, $message);
65 
66  // Exercise the system.
67  $actualResult = $helper->notifyExecutionResult($taskId, $taskName, $taskResult, $message);
68  $this->assertEquals($expectedTestResult, $actualResult);
69 
70  // Now change the report setting, so success emails will also be sent.
71  $this->_setReportErrorOnly('Off');
72  $expectedTestResult = null; // Will send email.
73  $actualResult = $helper->notifyExecutionResult($taskId, $taskName, $taskResult, $message);
74  $this->assertEquals($expectedTestResult, $actualResult);
75  }
76 
82  return array(array('someTaskId', 'TaskName', 'Any message'));
83  }
84 
85 
86  //
87  // Private helper methods.
88  //
95  private function _getHelper($expectedSubject, $message) {
96  $helperMock = $this->getMockBuilder(ScheduledTaskHelper::class)
97  ->setMethods(array('getMail', 'getMessage'))
98  ->setConstructorArgs(array('some@email.com', 'Contact name'))
99  ->getMock();
100  $helperMock->expects($this->any())
101  ->method('getMessage')
102  ->will($this->returnValue($message));
103 
104  // Helper will use the Mail::send() method. Mock it.
105  import('lib.pkp.classes.mail.Mail');
106  $mailMock = $this->getMockBuilder(Mail::class)
107  ->setMethods(array('send', 'setBody', 'setSubject'))
108  ->getMock();
109 
110  $mailMock->expects($this->any())
111  ->method('send');
112 
113  $mailMock->expects($this->any())
114  ->method('setBody')
115  ->with($this->equalTo($message));
116 
117  $mailMock->expects($this->any())
118  ->method('setSubject')
119  ->with($this->stringContains($expectedSubject));
120 
121  // Inject mail dependency.
122  $helperMock->expects($this->any())
123  ->method('getMail')
124  ->will($this->returnValue($mailMock));
125 
126  return $helperMock;
127  }
128 
133  private function _setReportErrorOnly($state) {
134  $configData =& Config::getData();
135  $configData['general']['scheduled_tasks_report_error_only'] = $state;
136  }
137 }
138 
ScheduledTaskHelperTest\testNotifyExecutionResultSuccess
testNotifyExecutionResultSuccess($taskId, $taskName, $message)
Definition: ScheduledTaskHelperTest.php:58
PKPTestCase
Class that implements functionality common to all PKP unit test cases.
Definition: PKPTestCase.inc.php:27
ScheduledTaskHelperTest\notifyExecutionResultTestsDataProvider
notifyExecutionResultTestsDataProvider()
Definition: ScheduledTaskHelperTest.php:81
ScheduledTaskHelperTest
Tests for the ScheduledTask class.
Definition: ScheduledTaskHelperTest.php:20
ScheduledTaskHelperTest\testNotifyExecutionResultError
testNotifyExecutionResultError($taskId, $taskName, $message)
Definition: ScheduledTaskHelperTest.php:31
Config\getData
static & getData()
Definition: Config.inc.php:44