* Jordi Boggiano * * 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(); } }