2014-07-14 17:02:36 +02:00
|
|
|
<?php
|
2015-03-03 17:18:17 +01:00
|
|
|
|
2016-07-19 20:28:11 +02:00
|
|
|
namespace Tests\PHPCensor\Model;
|
2014-07-14 17:02:36 +02:00
|
|
|
|
2018-03-17 03:24:30 +01:00
|
|
|
use PHPCensor\Exception\InvalidArgumentException;
|
2016-07-19 20:28:11 +02:00
|
|
|
use PHPCensor\Model\Build;
|
2018-06-07 16:45:39 +02:00
|
|
|
use PHPCensor\Model\Project;
|
|
|
|
use PHPCensor\Model\Build\GogsBuild;
|
2014-07-14 17:02:36 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Unit tests for the Build model class.
|
2018-02-16 10:41:56 +01:00
|
|
|
*
|
2014-07-14 17:02:36 +02:00
|
|
|
* @author Dan Cryer <dan@block8.co.uk>
|
|
|
|
*/
|
2017-07-24 08:45:52 +02:00
|
|
|
class BuildTest extends \PHPUnit\Framework\TestCase
|
2014-07-14 17:02:36 +02:00
|
|
|
{
|
2018-03-03 18:27:48 +01:00
|
|
|
public function testConstruct()
|
2014-07-14 17:02:36 +02:00
|
|
|
{
|
2018-03-03 18:27:48 +01:00
|
|
|
$build = new Build();
|
|
|
|
|
|
|
|
self::assertInstanceOf('PHPCensor\Model', $build);
|
|
|
|
self::assertInstanceOf('PHPCensor\Model\Build', $build);
|
|
|
|
|
|
|
|
$build = new Build([
|
|
|
|
'project_id' => 100,
|
|
|
|
'branch' => 'master',
|
|
|
|
]);
|
|
|
|
|
|
|
|
self::assertEquals([
|
|
|
|
'id' => null,
|
|
|
|
'project_id' => 100,
|
|
|
|
'commit_id' => null,
|
|
|
|
'status' => null,
|
|
|
|
'log' => null,
|
|
|
|
'branch' => 'master',
|
|
|
|
'tag' => null,
|
|
|
|
'create_date' => null,
|
|
|
|
'start_date' => null,
|
|
|
|
'finish_date' => null,
|
|
|
|
'committer_email' => null,
|
|
|
|
'commit_message' => null,
|
|
|
|
'extra' => null,
|
|
|
|
'environment' => null,
|
|
|
|
'source' => Build::SOURCE_UNKNOWN,
|
|
|
|
'user_id' => 0,
|
|
|
|
], $build->getDataArray());
|
|
|
|
|
|
|
|
try {
|
|
|
|
$build = new Build([
|
|
|
|
'project_id' => 101,
|
|
|
|
'branch' => 'dev',
|
|
|
|
'unknown' => 'unknown',
|
|
|
|
]);
|
2018-03-17 03:24:30 +01:00
|
|
|
} catch (InvalidArgumentException $e) {
|
2018-03-03 18:27:48 +01:00
|
|
|
self::assertEquals(
|
|
|
|
'Model "PHPCensor\Model\Build" doesn\'t have field "unknown"',
|
|
|
|
$e->getMessage()
|
|
|
|
);
|
|
|
|
}
|
2014-07-14 17:02:36 +02:00
|
|
|
|
|
|
|
$build = new Build();
|
2018-03-03 18:27:48 +01:00
|
|
|
$build->setLog('log');
|
|
|
|
self::assertEquals('log', $build->getLog());
|
|
|
|
|
|
|
|
$build->setLog(null);
|
|
|
|
self::assertEquals(null, $build->getLog());
|
|
|
|
|
|
|
|
try {
|
|
|
|
$build->setLog([]);
|
2018-03-17 03:24:30 +01:00
|
|
|
} catch (InvalidArgumentException $e) {
|
2018-03-03 18:27:48 +01:00
|
|
|
self::assertEquals(
|
|
|
|
'Column "log" must be a string.',
|
|
|
|
$e->getMessage()
|
|
|
|
);
|
|
|
|
}
|
2018-03-04 08:30:34 +01:00
|
|
|
|
|
|
|
$build->setSource(Build::SOURCE_WEBHOOK_PULL_REQUEST);
|
|
|
|
self::assertEquals(Build::SOURCE_WEBHOOK_PULL_REQUEST, $build->getSource());
|
|
|
|
|
|
|
|
try {
|
|
|
|
$build->setSource('5');
|
2018-03-17 03:24:30 +01:00
|
|
|
} catch (InvalidArgumentException $e) {
|
2018-03-04 08:30:34 +01:00
|
|
|
self::assertEquals(
|
|
|
|
'Column "source" must be an integer.',
|
|
|
|
$e->getMessage()
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
$build->setId(null);
|
2018-03-17 03:24:30 +01:00
|
|
|
} catch (InvalidArgumentException $e) {
|
2018-03-04 08:30:34 +01:00
|
|
|
self::assertEquals(
|
|
|
|
'Column "id" must not be null.',
|
|
|
|
$e->getMessage()
|
|
|
|
);
|
|
|
|
}
|
2014-07-14 17:02:36 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testExecute_TestBaseBuildDefaults()
|
|
|
|
{
|
|
|
|
$build = new Build();
|
2018-02-16 10:41:56 +01:00
|
|
|
self::assertEquals('#', $build->getCommitLink());
|
|
|
|
self::assertEquals('#', $build->getBranchLink());
|
|
|
|
self::assertEquals(null, $build->getFileLinkTemplate());
|
2014-07-14 17:02:36 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testExecute_TestIsSuccessful()
|
|
|
|
{
|
|
|
|
$build = new Build();
|
2017-02-01 15:53:31 +01:00
|
|
|
$build->setStatus(Build::STATUS_PENDING);
|
2018-02-16 10:41:56 +01:00
|
|
|
self::assertFalse($build->isSuccessful());
|
2014-07-14 17:02:36 +02:00
|
|
|
|
|
|
|
$build->setStatus(Build::STATUS_RUNNING);
|
2018-02-16 10:41:56 +01:00
|
|
|
self::assertFalse($build->isSuccessful());
|
2014-07-14 17:02:36 +02:00
|
|
|
|
|
|
|
$build->setStatus(Build::STATUS_FAILED);
|
2018-02-16 10:41:56 +01:00
|
|
|
self::assertFalse($build->isSuccessful());
|
2014-07-14 17:02:36 +02:00
|
|
|
|
|
|
|
$build->setStatus(Build::STATUS_SUCCESS);
|
2018-02-16 10:41:56 +01:00
|
|
|
self::assertTrue($build->isSuccessful());
|
2014-07-14 17:02:36 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testExecute_TestBuildExtra()
|
|
|
|
{
|
2016-04-21 09:46:38 +02:00
|
|
|
$info = [
|
2014-07-14 17:02:36 +02:00
|
|
|
'item1' => 'Item One',
|
|
|
|
'item2' => 2,
|
2016-04-21 09:46:38 +02:00
|
|
|
];
|
2014-07-14 17:02:36 +02:00
|
|
|
|
|
|
|
$build = new Build();
|
2018-03-09 19:00:53 +01:00
|
|
|
$build->setExtra($info);
|
2014-07-14 17:02:36 +02:00
|
|
|
|
2018-02-16 10:41:56 +01:00
|
|
|
self::assertEquals('Item One', $build->getExtra('item1'));
|
|
|
|
self::assertEquals(2, $build->getExtra('item2'));
|
|
|
|
self::assertNull($build->getExtra('item3'));
|
|
|
|
self::assertEquals($info, $build->getExtra());
|
|
|
|
|
2018-03-09 19:00:53 +01:00
|
|
|
$build->addExtraValue('item3', 'Item Three');
|
2017-04-01 06:32:39 +02:00
|
|
|
|
2018-02-16 10:41:56 +01:00
|
|
|
self::assertEquals('Item One', $build->getExtra('item1'));
|
|
|
|
self::assertEquals('Item Three', $build->getExtra('item3'));
|
2014-07-14 17:02:36 +02:00
|
|
|
}
|
2018-06-07 16:45:39 +02:00
|
|
|
|
|
|
|
public function testGogsBuildLinks()
|
|
|
|
{
|
|
|
|
$project = new Project();
|
|
|
|
$project->setType(Project::TYPE_GOGS);
|
|
|
|
$project->setReference('https://gogs.repository/the-vendor/the-project.git');
|
|
|
|
|
|
|
|
$stub = $this->getMockBuilder(GogsBuild::class)
|
|
|
|
->setMethods(['getProject', 'getCommitId', 'getBranch'])
|
|
|
|
->getMock();
|
|
|
|
|
|
|
|
$stub->method('getProject')
|
|
|
|
->will($this->returnValue($project));
|
|
|
|
|
|
|
|
$stub->method('getCommitId')
|
|
|
|
->will($this->returnValue('abcdef'));
|
|
|
|
|
|
|
|
$stub->method('getBranch')
|
|
|
|
->will($this->returnValue('master'));
|
|
|
|
|
|
|
|
$this->assertEquals(
|
|
|
|
'https://gogs.repository/the-vendor/the-project/commit/abcdef',
|
|
|
|
$stub->getCommitLink()
|
|
|
|
);
|
|
|
|
|
|
|
|
$this->assertEquals(
|
|
|
|
'https://gogs.repository/the-vendor/the-project/src/master',
|
|
|
|
$stub->getBranchLink()
|
|
|
|
);
|
|
|
|
|
|
|
|
$this->assertEquals(
|
|
|
|
'https://gogs.repository/the-vendor/the-project/src/abcdef/{FILE}#L{LINE}',
|
|
|
|
$stub->getFileLinkTemplate()
|
|
|
|
);
|
|
|
|
}
|
2014-07-14 17:02:36 +02:00
|
|
|
}
|