public function testBuildRepositorySupportsOverridingWithMultipleDirectories() { $this->initDefaultManager(); $this->packageFile1->addPathMapping(new PathMapping('/package1', 'resources')); $this->packageFile2->addPathMapping(new PathMapping('/package1', array('override', 'css-override'))); $this->packageFile2->setOverriddenPackages(array('vendor/package1')); $this->repo->expects($this->at(0))->method('add')->with('/package1', new DirectoryResource($this->packageDir1 . '/resources')); $this->repo->expects($this->at(1))->method('add')->with('/package1', new DirectoryResource($this->packageDir2 . '/override')); $this->repo->expects($this->at(2))->method('add')->with('/package1', new DirectoryResource($this->packageDir2 . '/css-override')); $this->manager->buildRepository(); }
public function testWriteMultipleOverriddenPackages() { $packageFile = new PackageFile(); $packageFile->setPackageName('my/application'); $packageFile->setOverriddenPackages(array('acme/blog1', 'acme/blog2')); $this->writer->writePackageFile($packageFile, $this->tempFile); $this->assertFileExists($this->tempFile); $this->assertJsonFileEquals(__DIR__ . '/Fixtures/json/multi-overrides.json', $this->tempFile); }
public function testSerializeMultipleOverriddenPackages() { $packageFile = new PackageFile(); $packageFile->setPackageName('my/application'); $packageFile->setOverriddenPackages(array('acme/blog1', 'acme/blog2')); $json = <<<JSON { "version": "1.0", "name": "my/application", "override": [ "acme/blog1", "acme/blog2" ] } JSON; $this->assertJsonEquals($json, $this->serializer->serializePackageFile($packageFile)); }
private function populateConfig(PackageFile $packageFile, \stdClass $jsonData) { if (isset($jsonData->name)) { $packageFile->setPackageName($jsonData->name); } if (isset($jsonData->{'path-mappings'})) { foreach ($jsonData->{'path-mappings'} as $path => $relativePaths) { $packageFile->addPathMapping(new PathMapping($path, (array) $relativePaths)); } } if (isset($jsonData->bindings)) { foreach ($jsonData->bindings as $uuid => $bindingData) { $packageFile->addBindingDescriptor(new BindingDescriptor($bindingData->query, $bindingData->type, isset($bindingData->parameters) ? (array) $bindingData->parameters : array(), isset($bindingData->language) ? $bindingData->language : 'glob', Uuid::fromString($uuid))); } } if (isset($jsonData->{'binding-types'})) { foreach ((array) $jsonData->{'binding-types'} as $typeName => $data) { $parameters = array(); if (isset($data->parameters)) { foreach ((array) $data->parameters as $paramName => $paramData) { $required = isset($paramData->required) ? $paramData->required : false; $parameters[] = new BindingParameterDescriptor($paramName, $required ? BindingParameterDescriptor::REQUIRED : BindingParameterDescriptor::OPTIONAL, isset($paramData->default) ? $paramData->default : null, isset($paramData->description) ? $paramData->description : null); } } $packageFile->addTypeDescriptor(new BindingTypeDescriptor($typeName, isset($data->description) ? $data->description : null, $parameters)); } } if (isset($jsonData->override)) { $packageFile->setOverriddenPackages((array) $jsonData->override); } if (isset($jsonData->extra)) { $packageFile->setExtraKeys((array) $jsonData->extra); } }
public function testAddOverriddenPackageIgnoresDuplicates() { $packageFile = new PackageFile(); $packageFile->setOverriddenPackages(array('package1')); $packageFile->addOverriddenPackage('package1'); $this->assertSame(array('package1'), $packageFile->getOverriddenPackages()); }
private function jsonToPackageFile(stdClass $jsonData, PackageFile $packageFile) { if (isset($jsonData->name)) { $packageFile->setPackageName($jsonData->name); } if (isset($jsonData->{'path-mappings'})) { foreach ($jsonData->{'path-mappings'} as $path => $relativePaths) { $packageFile->addPathMapping(new PathMapping($path, (array) $relativePaths)); } } if (isset($jsonData->bindings)) { foreach ($jsonData->bindings as $uuid => $bindingData) { $binding = null; $class = isset($bindingData->_class) ? $bindingData->_class : 'Puli\\Discovery\\Binding\\ResourceBinding'; // Move this code to external classes to allow use of custom // bindings switch ($class) { case 'Puli\\Discovery\\Binding\\ClassBinding': $binding = new ClassBinding($bindingData->class, $bindingData->type, isset($bindingData->parameters) ? (array) $bindingData->parameters : array(), Uuid::fromString($uuid)); break; case 'Puli\\Discovery\\Binding\\ResourceBinding': $binding = new ResourceBinding($bindingData->query, $bindingData->type, isset($bindingData->parameters) ? (array) $bindingData->parameters : array(), isset($bindingData->language) ? $bindingData->language : 'glob', Uuid::fromString($uuid)); break; default: continue; } $packageFile->addBindingDescriptor(new BindingDescriptor($binding)); } } if (isset($jsonData->{'binding-types'})) { foreach ((array) $jsonData->{'binding-types'} as $typeName => $data) { $parameters = array(); $parameterDescriptions = array(); if (isset($data->parameters)) { foreach ((array) $data->parameters as $parameterName => $parameterData) { $required = isset($parameterData->required) ? $parameterData->required : false; $parameters[] = new BindingParameter($parameterName, $required ? BindingParameter::REQUIRED : BindingParameter::OPTIONAL, isset($parameterData->default) ? $parameterData->default : null); if (isset($parameterData->description)) { $parameterDescriptions[$parameterName] = $parameterData->description; } } } $packageFile->addTypeDescriptor(new BindingTypeDescriptor(new BindingType($typeName, $parameters), isset($data->description) ? $data->description : null, $parameterDescriptions)); } } if (isset($jsonData->override)) { $packageFile->setOverriddenPackages((array) $jsonData->override); } if (isset($jsonData->extra)) { $packageFile->setExtraKeys((array) $jsonData->extra); } }