public function testRemoveBindingKeepsStoredBindings()
 {
     $discovery = $this->createDiscovery();
     $discovery->addBindingType(new BindingType(Foo::clazz));
     $discovery->addBinding($binding1 = new ResourceBinding('/path1', Foo::clazz));
     $discovery->addBinding($binding2 = new ClassBinding(__CLASS__, Foo::clazz));
     $discovery = $this->loadDiscoveryFromStorage($discovery);
     $discovery->removeBinding($binding1->getUuid());
     $this->assertEquals(array($binding2), $discovery->getBindings());
     $this->assertFalse($discovery->hasBinding($binding1->getUuid()));
     $this->assertTrue($discovery->hasBinding($binding2->getUuid()));
 }
 /**
  * @expectedException \Puli\Discovery\Api\Binding\Initializer\NotInitializedException
  */
 public function testGetResourcesFailsIfNotSet()
 {
     $binding = new ResourceBinding('/path/*', Foo::clazz, array(), 'language');
     $binding->getResources();
 }
 private function bindingToMapping(ResourceBinding $binding)
 {
     return new AssetMapping(substr($binding->getQuery(), 0, -8), $binding->getParameterValue(DiscoveryUrlGenerator::SERVER_PARAMETER), $binding->getParameterValue(DiscoveryUrlGenerator::PATH_PARAMETER), $binding->getUuid());
 }
示例#4
0
 /**
  * @param Args            $args
  * @param ResourceBinding $bindingToUpdate
  *
  * @return ResourceBinding
  */
 private function getUpdatedResourceBinding(Args $args, ResourceBinding $bindingToUpdate)
 {
     $query = $bindingToUpdate->getQuery();
     $typeName = $bindingToUpdate->getTypeName();
     $language = $bindingToUpdate->getLanguage();
     $bindingParams = $bindingToUpdate->getParameterValues();
     if ($args->isOptionSet('query')) {
         $query = $args->getOption('query');
     }
     if ($args->isOptionSet('type')) {
         $typeName = $args->getOption('type');
     }
     if ($args->isOptionSet('language')) {
         $language = $args->getOption('language');
     }
     $this->parseParams($args, $bindingParams);
     $this->unsetParams($args, $bindingParams);
     return new ResourceBinding(Path::makeAbsolute($query, $this->currentPath), $typeName, $bindingParams, $language, $bindingToUpdate->getUuid());
 }
 public function testRemoveBindingTypesRemovesBindings()
 {
     $discovery = $this->createDiscovery();
     $discovery->addBindingType(new BindingType(Foo::clazz));
     $discovery->addBindingType(new BindingType(Bar::clazz));
     $discovery->addBinding($binding1 = new ResourceBinding('/path1', Foo::clazz));
     $discovery->addBinding($binding2 = new ClassBinding(__CLASS__, Bar::clazz));
     $discovery->removeBindingTypes();
     $discovery = $this->loadDiscoveryFromStorage($discovery);
     $this->assertCount(0, $discovery->getBindings());
     $this->assertFalse($discovery->hasBinding($binding1->getUuid()));
     $this->assertFalse($discovery->hasBinding($binding2->getUuid()));
 }
 private function generateUrlForBinding(ResourceBinding $binding, $repositoryPath)
 {
     $serverName = $binding->getParameterValue(self::SERVER_PARAMETER);
     if (!isset($this->urlFormats[$serverName])) {
         throw new CannotGenerateUrlException(sprintf('The server "%s" mapped for path "%s" does not exist.', $serverName, $repositoryPath));
     }
     $repoBasePath = Glob::getStaticPrefix($binding->getQuery());
     $serverBasePath = trim($binding->getParameterValue(self::PATH_PARAMETER), '/');
     // The server path is generated by replacing the base repository path
     // (= the path of the binding) by the stored server base path in the
     // repository path of the resource.
     //
     // Example:
     //
     // resource path: /acme/blog/public/css/style.css
     // binding path: /acme/blog/public{,/**/*}
     // repo base path: /acme/blog/public
     // server base path: /blog
     //
     // final server path: /blog/css/style.css
     $serverPath = substr_replace($repositoryPath, $serverBasePath, 0, strlen($repoBasePath));
     // The server path is inserted into the "%s" parameter of the URL format
     return sprintf($this->urlFormats[$serverName], ltrim($serverPath, '/'));
 }
 public function testHasBinding()
 {
     $type = new BindingType(Foo::clazz);
     $binding = new ResourceBinding('/file1', Foo::clazz);
     $discovery = $this->createLoadedDiscovery(array($type), array($binding));
     $this->assertTrue($discovery->hasBinding($binding->getUuid()));
     $this->assertFalse($discovery->hasBinding(Uuid::uuid4()));
 }