Added hasPackage and removePackage methods to the ArrayRepository
parent
2fc0699492
commit
28d9df7da6
|
@ -23,6 +23,26 @@ class ArrayRepository implements RepositoryInterface
|
||||||
{
|
{
|
||||||
protected $packages;
|
protected $packages;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if specified package in this repository.
|
||||||
|
*
|
||||||
|
* @param PackageInterface $package package instance
|
||||||
|
*
|
||||||
|
* @return Boolean
|
||||||
|
*/
|
||||||
|
public function hasPackage(PackageInterface $package)
|
||||||
|
{
|
||||||
|
$packageId = $package->getUniqueName();
|
||||||
|
|
||||||
|
foreach ($this->getPackages() as $repoPackage) {
|
||||||
|
if ($packageId === $repoPackage->getUniqueName()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a new package to the repository
|
* Adds a new package to the repository
|
||||||
*
|
*
|
||||||
|
@ -37,6 +57,24 @@ class ArrayRepository implements RepositoryInterface
|
||||||
$this->packages[] = $package;
|
$this->packages[] = $package;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes package from repository.
|
||||||
|
*
|
||||||
|
* @param PackageInterface $package package instance
|
||||||
|
*/
|
||||||
|
public function removePackage(PackageInterface $package)
|
||||||
|
{
|
||||||
|
$packageId = $package->getUniqueName();
|
||||||
|
|
||||||
|
foreach ($this->getPackages() as $key => $repoPackage) {
|
||||||
|
if ($packageId === $repoPackage->getUniqueName()) {
|
||||||
|
array_splice($this->packages, $key, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all contained packages
|
* Returns all contained packages
|
||||||
*
|
*
|
||||||
|
|
|
@ -17,11 +17,37 @@ use Composer\Package\MemoryPackage;
|
||||||
|
|
||||||
class ArrayRepositoryTest extends \PHPUnit_Framework_TestCase
|
class ArrayRepositoryTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
public function testAddLiteral()
|
public function testAddPackage()
|
||||||
{
|
{
|
||||||
$repo = new ArrayRepository;
|
$repo = new ArrayRepository;
|
||||||
$repo->addPackage(new MemoryPackage('foo', '1'));
|
$repo->addPackage(new MemoryPackage('foo', '1'));
|
||||||
|
|
||||||
$this->assertEquals(1, count($repo));
|
$this->assertEquals(1, count($repo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testRemovePackage()
|
||||||
|
{
|
||||||
|
$package = new MemoryPackage('bar', '2');
|
||||||
|
|
||||||
|
$repo = new ArrayRepository;
|
||||||
|
$repo->addPackage(new MemoryPackage('foo', '1'));
|
||||||
|
$repo->addPackage($package);
|
||||||
|
|
||||||
|
$this->assertEquals(2, count($repo));
|
||||||
|
|
||||||
|
$repo->removePackage(new MemoryPackage('foo', '1'));
|
||||||
|
|
||||||
|
$this->assertEquals(1, count($repo));
|
||||||
|
$this->assertEquals(array($package), $repo->getPackages());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testHasPackage()
|
||||||
|
{
|
||||||
|
$repo = new ArrayRepository;
|
||||||
|
$repo->addPackage(new MemoryPackage('foo', '1'));
|
||||||
|
$repo->addPackage(new MemoryPackage('bar', '2'));
|
||||||
|
|
||||||
|
$this->assertTrue($repo->hasPackage(new MemoryPackage('foo', '1')));
|
||||||
|
$this->assertFalse($repo->hasPackage(new MemoryPackage('bar', '1')));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue