Skip to content

Commit

Permalink
pkp/pkp-lib#10306 addressed warnings and notification table backup/re…
Browse files Browse the repository at this point in the history
…store
  • Loading branch information
touhidurabir committed Nov 15, 2024
1 parent e99ecac commit aab18f4
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 17 deletions.
43 changes: 39 additions & 4 deletions tests/jobs/notifications/IssuePublishedNotifyUsersTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,19 @@

namespace APP\tests\jobs\notifications;

use APP\core\Application;
use APP\jobs\notifications\IssuePublishedNotifyUsers;
use APP\template\TemplateManager;
use Mockery;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PKP\db\DAORegistry;
use PKP\emailTemplate\Repository as EmailTemplateRepository;
use PKP\tests\PKPTestCase;
use PKP\tests\DatabaseTestCase;

#[RunTestsInSeparateProcesses]
#[CoversClass(IssuePublishedNotifyUsers::class)]
class IssuePublishedNotifyUsersTest extends PKPTestCase
class IssuePublishedNotifyUsersTest extends DatabaseTestCase
{
/**
* base64_encoded serializion from OJS 3.4.0
Expand All @@ -31,6 +33,16 @@ class IssuePublishedNotifyUsersTest extends PKPTestCase
O:48:"APP\\jobs\\notifications\\IssuePublishedNotifyUsers":8:{s:15:"\0*\0recipientIds";O:29:"Illuminate\\Support\\Collection":2:{s:8:"\0*\0items";a:18:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;i:5;i:6;i:6;i:7;i:7;i:8;i:8;i:9;i:9;i:10;i:10;i:11;i:11;i:12;i:12;i:13;i:13;i:14;i:14;i:15;i:15;i:16;i:35;i:37;i:36;i:38;}s:28:"\0*\0escapeWhenCastingToString";b:0;}s:12:"\0*\0contextId";i:1;s:8:"\0*\0issue";O:15:"APP\\issue\\Issue":6:{s:5:"_data";a:21:{s:2:"id";i:2;s:9:"journalId";i:1;s:6:"volume";i:2;s:6:"number";s:1:"1";s:4:"year";i:2015;s:9:"published";i:1;s:13:"datePublished";s:19:"2024-05-23 11:59:46";s:12:"dateNotified";N;s:12:"lastModified";s:19:"2024-05-23 11:59:46";s:12:"accessStatus";i:1;s:14:"openAccessDate";N;s:10:"showVolume";b:1;s:10:"showNumber";b:1;s:8:"showYear";b:1;s:9:"showTitle";b:0;s:13:"styleFileName";N;s:21:"originalStyleFileName";N;s:7:"urlPath";s:0:"";s:5:"doiId";i:5;s:11:"description";a:2:{s:2:"en";s:0:"";s:5:"fr_CA";s:0:"";}s:5:"title";a:2:{s:2:"en";s:0:"";s:5:"fr_CA";s:0:"";}}s:20:"_hasLoadableAdapters";b:0;s:27:"_metadataExtractionAdapters";a:0:{}s:25:"_extractionAdaptersLoaded";b:0;s:26:"_metadataInjectionAdapters";a:0:{}s:24:"_injectionAdaptersLoaded";b:0;}s:9:"\0*\0locale";s:2:"en";s:9:"\0*\0sender";O:13:"PKP\\user\\User":7:{s:5:"_data";a:22:{s:2:"id";i:1;s:8:"userName";s:5:"admin";s:8:"password";s:60:"$2y$10\$uFmYXg8/Ufa0HbskyW57Be22stFGY5qtxJZmTOae3PfDB86V3x7BW";s:5:"email";s:23:"[email protected]";s:3:"url";N;s:5:"phone";N;s:14:"mailingAddress";N;s:14:"billingAddress";N;s:7:"country";N;s:7:"locales";a:0:{}s:6:"gossip";N;s:13:"dateLastEmail";N;s:14:"dateRegistered";s:19:"2023-02-28 20:19:07";s:13:"dateValidated";N;s:13:"dateLastLogin";s:19:"2024-05-22 19:05:03";s:18:"mustChangePassword";N;s:7:"authStr";N;s:8:"disabled";b:0;s:14:"disabledReason";N;s:10:"inlineHelp";b:1;s:10:"familyName";a:1:{s:2:"en";s:5:"admin";}s:9:"givenName";a:1:{s:2:"en";s:5:"admin";}}s:20:"_hasLoadableAdapters";b:0;s:27:"_metadataExtractionAdapters";a:0:{}s:25:"_extractionAdaptersLoaded";b:0;s:26:"_metadataInjectionAdapters";a:0:{}s:24:"_injectionAdaptersLoaded";b:0;s:9:"\0*\0_roles";a:0:{}}s:10:"connection";s:8:"database";s:5:"queue";s:5:"queue";s:7:"batchId";s:36:"9c1c1368-8bb4-4179-a350-403decb700ba";}
END;

/**
* @see \PKP\tests\DatabaseTestCase@getAffectedTables
*/
protected function getAffectedTables(): array
{
return [
'notifications'
];
}

/**
* Test job is a proper instance
*/
Expand All @@ -55,11 +67,20 @@ public function testRunSerializedJob(): void
/** @var IssuePublishedNotifyUsers $issuePublishedNotifyUsersJob */
$issuePublishedNotifyUsersJob = unserialize(($this->serializedJobData));

$contextMock = Mockery::mock(get_class(Application::getContextDAO()->newDataObject()))
->makePartial()
->shouldReceive([
'getId' => 1,
'getLocalizedData' => '',
])
->withAnyArgs()
->getMock();

$journalDAOMock = Mockery::mock(\APP\journal\JournalDAO::class)
->makePartial()
->shouldReceive('getId')
->shouldReceive('getById')
->withAnyArgs()
->andReturn(new \APP\journal\JournalDAO())
->andReturn($contextMock)
->getMock();

DAORegistry::registerDAO('JournalDAO', $journalDAOMock);
Expand All @@ -82,6 +103,20 @@ public function testRunSerializedJob(): void

app()->instance(EmailTemplateRepository::class, $emailTemplateRepoMock);

$notificationSettingsDaoMock = Mockery::mock(\PKP\notification\NotificationSettingsDAO::class)
->makePartial()
->shouldReceive('updateNotificationSetting')
->withAnyArgs()
->andReturn(null)
->getMock();

DAORegistry::registerDAO('NotificationSettingsDAO', $notificationSettingsDaoMock);

TemplateManager::getManager()->assign([
'heading' => null,
'pubIdPlugins' => [],
]);

$issuePublishedNotifyUsersJob->handle();

$this->expectNotToPerformAssertions();
Expand Down
47 changes: 34 additions & 13 deletions tests/jobs/notifications/OpenAccessMailUsersTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,19 @@

namespace APP\tests\jobs\notifications;

use APP\core\Application;
use APP\issue\Repository as IssueRepository;
use APP\jobs\notifications\OpenAccessMailUsers;
use Mockery;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PKP\db\DAORegistry;
use PKP\emailTemplate\Repository as EmailTemplateRepository;
use PKP\tests\PKPTestCase;
use PKP\tests\DatabaseTestCase;

#[RunTestsInSeparateProcesses]
#[CoversClass(OpenAccessMailUsers::class)]
class OpenAccessMailUsersTest extends PKPTestCase
class OpenAccessMailUsersTest extends DatabaseTestCase
{
/**
* base64_encoded serializion from OJS 3.4.0
Expand All @@ -32,6 +33,16 @@ class OpenAccessMailUsersTest extends PKPTestCase
O:42:"APP\\jobs\\notifications\\OpenAccessMailUsers":6:{s:10:"\0*\0userIds";O:29:"Illuminate\\Support\\Collection":2:{s:8:"\0*\0items";a:2:{i:0;i:1;i:1;i:2;}s:28:"\0*\0escapeWhenCastingToString";b:0;}s:12:"\0*\0contextId";i:1;s:10:"\0*\0issueId";i:1;s:10:"connection";s:8:"database";s:5:"queue";s:5:"queue";s:7:"batchId";s:36:"9c1c4502-5261-4b4a-965c-256cd0eaaaa4";}
END;

/**
* @see \PKP\tests\DatabaseTestCase@getAffectedTables
*/
protected function getAffectedTables(): array
{
return [
'notifications'
];
}

/**
* Test job is a proper instance
*/
Expand All @@ -56,20 +67,21 @@ public function testRunSerializedJob(): void
/** @var OpenAccessMailUsers $openAccessMailUsersJob */
$openAccessMailUsersJob = unserialize($this->serializedJobData);

$contextMock = Mockery::mock(get_class(Application::getContextDAO()->newDataObject()))
->makePartial()
->shouldReceive([
'getId' => 0,
'getLocalizedData' => '',
'getPrimaryLocale' => 'en',
])
->withAnyArgs()
->getMock();

$journalDAOMock = Mockery::mock(\APP\journal\JournalDAO::class)
->makePartial()
->shouldReceive('getId')
->shouldReceive('getById')
->withAnyArgs()
->andReturn(
Mockery::mock(\APP\journal\Journal::class)
->makePartial()
->shouldReceive([
'getData' => '',
'getPrimaryLocale' => 'en'
])
->withAnyArgs()
->getMock()
)
->andReturn($contextMock)
->getMock();

DAORegistry::registerDAO('JournalDAO', $journalDAOMock);
Expand Down Expand Up @@ -102,6 +114,15 @@ public function testRunSerializedJob(): void

app()->instance(EmailTemplateRepository::class, $emailTemplateRepoMock);

$notificationSettingsDaoMock = Mockery::mock(\PKP\notification\NotificationSettingsDAO::class)
->makePartial()
->shouldReceive('updateNotificationSetting')
->withAnyArgs()
->andReturn(null)
->getMock();

DAORegistry::registerDAO('NotificationSettingsDAO', $notificationSettingsDaoMock);

$openAccessMailUsersJob->handle();

$this->expectNotToPerformAssertions();
Expand Down

0 comments on commit aab18f4

Please sign in to comment.