View source
<?php
namespace Drupal\Tests\rng\Kernel\Views;
use Drupal\Core\Link;
use Drupal\rng\Tests\RngTestTrait;
use Drupal\simpletest\UserCreationTrait;
use Drupal\views\Tests\ViewTestData;
use Drupal\views\Views;
use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
class RngViewsTest extends ViewsKernelTestBase {
use RngTestTrait;
use UserCreationTrait {
createUser as drupalCreateUser;
}
public static $modules = [
'user',
'courier',
'unlimited_number',
'rng_test_views',
'rng',
'entity_test',
'field',
'dynamic_entity_reference',
'text',
];
public static $testViews = [
'test_rng',
];
protected $eventManager;
protected $registrationType;
protected $view;
protected function setUp($import_test_views = TRUE) {
parent::setUp($import_test_views);
$this->eventManager = $this->container
->get('rng.event_manager');
$this
->installConfig([
'field',
]);
$this
->installConfig([
'rng',
]);
$this
->installEntitySchema('user');
$this
->installEntitySchema('entity_test');
$this
->installEntitySchema('registration');
$this
->installEntitySchema('registrant');
$this
->installEntitySchema('rng_rule');
$this
->installEntitySchema('rng_rule_component');
ViewTestData::createTestViews(get_class($this), [
'rng_test_views',
]);
$this->registrationType = $this
->createRegistrationType();
$this
->createEventType('entity_test', 'entity_test');
$this->view = Views::getView('test_rng');
$this->view
->setDisplay();
}
public function testRegisterLink() {
$event = $this
->createEvent()
->getEvent();
$user1 = $this
->drupalCreateUser([
'rng register self',
]);
$this
->setCurrentUser($user1);
$this
->createUserRoleRules([], [
'create' => TRUE,
]);
$this->view->displayHandlers
->get('default')
->overrideOption('fields', [
'rng_event_register' => [
'table' => 'entity_test',
'field' => 'rng_event_register',
'id' => 'rng_event_register',
'plugin_id' => 'rng_event_register',
'entity_type' => 'entity_test',
],
]);
$this->view
->save();
$this->view
->preview();
$expected = Link::createFromRoute(t('Register'), 'rng.event.entity_test.register.type_list', [
'entity_test' => $event
->id(),
])
->toString();
$actual = $this->view->style_plugin
->getField(0, 'rng_event_register');
$this
->assertEqual($actual, $expected);
}
public function testRegisterLinkWithRegistrationType() {
$event = $this
->createEvent()
->getEvent();
$user1 = $this
->drupalCreateUser([
'rng register self',
]);
$this
->setCurrentUser($user1);
$this
->createUserRoleRules([], [
'create' => TRUE,
]);
$this->view->displayHandlers
->get('default')
->overrideOption('fields', [
'rng_event_register' => [
'table' => 'entity_test',
'field' => 'rng_event_register',
'id' => 'rng_event_register',
'plugin_id' => 'rng_event_register',
'entity_type' => 'entity_test',
'registration_type' => $this->registrationType
->id(),
],
]);
$this->view
->save();
$this->view
->preview();
$expected = Link::createFromRoute(t('Register'), 'rng.event.entity_test.register', [
'entity_test' => $event
->id(),
'registration_type' => $this->registrationType
->id(),
])
->toString();
$actual = $this->view->style_plugin
->getField(0, 'rng_event_register');
$this
->assertEqual($actual, $expected);
}
public function testRegisterLinkNoAccess() {
$this
->createEvent();
$user1 = $this
->drupalCreateUser([
'rng register self',
]);
$this
->setCurrentUser($user1);
$this
->createUserRoleRules([], []);
$this->view->displayHandlers
->get('default')
->overrideOption('fields', [
'rng_event_register' => [
'table' => 'entity_test',
'field' => 'rng_event_register',
'id' => 'rng_event_register',
'plugin_id' => 'rng_event_register',
'entity_type' => 'entity_test',
],
]);
$this->view
->save();
$this->view
->preview();
$expected = '';
$actual = $this->view->style_plugin
->getField(0, 'rng_event_register');
$this
->assertEqual($actual, $expected);
}
}