Backup of db before drupal security update
[yaffs-website] / web / core / modules / user / src / Tests / Views / HandlerFieldUserNameTest.php
1 <?php
2
3 namespace Drupal\user\Tests\Views;
4
5 use Drupal\Core\Render\RenderContext;
6 use Drupal\views\Views;
7
8 /**
9  * Tests the handler of the user: name field.
10  *
11  * @group user
12  * @see views_handler_field_user_name
13  */
14 class HandlerFieldUserNameTest extends UserTestBase {
15
16   /**
17    * Views used by this test.
18    *
19    * @var array
20    */
21   public static $testViews = ['test_views_handler_field_user_name'];
22
23   public function testUserName() {
24     /** @var \Drupal\Core\Render\RendererInterface $renderer */
25     $renderer = \Drupal::service('renderer');
26
27     $new_user = $this->drupalCreateUser(['access user profiles']);
28     $this->drupalLogin($new_user);
29
30     // Set defaults.
31     $view = Views::getView('test_views_handler_field_user_name');
32     $view->initHandlers();
33     $view->field['name']->options['link_to_user'] = TRUE;
34     $view->field['name']->options['type'] = 'user_name';
35     $view->field['name']->init($view, $view->getDisplay('default'));
36     $view->field['name']->options['id'] = 'name';
37     $this->executeView($view);
38
39     $anon_name = $this->config('user.settings')->get('anonymous');
40     $view->result[0]->_entity->setUsername('');
41     $view->result[0]->_entity->uid->value = 0;
42     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
43       return $view->field['name']->advancedRender($view->result[0]);
44     });
45     $this->assertTrue(strpos($render, $anon_name) !== FALSE, 'For user 0 it should use the default anonymous name by default.');
46
47     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view, $new_user) {
48       return $view->field['name']->advancedRender($view->result[$new_user->id()]);
49     });
50     $this->assertTrue(strpos($render, $new_user->getDisplayName()) !== FALSE, 'If link to user is checked the username should be part of the output.');
51     $this->assertTrue(strpos($render, 'user/' . $new_user->id()) !== FALSE, 'If link to user is checked the link to the user should appear as well.');
52
53     $view->field['name']->options['link_to_user'] = FALSE;
54     $view->field['name']->options['type'] = 'string';
55     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view, $new_user) {
56       return $view->field['name']->advancedRender($view->result[$new_user->id()]);
57     });
58     $this->assertEqual($render, $new_user->getDisplayName(), 'If the user is not linked the username should be printed out for a normal user.');
59
60   }
61
62   /**
63    * Tests that the field handler works when no additional fields are added.
64    */
65   public function testNoAdditionalFields() {
66     /** @var \Drupal\Core\Render\RendererInterface $renderer */
67     $renderer = \Drupal::service('renderer');
68
69     $view = Views::getView('test_views_handler_field_user_name');
70     $this->executeView($view);
71
72     $username = $this->randomMachineName();
73     $view->result[0]->_entity->setUsername($username);
74     $view->result[0]->_entity->uid->value = 1;
75     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
76       return $view->field['name']->advancedRender($view->result[0]);
77     });
78     $this->assertTrue(strpos($render, $username) !== FALSE, 'If link to user is checked the username should be part of the output.');
79   }
80
81 }