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 Sep 15, 2024
1 parent de6e1a7 commit b0ddfa3
Show file tree
Hide file tree
Showing 8 changed files with 619 additions and 1 deletion.
1 change: 0 additions & 1 deletion tests/jobs/.gitkeep

This file was deleted.

88 changes: 88 additions & 0 deletions tests/jobs/statistics/CompileCounterSubmissionDailyMetricsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?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 OPS 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);


$compileCounterSubmissionDailyMetricsJob->handle();

$this->expectNotToPerformAssertions();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?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 OPS 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,
'compileCounterSubmissionDailyMetrics' => 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);


$compileCounterSubmissionInstitutionDailyMetricsJob->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 OPS 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);

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

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

$compileSubmissionGeoDailyMetricsJob->handle();

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

/**
* @file tests/jobs/statistics/CompileUniqueInvestigationsTest.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 unique investigations job.
*/

namespace APP\tests\jobs\statistics;

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

#[RunTestsInSeparateProcesses]
#[CoversClass(CompileUniqueInvestigations::class)]
class CompileUniqueInvestigationsTest extends PKPTestCase
{
/**
* base64_encoded serializion from OPS 3.4.0
*/
protected string $serializedJobData = <<<END
O:47:"APP\jobs\statistics\CompileUniqueInvestigations":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(
CompileUniqueInvestigations::class,
unserialize($this->serializedJobData)
);
}

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

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

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

$compileUniqueInvestigationsJob->handle();

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

/**
* @file tests/jobs/statistics/CompileUniqueRequestsTest.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 unique requests job.
*/

namespace APP\tests\jobs\statistics;

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

#[RunTestsInSeparateProcesses]
#[CoversClass(CompileUniqueRequests::class)]
class CompileUniqueRequestsTest extends PKPTestCase
{
/**
* base64_encoded serializion from OPS 3.4.0
*/
protected string $serializedJobData = <<<END
O:41:"APP\jobs\statistics\CompileUniqueRequests":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(
CompileUniqueRequests::class,
unserialize($this->serializedJobData)
);
}

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

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

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

$compileUniqueRequestsJob->handle();

$this->expectNotToPerformAssertions();
}
}
Loading

0 comments on commit b0ddfa3

Please sign in to comment.