1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\WebLink\Tests;
use PHPUnit\Framework\TestCase;
use Symfony\Component\WebLink\Link;
/**
* Test case borrowed from https://github.com/php-fig/link/.
*/
class LinkTest extends TestCase
{
public function testCanSetAndRetrieveValues()
{
$link = (new Link())
->withHref('http://www.google.com')
->withRel('next')
->withAttribute('me', 'you')
;
$this->assertEquals('http://www.google.com', $link->getHref());
$this->assertContains('next', $link->getRels());
$this->assertArrayHasKey('me', $link->getAttributes());
$this->assertEquals('you', $link->getAttributes()['me']);
}
public function testCanRemoveValues()
{
$link = (new Link())
->withHref('http://www.google.com')
->withRel('next')
->withAttribute('me', 'you')
;
$link = $link->withoutAttribute('me')
->withoutRel('next');
$this->assertEquals('http://www.google.com', $link->getHref());
$this->assertFalse(\in_array('next', $link->getRels(), true));
$this->assertArrayNotHasKey('me', $link->getAttributes());
}
public function testMultipleRels()
{
$link = (new Link())
->withHref('http://www.google.com')
->withRel('next')
->withRel('reference');
$this->assertCount(2, $link->getRels());
$this->assertContains('next', $link->getRels());
$this->assertContains('reference', $link->getRels());
}
public function testConstructor()
{
$link = new Link('next', 'http://www.google.com');
$this->assertEquals('http://www.google.com', $link->getHref());
$this->assertContains('next', $link->getRels());
}
#[\PHPUnit\Framework\Attributes\DataProvider('templatedHrefProvider')]
public function testTemplated(string $href)
{
$link = (new Link())
->withHref($href);
$this->assertTrue($link->isTemplated());
}
#[\PHPUnit\Framework\Attributes\DataProvider('notTemplatedHrefProvider')]
public function testNotTemplated(string $href)
{
$link = (new Link())
->withHref($href);
$this->assertFalse($link->isTemplated());
}
public static function templatedHrefProvider()
{
return [
['http://www.google.com/{param}/foo'],
['http://www.google.com/foo?q={param}'],
];
}
public static function notTemplatedHrefProvider()
{
return [
['http://www.google.com/foo'],
['/foo/bar/baz'],
];
}
}
|