* Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Test\Downloader; use Composer\Downloader\PerforceDownloader; use Composer\Config; use Composer\Repository\VcsRepository; /** * @author Matt Whittom */ class PerforceDownloaderTest extends \PHPUnit_Framework_TestCase { private $io; private $config; private $testPath; public static $repository; protected function setUp() { $this->testPath = sys_get_temp_dir() . '/composer-test'; $this->config = new Config(); $this->config->merge( array( 'config' => array( 'home' => $this->testPath, ), ) ); $this->io = $this->getMock('Composer\IO\IOInterface'); } public function testDoDownloadGetRepoConfig() { $downloader = new PerforceDownloader($this->io, $this->config); $package = $this->getMock('Composer\Package\PackageInterface'); $repoConfig = array('url' => 'TEST_URL', 'p4user' => 'TEST_USER'); $repository = $this->getMock( 'Composer\Repository\VcsRepository', array('getRepoConfig'), array($repoConfig, $this->io, $this->config) ); $package->expects($this->at(0)) ->method('getSourceReference') ->will($this->returnValue("SOURCE_REF")); $package->expects($this->at(1)) ->method('getPrettyVersion') ->will($this->returnValue("100")); $package->expects($this->at(2)) ->method('getRepository') ->will($this->returnValue($repository)); $repository->expects($this->at(0)) ->method('getRepoConfig'); $path = $this->testPath; $downloader->doDownload($package, $path); } public function testDoDownload() { $downloader = new PerforceDownloader($this->io, $this->config); $repoConfig = array("depot" => "TEST_DEPOT", "branch" => "TEST_BRANCH", "p4user" => "TEST_USER"); $port = "TEST_PORT"; $path = "TEST_PATH"; $process = $this->getmock('Composer\Util\ProcessExecutor'); $perforce = $this->getMock( 'Composer\Util\Perforce', array('setStream', 'queryP4User', 'writeP4ClientSpec', 'connectClient', 'syncCodeBase'), array($repoConfig, $port, $path, $process, true, "TEST") ); $ref = "SOURCE_REF"; $label = "LABEL"; $perforce->expects($this->at(0)) ->method('setStream') ->with($this->equalTo($ref)); $perforce->expects($this->at(1)) ->method('queryP4User') ->with($this->io); $perforce->expects($this->at(2)) ->method('writeP4ClientSpec'); $perforce->expects($this->at(3)) ->method('connectClient'); $perforce->expects($this->at(4)) ->method('syncCodeBase') ->with($this->equalTo($label)); $downloader->injectPerforce($perforce); $package = $this->getMock('Composer\Package\PackageInterface'); $package->expects($this->at(0)) ->method('getSourceReference') ->will($this->returnValue($ref)); $package->expects($this->at(1)) ->method('getPrettyVersion') ->will($this->returnValue($label)); $path = $this->testPath; $downloader->doDownload($package, $path); } }