188 lines
5.5 KiB
PHP
188 lines
5.5 KiB
PHP
|
<?php
|
||
|
/*
|
||
|
* This file is part of PharIo\Manifest.
|
||
|
*
|
||
|
* (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de>
|
||
|
*
|
||
|
* For the full copyright and license information, please view the LICENSE
|
||
|
* file that was distributed with this source code.
|
||
|
*/
|
||
|
|
||
|
namespace PharIo\Manifest;
|
||
|
|
||
|
use PharIo\Version\Version;
|
||
|
use PharIo\Version\AnyVersionConstraint;
|
||
|
use PHPUnit\Framework\TestCase;
|
||
|
|
||
|
/**
|
||
|
* @covers \PharIo\Manifest\Manifest
|
||
|
*
|
||
|
* @uses \PharIo\Manifest\ApplicationName
|
||
|
* @uses \PharIo\Manifest\Author
|
||
|
* @uses \PharIo\Manifest\AuthorCollection
|
||
|
* @uses \PharIo\Manifest\BundledComponent
|
||
|
* @uses \PharIo\Manifest\BundledComponentCollection
|
||
|
* @uses \PharIo\Manifest\CopyrightInformation
|
||
|
* @uses \PharIo\Manifest\Email
|
||
|
* @uses \PharIo\Manifest\License
|
||
|
* @uses \PharIo\Manifest\RequirementCollection
|
||
|
* @uses \PharIo\Manifest\PhpVersionRequirement
|
||
|
* @uses \PharIo\Manifest\Type
|
||
|
* @uses \PharIo\Manifest\Application
|
||
|
* @uses \PharIo\Manifest\Url
|
||
|
* @uses \PharIo\Version\Version
|
||
|
* @uses \PharIo\Version\VersionConstraint
|
||
|
*/
|
||
|
class ManifestTest extends TestCase {
|
||
|
/**
|
||
|
* @var ApplicationName
|
||
|
*/
|
||
|
private $name;
|
||
|
|
||
|
/**
|
||
|
* @var Version
|
||
|
*/
|
||
|
private $version;
|
||
|
|
||
|
/**
|
||
|
* @var Type
|
||
|
*/
|
||
|
private $type;
|
||
|
|
||
|
/**
|
||
|
* @var CopyrightInformation
|
||
|
*/
|
||
|
private $copyrightInformation;
|
||
|
|
||
|
/**
|
||
|
* @var RequirementCollection
|
||
|
*/
|
||
|
private $requirements;
|
||
|
|
||
|
/**
|
||
|
* @var BundledComponentCollection
|
||
|
*/
|
||
|
private $bundledComponents;
|
||
|
|
||
|
/**
|
||
|
* @var Manifest
|
||
|
*/
|
||
|
private $manifest;
|
||
|
|
||
|
protected function setUp() {
|
||
|
$this->version = new Version('5.6.5');
|
||
|
|
||
|
$this->type = Type::application();
|
||
|
|
||
|
$author = new Author('Joe Developer', new Email('user@example.com'));
|
||
|
$license = new License('BSD-3-Clause', new Url('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE'));
|
||
|
|
||
|
$authors = new AuthorCollection;
|
||
|
$authors->add($author);
|
||
|
|
||
|
$this->copyrightInformation = new CopyrightInformation($authors, $license);
|
||
|
|
||
|
$this->requirements = new RequirementCollection;
|
||
|
$this->requirements->add(new PhpVersionRequirement(new AnyVersionConstraint));
|
||
|
|
||
|
$this->bundledComponents = new BundledComponentCollection;
|
||
|
$this->bundledComponents->add(new BundledComponent('phpunit/php-code-coverage', new Version('4.0.2')));
|
||
|
|
||
|
$this->name = new ApplicationName('phpunit/phpunit');
|
||
|
|
||
|
$this->manifest = new Manifest(
|
||
|
$this->name,
|
||
|
$this->version,
|
||
|
$this->type,
|
||
|
$this->copyrightInformation,
|
||
|
$this->requirements,
|
||
|
$this->bundledComponents
|
||
|
);
|
||
|
}
|
||
|
|
||
|
public function testCanBeCreated() {
|
||
|
$this->assertInstanceOf(Manifest::class, $this->manifest);
|
||
|
}
|
||
|
|
||
|
public function testNameCanBeRetrieved() {
|
||
|
$this->assertEquals($this->name, $this->manifest->getName());
|
||
|
}
|
||
|
|
||
|
public function testVersionCanBeRetrieved() {
|
||
|
$this->assertEquals($this->version, $this->manifest->getVersion());
|
||
|
}
|
||
|
|
||
|
public function testTypeCanBeRetrieved() {
|
||
|
$this->assertEquals($this->type, $this->manifest->getType());
|
||
|
}
|
||
|
|
||
|
public function testTypeCanBeQueried() {
|
||
|
$this->assertTrue($this->manifest->isApplication());
|
||
|
$this->assertFalse($this->manifest->isLibrary());
|
||
|
$this->assertFalse($this->manifest->isExtension());
|
||
|
}
|
||
|
|
||
|
public function testCopyrightInformationCanBeRetrieved() {
|
||
|
$this->assertEquals($this->copyrightInformation, $this->manifest->getCopyrightInformation());
|
||
|
}
|
||
|
|
||
|
public function testRequirementsCanBeRetrieved() {
|
||
|
$this->assertEquals($this->requirements, $this->manifest->getRequirements());
|
||
|
}
|
||
|
|
||
|
public function testBundledComponentsCanBeRetrieved() {
|
||
|
$this->assertEquals($this->bundledComponents, $this->manifest->getBundledComponents());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @uses \PharIo\Manifest\Extension
|
||
|
*/
|
||
|
public function testExtendedApplicationCanBeQueriedForExtension()
|
||
|
{
|
||
|
$appName = new ApplicationName('foo/bar');
|
||
|
$manifest = new Manifest(
|
||
|
new ApplicationName('foo/foo'),
|
||
|
new Version('1.0.0'),
|
||
|
Type::extension($appName, new AnyVersionConstraint),
|
||
|
$this->copyrightInformation,
|
||
|
new RequirementCollection,
|
||
|
new BundledComponentCollection
|
||
|
);
|
||
|
|
||
|
$this->assertTrue($manifest->isExtensionFor($appName));
|
||
|
}
|
||
|
|
||
|
public function testNonExtensionReturnsFalseWhenQueriesForExtension() {
|
||
|
$appName = new ApplicationName('foo/bar');
|
||
|
$manifest = new Manifest(
|
||
|
new ApplicationName('foo/foo'),
|
||
|
new Version('1.0.0'),
|
||
|
Type::library(),
|
||
|
$this->copyrightInformation,
|
||
|
new RequirementCollection,
|
||
|
new BundledComponentCollection
|
||
|
);
|
||
|
|
||
|
$this->assertFalse($manifest->isExtensionFor($appName));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @uses \PharIo\Manifest\Extension
|
||
|
*/
|
||
|
public function testExtendedApplicationCanBeQueriedForExtensionWithVersion()
|
||
|
{
|
||
|
$appName = new ApplicationName('foo/bar');
|
||
|
$manifest = new Manifest(
|
||
|
new ApplicationName('foo/foo'),
|
||
|
new Version('1.0.0'),
|
||
|
Type::extension($appName, new AnyVersionConstraint),
|
||
|
$this->copyrightInformation,
|
||
|
new RequirementCollection,
|
||
|
new BundledComponentCollection
|
||
|
);
|
||
|
|
||
|
$this->assertTrue($manifest->isExtensionFor($appName, new Version('1.2.3')));
|
||
|
}
|
||
|
|
||
|
}
|