|
<?php |
|
|
|
require_once __DIR__.'/../../Base.php'; |
|
|
|
use Kanboard\Core\ExternalLink\ExternalLinkManager; |
|
use Kanboard\ExternalLink\WebLinkProvider; |
|
use Kanboard\ExternalLink\AttachmentLinkProvider; |
|
|
|
class ExternalLinkManagerTest extends Base |
|
{ |
|
public function testRegister() |
|
{ |
|
$externalLinkManager = new ExternalLinkManager($this->container); |
|
$webLinkProvider = new WebLinkProvider($this->container); |
|
$attachmentLinkProvider = new AttachmentLinkProvider($this->container); |
|
|
|
$externalLinkManager->register($webLinkProvider); |
|
$externalLinkManager->register($attachmentLinkProvider); |
|
|
|
$this->assertInstanceOf(get_class($webLinkProvider), $externalLinkManager->getProvider($webLinkProvider->getType())); |
|
$this->assertInstanceOf(get_class($attachmentLinkProvider), $externalLinkManager->getProvider($attachmentLinkProvider->getType())); |
|
} |
|
|
|
public function testGetProviderNotFound() |
|
{ |
|
$externalLinkManager = new ExternalLinkManager($this->container); |
|
|
|
$this->expectException('\Kanboard\Core\ExternalLink\ExternalLinkProviderNotFound'); |
|
$externalLinkManager->getProvider('not found'); |
|
} |
|
|
|
public function testGetTypes() |
|
{ |
|
$externalLinkManager = new ExternalLinkManager($this->container); |
|
$webLinkProvider = new WebLinkProvider($this->container); |
|
$attachmentLinkProvider = new AttachmentLinkProvider($this->container); |
|
|
|
$this->assertEquals(array(ExternalLinkManager::TYPE_AUTO => 'Auto'), $externalLinkManager->getTypes()); |
|
|
|
$externalLinkManager->register($webLinkProvider); |
|
$externalLinkManager->register($attachmentLinkProvider); |
|
|
|
$this->assertEquals( |
|
array(ExternalLinkManager::TYPE_AUTO => 'Auto', 'attachment' => 'Attachment', 'weblink' => 'Web Link'), |
|
$externalLinkManager->getTypes() |
|
); |
|
} |
|
|
|
public function testGetDependencyLabel() |
|
{ |
|
$externalLinkManager = new ExternalLinkManager($this->container); |
|
$webLinkProvider = new WebLinkProvider($this->container); |
|
$attachmentLinkProvider = new AttachmentLinkProvider($this->container); |
|
|
|
$externalLinkManager->register($webLinkProvider); |
|
$externalLinkManager->register($attachmentLinkProvider); |
|
|
|
$this->assertSame('Related', $externalLinkManager->getDependencyLabel($webLinkProvider->getType(), 'related')); |
|
$this->assertSame('custom', $externalLinkManager->getDependencyLabel($webLinkProvider->getType(), 'custom')); |
|
} |
|
|
|
public function testFindProviderNotFound() |
|
{ |
|
$externalLinkManager = new ExternalLinkManager($this->container); |
|
$webLinkProvider = new WebLinkProvider($this->container); |
|
$attachmentLinkProvider = new AttachmentLinkProvider($this->container); |
|
|
|
$externalLinkManager->register($webLinkProvider); |
|
$externalLinkManager->register($attachmentLinkProvider); |
|
|
|
$this->expectException('\Kanboard\Core\ExternalLink\ExternalLinkProviderNotFound'); |
|
$externalLinkManager->find(); |
|
} |
|
|
|
public function testFindProvider() |
|
{ |
|
$externalLinkManager = new ExternalLinkManager($this->container); |
|
$webLinkProvider = new WebLinkProvider($this->container); |
|
$attachmentLinkProvider = new AttachmentLinkProvider($this->container); |
|
|
|
$externalLinkManager->register($webLinkProvider); |
|
$externalLinkManager->register($attachmentLinkProvider); |
|
|
|
$externalLinkManager->setUserInput(array('text' => 'https://google.com/', 'type' => ExternalLinkManager::TYPE_AUTO)); |
|
$this->assertSame($webLinkProvider, $externalLinkManager->find()); |
|
|
|
$externalLinkManager->setUserInput(array('text' => 'https://google.com/file.pdf', 'type' => ExternalLinkManager::TYPE_AUTO)); |
|
$this->assertSame($attachmentLinkProvider, $externalLinkManager->find()); |
|
} |
|
|
|
public function testFindProviderWithSelectedType() |
|
{ |
|
$externalLinkManager = new ExternalLinkManager($this->container); |
|
$webLinkProvider = new WebLinkProvider($this->container); |
|
$attachmentLinkProvider = new AttachmentLinkProvider($this->container); |
|
|
|
$externalLinkManager->register($webLinkProvider); |
|
$externalLinkManager->register($attachmentLinkProvider); |
|
|
|
$externalLinkManager->setUserInput(array('text' => 'https://google.com/', 'type' => $webLinkProvider->getType())); |
|
$this->assertSame($webLinkProvider, $externalLinkManager->find()); |
|
|
|
$externalLinkManager->setUserInput(array('text' => 'https://google.com/file.pdf', 'type' => $attachmentLinkProvider->getType())); |
|
$this->assertSame($attachmentLinkProvider, $externalLinkManager->find()); |
|
} |
|
|
|
public function testFindProviderWithSelectedTypeNotFound() |
|
{ |
|
$externalLinkManager = new ExternalLinkManager($this->container); |
|
$webLinkProvider = new WebLinkProvider($this->container); |
|
$attachmentLinkProvider = new AttachmentLinkProvider($this->container); |
|
|
|
$externalLinkManager->register($webLinkProvider); |
|
$externalLinkManager->register($attachmentLinkProvider); |
|
|
|
$this->expectException('\Kanboard\Core\ExternalLink\ExternalLinkProviderNotFound'); |
|
$externalLinkManager->setUserInput(array('text' => 'https://google.com/', 'type' => 'not found')); |
|
$externalLinkManager->find(); |
|
} |
|
} |
|
|