1
0
Fork 0
composer/tests/Composer/Test/Repository/FilesystemRepositoryTest.php

112 lines
3.0 KiB
PHP

<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Repository;
use Composer\Repository\FilesystemRepository;
use Composer\Test\TestCase;
class FilesystemRepositoryTest extends TestCase
{
public function testRepositoryRead()
{
$json = $this->createJsonFileMock();
$repository = new FilesystemRepository($json);
$json
->expects($this->once())
->method('read')
->will($this->returnValue(array(
array('name' => 'package1', 'version' => '1.0.0-beta', 'type' => 'vendor')
)));
$json
->expects($this->once())
->method('exists')
->will($this->returnValue(true));
$packages = $repository->getPackages();
$this->assertSame(1, count($packages));
$this->assertSame('package1', $packages[0]->getName());
$this->assertSame('1.0.0.0-beta', $packages[0]->getVersion());
$this->assertSame('vendor', $packages[0]->getType());
}
/**
* @expectedException \UnexpectedValueException
*/
public function testCorruptedRepositoryFile()
{
$json = $this->createJsonFileMock();
$repository = new FilesystemRepository($json);
$json
->expects($this->once())
->method('read')
->will($this->returnValue('foo'));
$json
->expects($this->once())
->method('exists')
->will($this->returnValue(true));
$repository->getPackages();
}
public function testUnexistentRepositoryFile()
{
$json = $this->createJsonFileMock();
$repository = new FilesystemRepository($json);
$json
->expects($this->once())
->method('exists')
->will($this->returnValue(false));
$this->assertEquals(array(), $repository->getPackages());
}
public function testRepositoryWrite()
{
$json = $this->createJsonFileMock();
$repository = new FilesystemRepository($json);
$json
->expects($this->once())
->method('read')
->will($this->returnValue(array()));
$json
->expects($this->once())
->method('exists')
->will($this->returnValue(true));
$json
->expects($this->once())
->method('write')
->with(array(
array('name' => 'mypkg', 'type' => 'library', 'names' => array('mypkg'), 'version' => '0.1.10', 'version_normalized' => '0.1.10.0')
));
$repository->addPackage($this->getPackage('mypkg', '0.1.10'));
$repository->write();
}
private function createJsonFileMock()
{
return $this->getMockBuilder('Composer\Json\JsonFile')
->disableOriginalConstructor()
->getMock();
}
}