1<?php 2 3namespace Composer\Installers\Test; 4 5use Composer\Composer; 6use Composer\Installers\SiteDirectInstaller; 7use Composer\Package\Package; 8 9class SiteDirectInstallerTest extends TestCase 10{ 11 /** @var SiteDirectInstaller $installer */ 12 protected $installer; 13 14 /** @var Package */ 15 private $package; 16 17 public function SetUp() 18 { 19 $this->package = new Package('sitedirect/some_name', '1.0.9', '1.0'); 20 $this->installer = new SiteDirectInstaller( 21 $this->package, 22 new Composer() 23 ); 24 25 } 26 27 /** 28 * @dataProvider dataProvider 29 */ 30 public function testInflectPackageVars($data, $expected) 31 { 32 $result = $this->installer->inflectPackageVars($data); 33 $this->assertEquals($result, $expected); 34 } 35 36 /** 37 * @dataProvider dataProvider 38 */ 39 public function testInstallPath($data, $expected) 40 { 41 $result = $this->installer->inflectPackageVars($data); 42 $path = $this->createPackage($data); 43 44 // use $result to get the proper capitalization for the vendor path 45 $expectedPath = "modules/{$result['vendor']}/{$result['name']}/"; 46 $notExpectedPath = "modules/{$data['vendor']}/{$data['name']}/"; 47 $this->assertEquals($expectedPath, $path); 48 $this->assertNotEquals($notExpectedPath, $path); 49 } 50 51 /** 52 * @param string[] $data 53 * @return string 54 */ 55 private function createPackage($data) 56 { 57 $fullName = "{$data['vendor']}/{$data['name']}"; 58 59 $package = new Package($fullName, '1.0', '1.0'); 60 $package->setType('sitedirect-module'); 61 $installer = new SiteDirectInstaller($package, new Composer()); 62 63 $path = $installer->getInstallPath($package, 'sitedirect'); 64 return $path; 65 } 66 67 public function dataProvider() 68 { 69 return array( 70 array( 71 'data' => array( 72 'name' => 'kernel', 73 'vendor' => 'sitedirect', 74 'type' => 'sitedirect-module', 75 ), 76 'expected' => array( 77 'name' => 'Kernel', 78 'vendor' => 'SiteDirect', 79 'type' => 'sitedirect-module', 80 ) 81 ), 82 array( 83 'data' => array( 84 'name' => 'that_guy', 85 'vendor' => 'whatGuy', 86 'type' => 'sitedirect-module', 87 ), 88 'expected' => array( 89 'name' => 'ThatGuy', 90 'vendor' => 'whatGuy', 91 'type' => 'sitedirect-module', 92 ) 93 ), 94 array( 95 'data' => array( 96 'name' => 'checkout', 97 'vendor' => 'someVendor', 98 'type' => 'sitedirect-plugin', 99 ), 100 'expected' => array( 101 'name' => 'Checkout', 102 'vendor' => 'someVendor', 103 'type' => 'sitedirect-plugin', 104 ) 105 ), 106 array( 107 'data' => array( 108 'name' => 'checkout', 109 'vendor' => 'siteDirect', 110 'type' => 'sitedirect-plugin', 111 ), 112 'expected' => array( 113 'name' => 'Checkout', 114 'vendor' => 'SiteDirect', 115 'type' => 'sitedirect-plugin', 116 ) 117 ), 118 ); 119 } 120} 121