Skip to content

Commit

Permalink
pkp/pkp-lib#10306 unit tests for queue jobs
Browse files Browse the repository at this point in the history
  • Loading branch information
touhidurabir committed Aug 29, 2024
1 parent 62d2ba5 commit d6cc982
Show file tree
Hide file tree
Showing 9 changed files with 788 additions and 1 deletion.
1 change: 0 additions & 1 deletion tests/jobs/.gitkeep

This file was deleted.

107 changes: 107 additions & 0 deletions tests/jobs/statistics/CompileCounterSubmissionDailyMetricsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<?php

/**
* @file tests/jobs/statistics/CompileCounterSubmissionDailyMetricsTest.php
*
* Copyright (c) 2024 Simon Fraser University
* Copyright (c) 2024 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief Tests for compile counter submission daily metrics job.
*/

namespace APP\tests\jobs\statistics;

use APP\jobs\statistics\CompileCounterSubmissionDailyMetrics;
use Mockery;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PKP\db\DAORegistry;
use PKP\tests\PKPTestCase;

#[RunTestsInSeparateProcesses]
#[CoversClass(CompileCounterSubmissionDailyMetrics::class)]
class CompileCounterSubmissionDailyMetricsTest extends PKPTestCase
{
/**
* base64_encoded serializion from OMP 3.4.0
*/
protected string $serializedJobData = <<<END
O:56:"APP\jobs\statistics\CompileCounterSubmissionDailyMetrics":3:{s:9:"\0*\0loadId";s:25:"usage_events_20240130.log";s:10:"connection";s:8:"database";s:5:"queue";s:5:"queue";}
END;

/**
* Test job is a proper instance
*/
public function testUnserializationGetProperDepositIssueJobInstance(): void
{
$this->assertInstanceOf(
CompileCounterSubmissionDailyMetrics::class,
unserialize($this->serializedJobData)
);
}

/**
* Ensure that a serialized job can be unserialized and executed
*/
public function testRunSerializedJob(): void
{
/** @var CompileCounterSubmissionDailyMetrics $compileCounterSubmissionDailyMetricsJob */
$compileCounterSubmissionDailyMetricsJob = unserialize($this->serializedJobData);

$temporaryTotalsDAOMock = Mockery::mock(\APP\statistics\TemporaryTotalsDAO::class)
->makePartial()
->shouldReceive([
'deleteCounterSubmissionDailyByLoadId' => null,
'compileCounterSubmissionDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryTotalsDAO', $temporaryTotalsDAOMock);

$temporaryItemInvestigationsDAOMock = Mockery::mock(\APP\statistics\TemporaryItemInvestigationsDAO::class)
->makePartial()
->shouldReceive([
'compileCounterSubmissionDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryItemInvestigationsDAO', $temporaryItemInvestigationsDAOMock);

$temporaryItemRequestsDAOMock = Mockery::mock(\APP\statistics\TemporaryItemRequestsDAO::class)
->makePartial()
->shouldReceive([
'compileCounterSubmissionDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryItemRequestsDAO', $temporaryItemRequestsDAOMock);

$temporaryTitleInvestigationsDAOMock = Mockery::mock(\APP\statistics\TemporaryTitleInvestigationsDAO::class)
->makePartial()
->shouldReceive([
'compileCounterSubmissionDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryTitleInvestigationsDAO', $temporaryTitleInvestigationsDAOMock);

$temporaryTitleRequestsDAO = Mockery::mock(\APP\statistics\TemporaryTitleRequestsDAO::class)
->makePartial()
->shouldReceive([
'compileCounterSubmissionDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryTitleRequestsDAO', $temporaryTitleRequestsDAO);

$compileCounterSubmissionDailyMetricsJob->handle();

$this->expectNotToPerformAssertions();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<?php

/**
* @file tests/jobs/statistics/CompileCounterSubmissionInstitutionDailyMetricsTest.php
*
* Copyright (c) 2024 Simon Fraser University
* Copyright (c) 2024 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief Tests for compile counter submission institution daily metrics job.
*/

namespace APP\tests\jobs\statistics;

use APP\jobs\statistics\CompileCounterSubmissionInstitutionDailyMetrics;
use Mockery;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PKP\db\DAORegistry;
use PKP\tests\PKPTestCase;

#[RunTestsInSeparateProcesses]
#[CoversClass(CompileCounterSubmissionInstitutionDailyMetrics::class)]
class CompileCounterSubmissionInstitutionDailyMetricsTest extends PKPTestCase
{
/**
* base64_encoded serializion from OMP 3.4.0
*/
protected string $serializedJobData = <<<END
O:67:"APP\jobs\statistics\CompileCounterSubmissionInstitutionDailyMetrics":3:{s:9:"\0*\0loadId";s:25:"usage_events_20240130.log";s:10:"connection";s:8:"database";s:5:"queue";s:5:"queue";}
END;

/**
* Test job is a proper instance
*/
public function testUnserializationGetProperDepositIssueJobInstance(): void
{
$this->assertInstanceOf(
CompileCounterSubmissionInstitutionDailyMetrics::class,
unserialize($this->serializedJobData)
);
}

/**
* Ensure that a serialized job can be unserialized and executed
*/
public function testRunSerializedJob(): void
{
/** @var CompileCounterSubmissionInstitutionDailyMetrics $compileCounterSubmissionInstitutionDailyMetricsJob */
$compileCounterSubmissionInstitutionDailyMetricsJob = unserialize($this->serializedJobData);

$temporaryTotalsDAOMock = Mockery::mock(\APP\statistics\TemporaryTotalsDAO::class)
->makePartial()
->shouldReceive([
'deleteCounterSubmissionInstitutionDailyByLoadId' => null,
'compileCounterSubmissionInstitutionDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryTotalsDAO', $temporaryTotalsDAOMock);

$temporaryItemInvestigationsDAOMock = Mockery::mock(\APP\statistics\TemporaryItemInvestigationsDAO::class)
->makePartial()
->shouldReceive([
'compileCounterSubmissionInstitutionDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryItemInvestigationsDAO', $temporaryItemInvestigationsDAOMock);

$temporaryItemRequestsDAOMock = Mockery::mock(\APP\statistics\TemporaryItemRequestsDAO::class)
->makePartial()
->shouldReceive([
'compileCounterSubmissionInstitutionDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryItemRequestsDAO', $temporaryItemRequestsDAOMock);

$temporaryTitleInvestigationsDAOMock = Mockery::mock(\APP\statistics\TemporaryTitleInvestigationsDAO::class)
->makePartial()
->shouldReceive([
'compileCounterSubmissionInstitutionDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryTitleInvestigationsDAO', $temporaryTitleInvestigationsDAOMock);

$temporaryTitleRequestsDAO = Mockery::mock(\APP\statistics\TemporaryTitleRequestsDAO::class)
->makePartial()
->shouldReceive([
'compileCounterSubmissionInstitutionDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryTitleRequestsDAO', $temporaryTitleRequestsDAO);

$compileCounterSubmissionInstitutionDailyMetricsJob->handle();

$this->expectNotToPerformAssertions();
}
}
67 changes: 67 additions & 0 deletions tests/jobs/statistics/CompileSeriesMetricsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<?php

/**
* @file tests/jobs/statistics/CompileCounterSubmissionInstitutionDailyMetricsTest.php
*
* Copyright (c) 2024 Simon Fraser University
* Copyright (c) 2024 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief Tests for compile series metrics job.
*/

namespace APP\tests\jobs\statistics;

use APP\jobs\statistics\CompileSeriesMetrics;
use Mockery;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PKP\db\DAORegistry;
use PKP\tests\PKPTestCase;

#[RunTestsInSeparateProcesses]
#[CoversClass(CompileSeriesMetrics::class)]
class CompileSeriesMetricsTest extends PKPTestCase
{
/**
* base64_encoded serializion from OMP 3.4.0
*/
protected string $serializedJobData = <<<END
O:40:"APP\jobs\statistics\CompileSeriesMetrics":3:{s:9:"\0*\0loadId";s:25:"usage_events_20240130.log";s:10:"connection";s:8:"database";s:5:"queue";s:5:"queue";}
END;

/**
* Test job is a proper instance
*/
public function testUnserializationGetProperDepositIssueJobInstance(): void
{
$this->assertInstanceOf(
CompileSeriesMetrics::class,
unserialize($this->serializedJobData)
);
}

/**
* Ensure that a serialized job can be unserialized and executed
*/
public function testRunSerializedJob(): void
{
/** @var CompileSeriesMetrics $compileSeriesMetricsJob */
$compileSeriesMetricsJob = unserialize($this->serializedJobData);

$temporaryTotalsDAOMock = Mockery::mock(\APP\statistics\TemporaryTotalsDAO::class)
->makePartial()
->shouldReceive([
'compileSeriesMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryTotalsDAO', $temporaryTotalsDAOMock);


$compileSeriesMetricsJob->handle();

$this->expectNotToPerformAssertions();
}
}
77 changes: 77 additions & 0 deletions tests/jobs/statistics/CompileSubmissionGeoDailyMetricsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<?php

/**
* @file tests/jobs/statistics/CompileSubmissionGeoDailyMetricsTest.php
*
* Copyright (c) 2024 Simon Fraser University
* Copyright (c) 2024 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief Tests for compile submission geo daily metrics job.
*/

namespace APP\tests\jobs\statistics;

use APP\jobs\statistics\CompileSubmissionGeoDailyMetrics;
use Mockery;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PKP\db\DAORegistry;
use PKP\tests\PKPTestCase;

#[RunTestsInSeparateProcesses]
#[CoversClass(CompileSubmissionGeoDailyMetrics::class)]
class CompileSubmissionGeoDailyMetricsTest extends PKPTestCase
{
/**
* base64_encoded serializion from OMP 3.4.0
*/
protected string $serializedJobData = <<<END
O:52:"APP\jobs\statistics\CompileSubmissionGeoDailyMetrics":3:{s:9:"\0*\0loadId";s:25:"usage_events_20240130.log";s:10:"connection";s:8:"database";s:5:"queue";s:5:"queue";}
END;

/**
* Test job is a proper instance
*/
public function testUnserializationGetProperDepositIssueJobInstance(): void
{
$this->assertInstanceOf(
CompileSubmissionGeoDailyMetrics::class,
unserialize($this->serializedJobData)
);
}

/**
* Ensure that a serialized job can be unserialized and executed
*/
public function testRunSerializedJob(): void
{
/** @var CompileSubmissionGeoDailyMetrics $compileSubmissionGeoDailyMetricsJob */
$compileSubmissionGeoDailyMetricsJob = unserialize($this->serializedJobData);

$temporaryTotalsDAOMock = Mockery::mock(\APP\statistics\TemporaryTotalsDAO::class)
->makePartial()
->shouldReceive([
'deleteSubmissionGeoDailyByLoadId' => null,
'compileSubmissionGeoDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryTotalsDAO', $temporaryTotalsDAOMock);

$temporaryTitleInvestigationsDAOMock = Mockery::mock(\APP\statistics\TemporaryTitleInvestigationsDAO::class)
->makePartial()
->shouldReceive([
'compileSubmissionGeoDailyMetrics' => null,
])
->withAnyArgs()
->getMock();

DAORegistry::registerDAO('TemporaryTitleInvestigationsDAO', $temporaryTitleInvestigationsDAOMock);

$compileSubmissionGeoDailyMetricsJob->handle();

$this->expectNotToPerformAssertions();
}
}
Loading

0 comments on commit d6cc982

Please sign in to comment.