2014-12-14 16:47:46 +01:00
|
|
|
<?php
|
|
|
|
|
2016-07-19 20:28:11 +02:00
|
|
|
namespace PHPCensor\Service\Tests;
|
2014-12-14 16:47:46 +01:00
|
|
|
|
2016-07-19 20:28:11 +02:00
|
|
|
use PHPCensor\Model\Build;
|
|
|
|
use PHPCensor\Model\Project;
|
|
|
|
use PHPCensor\Service\BuildStatusService;
|
2014-12-14 16:47:46 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Unit tests for the ProjectService class.
|
2017-03-04 16:39:56 +01:00
|
|
|
*
|
2014-12-14 16:47:46 +01:00
|
|
|
* @author Dan Cryer <dan@block8.co.uk>
|
|
|
|
*/
|
2017-07-24 08:45:52 +02:00
|
|
|
class BuildStatusServiceTest extends \PHPUnit\Framework\TestCase
|
2014-12-14 16:47:46 +01:00
|
|
|
{
|
|
|
|
const BRANCH = 'master';
|
|
|
|
|
|
|
|
/** @var Project */
|
|
|
|
protected $project;
|
|
|
|
|
|
|
|
protected $timezone;
|
|
|
|
|
|
|
|
public function setUp()
|
|
|
|
{
|
|
|
|
$project = new Project();
|
|
|
|
$project->setId(3);
|
|
|
|
$project->setBranch(self::BRANCH);
|
|
|
|
$project->setTitle('Test');
|
|
|
|
|
|
|
|
$this->project = $project;
|
|
|
|
$this->timezone = date_default_timezone_get();
|
|
|
|
|
|
|
|
date_default_timezone_set('UTC');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function tearDown()
|
|
|
|
{
|
|
|
|
date_default_timezone_set($this->timezone);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param $configId
|
|
|
|
* @param bool $setProject
|
|
|
|
* @return Build
|
|
|
|
*/
|
|
|
|
protected function getBuild($configId, $setProject = true)
|
|
|
|
{
|
2016-08-25 18:13:19 +02:00
|
|
|
$config = [
|
|
|
|
'1' => [
|
|
|
|
'status' => Build::STATUS_RUNNING,
|
|
|
|
'id' => 77,
|
2014-12-14 16:47:46 +01:00
|
|
|
'finishDateTime' => null,
|
2016-08-25 18:13:19 +02:00
|
|
|
'startedDate' => '2014-10-25 21:20:02',
|
|
|
|
'previousBuild' => null,
|
|
|
|
],
|
|
|
|
'2' => [
|
|
|
|
'status' => Build::STATUS_RUNNING,
|
|
|
|
'id' => 78,
|
2014-12-14 16:47:46 +01:00
|
|
|
'finishDateTime' => null,
|
2016-08-25 18:13:19 +02:00
|
|
|
'startedDate' => '2014-10-25 21:20:02',
|
|
|
|
'previousBuild' => 4,
|
|
|
|
],
|
|
|
|
'3' => [
|
|
|
|
'status' => Build::STATUS_SUCCESS,
|
|
|
|
'id' => 7,
|
2014-12-14 16:47:46 +01:00
|
|
|
'finishDateTime' => '2014-10-25 21:50:02',
|
2016-08-25 18:13:19 +02:00
|
|
|
'startedDate' => '2014-10-25 21:20:02',
|
|
|
|
'previousBuild' => null,
|
|
|
|
],
|
|
|
|
'4' => [
|
|
|
|
'status' => Build::STATUS_FAILED,
|
|
|
|
'id' => 13,
|
2014-12-14 16:47:46 +01:00
|
|
|
'finishDateTime' => '2014-10-13 13:13:13',
|
2016-08-25 18:13:19 +02:00
|
|
|
'previousBuild' => null,
|
|
|
|
],
|
|
|
|
'5' => [
|
2017-02-01 15:53:31 +01:00
|
|
|
'status' => Build::STATUS_PENDING,
|
2016-08-25 18:13:19 +02:00
|
|
|
'id' => 1000,
|
2014-12-14 16:47:46 +01:00
|
|
|
'finishDateTime' => '2014-12-25 21:12:21',
|
2016-08-25 18:13:19 +02:00
|
|
|
'previousBuild' => 3,
|
|
|
|
]
|
|
|
|
];
|
2014-12-14 16:47:46 +01:00
|
|
|
|
|
|
|
$build = new Build();
|
|
|
|
$build->setId($config[$configId]['id']);
|
|
|
|
$build->setBranch(self::BRANCH);
|
|
|
|
$build->setStatus($config[$configId]['status']);
|
|
|
|
if ($config[$configId]['finishDateTime']) {
|
2017-10-15 16:58:36 +02:00
|
|
|
$build->setFinishDate(new \DateTime($config[$configId]['finishDateTime']));
|
2014-12-14 16:47:46 +01:00
|
|
|
}
|
|
|
|
if (!empty($config[$configId]['startedDate'])) {
|
2017-10-15 16:58:36 +02:00
|
|
|
$build->setStartDate(new \DateTime('2014-10-25 21:20:02'));
|
2014-12-14 16:47:46 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
$project = $this->getProjectMock($config[$configId]['previousBuild'], $setProject);
|
|
|
|
|
|
|
|
$build->setProjectObject($project);
|
|
|
|
|
|
|
|
return $build;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param null|int $prevBuildId
|
|
|
|
* @param bool $setProject
|
|
|
|
* @return Project
|
|
|
|
*/
|
|
|
|
protected function getProjectMock($prevBuildId = null, $setProject = true) {
|
|
|
|
|
2017-01-09 17:23:29 +01:00
|
|
|
$project = $this
|
|
|
|
->getMockBuilder('PHPCensor\Model\Project')
|
|
|
|
->setMethods(['getLatestBuild'])
|
|
|
|
->getMock();
|
2014-12-14 16:47:46 +01:00
|
|
|
|
|
|
|
$prevBuild = ($prevBuildId) ? $this->getBuild($prevBuildId, false) : null;
|
|
|
|
|
|
|
|
$project->expects($this->any())
|
|
|
|
->method('getLatestBuild')
|
|
|
|
->will($this->returnValue($prevBuild));
|
|
|
|
|
|
|
|
/* @var $project Project */
|
|
|
|
|
|
|
|
$project->setId(3);
|
|
|
|
$project->setBranch(self::BRANCH);
|
|
|
|
$project->setTitle('Test');
|
|
|
|
|
|
|
|
if ($setProject) {
|
|
|
|
$this->project = $project;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $project;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @dataProvider finishedProvider
|
|
|
|
*
|
|
|
|
* @param int $buildConfigId
|
|
|
|
* @param array $expectedResult
|
|
|
|
*/
|
|
|
|
public function testFinished($buildConfigId, array $expectedResult)
|
|
|
|
{
|
|
|
|
$build = $this->getBuild($buildConfigId);
|
|
|
|
$service = new BuildStatusService(self::BRANCH, $this->project, $build);
|
2016-07-22 08:14:10 +02:00
|
|
|
$service->setUrl('http://php-censor.local/');
|
2014-12-14 16:47:46 +01:00
|
|
|
$this->assertEquals($expectedResult, $service->toArray());
|
|
|
|
}
|
|
|
|
|
|
|
|
public function finishedProvider()
|
|
|
|
{
|
2016-08-25 18:13:19 +02:00
|
|
|
return [
|
|
|
|
'buildingStatus' => [
|
2014-12-14 16:47:46 +01:00
|
|
|
1,
|
2016-08-25 18:13:19 +02:00
|
|
|
[
|
|
|
|
'name' => 'Test / master',
|
|
|
|
'activity' => 'Building',
|
|
|
|
'lastBuildLabel' => '',
|
2014-12-14 16:47:46 +01:00
|
|
|
'lastBuildStatus' => '',
|
2016-08-25 18:13:19 +02:00
|
|
|
'lastBuildTime' => '',
|
|
|
|
'webUrl' => 'http://php-censor.local/build/view/77',
|
|
|
|
]
|
|
|
|
],
|
|
|
|
'buildingStatusWithPrev' => [
|
2014-12-14 16:47:46 +01:00
|
|
|
2,
|
2016-08-25 18:13:19 +02:00
|
|
|
[
|
|
|
|
'name' => 'Test / master',
|
|
|
|
'activity' => 'Building',
|
|
|
|
'lastBuildLabel' => 13,
|
2014-12-14 16:47:46 +01:00
|
|
|
'lastBuildStatus' => 'Failure',
|
2016-08-25 18:13:19 +02:00
|
|
|
'lastBuildTime' => '2014-10-13T13:13:13+0000',
|
|
|
|
'webUrl' => 'http://php-censor.local/build/view/78',
|
|
|
|
]
|
|
|
|
],
|
|
|
|
'successStatus' => [
|
2014-12-14 16:47:46 +01:00
|
|
|
3,
|
2016-08-25 18:13:19 +02:00
|
|
|
[
|
|
|
|
'name' => 'Test / master',
|
|
|
|
'activity' => 'Sleeping',
|
|
|
|
'lastBuildLabel' => 7,
|
2014-12-14 16:47:46 +01:00
|
|
|
'lastBuildStatus' => 'Success',
|
2016-08-25 18:13:19 +02:00
|
|
|
'lastBuildTime' => '2014-10-25T21:50:02+0000',
|
|
|
|
'webUrl' => 'http://php-censor.local/build/view/7',
|
|
|
|
]
|
|
|
|
],
|
|
|
|
'failureStatus' => [
|
2014-12-14 16:47:46 +01:00
|
|
|
4,
|
2016-08-25 18:13:19 +02:00
|
|
|
[
|
|
|
|
'name' => 'Test / master',
|
|
|
|
'activity' => 'Sleeping',
|
|
|
|
'lastBuildLabel' => 13,
|
2014-12-14 16:47:46 +01:00
|
|
|
'lastBuildStatus' => 'Failure',
|
2016-08-25 18:13:19 +02:00
|
|
|
'lastBuildTime' => '2014-10-13T13:13:13+0000',
|
|
|
|
'webUrl' => 'http://php-censor.local/build/view/13',
|
|
|
|
]
|
|
|
|
],
|
|
|
|
'pending' => [
|
2014-12-14 16:47:46 +01:00
|
|
|
5,
|
2016-08-25 18:13:19 +02:00
|
|
|
[
|
|
|
|
'name' => 'Test / master',
|
|
|
|
'activity' => 'Pending',
|
|
|
|
'lastBuildLabel' => 7,
|
2014-12-14 16:47:46 +01:00
|
|
|
'lastBuildStatus' => 'Success',
|
2016-08-25 18:13:19 +02:00
|
|
|
'lastBuildTime' => '2014-10-25T21:50:02+0000',
|
|
|
|
'webUrl' => 'http://php-censor.local/build/view/1000',
|
|
|
|
]
|
|
|
|
],
|
|
|
|
];
|
2014-12-14 16:47:46 +01:00
|
|
|
}
|
|
|
|
}
|