View source
<?php
namespace Drupal\Tests\Core\Form;
use Drupal\Core\Form\ConfirmFormHelper;
use Drupal\Core\Url;
use Drupal\Tests\UnitTestCase;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpFoundation\Request;
class ConfirmFormHelperTest extends UnitTestCase {
public function testCancelLinkTitle() {
$cancel_text = 'Cancel text';
$form = $this
->createMock('Drupal\\Core\\Form\\ConfirmFormInterface');
$form
->expects($this
->any())
->method('getCancelText')
->will($this
->returnValue($cancel_text));
$link = ConfirmFormHelper::buildCancelLink($form, new Request());
$this
->assertSame($cancel_text, $link['#title']);
$this
->assertSame([
'contexts' => [
'url.query_args:destination',
],
], $link['#cache']);
}
public function testCancelLinkRoute() {
$route_name = 'foo_bar';
$cancel_route = new Url($route_name);
$form = $this
->createMock('Drupal\\Core\\Form\\ConfirmFormInterface');
$form
->expects($this
->any())
->method('getCancelUrl')
->will($this
->returnValue($cancel_route));
$link = ConfirmFormHelper::buildCancelLink($form, new Request());
$this
->assertEquals(Url::fromRoute($route_name), $link['#url']);
$this
->assertSame([
'contexts' => [
'url.query_args:destination',
],
], $link['#cache']);
}
public function testCancelLinkRouteWithParams() {
$expected = Url::fromRoute('foo_bar.baz', [
'baz' => 'banana',
], [
'absolute' => TRUE,
]);
$form = $this
->createMock('Drupal\\Core\\Form\\ConfirmFormInterface');
$form
->expects($this
->any())
->method('getCancelUrl')
->will($this
->returnValue($expected));
$link = ConfirmFormHelper::buildCancelLink($form, new Request());
$this
->assertEquals($expected, $link['#url']);
$this
->assertSame([
'contexts' => [
'url.query_args:destination',
],
], $link['#cache']);
}
public function testCancelLinkRouteWithUrl() {
$cancel_route = new Url('foo_bar.baz', [
'baz' => 'banana',
], [
'absolute' => TRUE,
]);
$form = $this
->createMock('Drupal\\Core\\Form\\ConfirmFormInterface');
$form
->expects($this
->any())
->method('getCancelUrl')
->will($this
->returnValue($cancel_route));
$link = ConfirmFormHelper::buildCancelLink($form, new Request());
$this
->assertSame($cancel_route, $link['#url']);
$this
->assertSame([
'contexts' => [
'url.query_args:destination',
],
], $link['#cache']);
}
public function testCancelLinkDestination($destination) {
$query = [
'destination' => $destination,
];
$form = $this
->createMock('Drupal\\Core\\Form\\ConfirmFormInterface');
$path_validator = $this
->createMock('Drupal\\Core\\Path\\PathValidatorInterface');
$container_builder = new ContainerBuilder();
$container_builder
->set('path.validator', $path_validator);
\Drupal::setContainer($container_builder);
$url = Url::fromRoute('test_route');
$path_validator
->expects($this
->atLeastOnce())
->method('getUrlIfValidWithoutAccessCheck')
->with('baz')
->willReturn($url);
$link = ConfirmFormHelper::buildCancelLink($form, new Request($query));
$this
->assertSame($url, $link['#url']);
$this
->assertSame([
'contexts' => [
'url.query_args:destination',
],
], $link['#cache']);
}
public function providerTestCancelLinkDestination() {
$data = [];
$data[] = [
'baz',
];
$data[] = [
'/baz',
];
return $data;
}
}