hook_event_dispatcher-8.x-2.04/modules/preprocess_event_dispatcher/tests/src/Unit/PageTest.php

modules/preprocess_event_dispatcher/tests/src/Unit/PageTest.php
<?php

namespace Drupal\Tests\preprocess_event_dispatcher\Unit;

use Drupal\node\NodeInterface;
use Drupal\preprocess_event_dispatcher\Variables\PageEventVariables;
use PHPUnit\Framework\TestCase;

/**
 * Class PageTest.
 *
 * @group preprocess_event_dispatcher
 */
final class PageTest extends TestCase {

  /**
   * Test the getter.
   */
  public function testGet(): void {
    $vars = [];
    $vars['page']['test'] = TRUE;
    $vars['page']['array'] = ['array key' => 1];
    $vars['page']['object'] = new \stdClass();
    $page = new PageEventVariables($vars);
    self::assertTrue($page->get('test'));
    self::assertArrayHasKey('array key', $page->get('array'));
    self::assertInstanceOf(\stdClass::class, $page->get('object'));
    self::assertFalse($page->get('doesNotExists', FALSE));
  }

  /**
   * Test the setter.
   */
  public function testSet(): void {
    $vars = [];
    $page = new PageEventVariables($vars);
    $page->set('test', TRUE);
    $page->set('array', ['array key' => 1]);
    $page->set('object', new \stdClass());
    self::assertTrue($page->get('test'));
    self::assertArrayHasKey('array key', $page->get('array'));
    self::assertInstanceOf(\stdClass::class, $page->get('object'));
    $page->set('null');
    self::assertNull($page->get('null'));
  }

  /**
   * The the vars by ref.
   */
  public function testVarByRef(): void {
    $vars = [];
    $page = new PageEventVariables($vars);
    $vars['page']['test'] = TRUE;
    $vars['page']['array'] = ['array key' => 1];
    $vars['page']['object'] = new \stdClass();
    self::assertTrue($page->get('test'));
    self::assertArrayHasKey('array key', $page->get('array'));
    self::assertInstanceOf(\stdClass::class, $page->get('object'));
  }

  /**
   * Test is node page.
   */
  public function testIsNodePage(): void {
    $vars = [];
    $page = new PageEventVariables($vars);
    self::assertFalse($page->isNodePage());
    $vars['node'] = new \stdClass();
    self::assertFalse($page->isNodePage());
    $vars['node'] = $this->createMock(NodeInterface::class);
    self::assertTrue($page->isNodePage());
  }

  /**
   * Test getNode() call.
   */
  public function testGetNode(): void {
    $vars = [];
    $page = new PageEventVariables($vars);
    self::assertNull($page->getNode());
    $page->set('node', new \stdClass());
    self::assertNull($page->getNode());
    $vars['node'] = $this->createMock(NodeInterface::class);
    self::assertNotNull($page->getNode());
    self::assertSame($vars['node'], $page->getNode());
  }

  /**
   * Test getting a var by ref and changing it.
   */
  public function testGetVarByRef(): void {
    $vars = [];
    $vars['page']['test'] = 'test';
    $page = new PageEventVariables($vars);
    $test = &$page->getByReference('test');
    self::assertSame('test', $test);
    $test = 'OtherTest';
    self::assertSame('OtherTest', $page->get('test'));
    self::assertSame('OtherTest', $vars['page']['test']);
  }

  /**
   * Test getting root variables by reference.
   */
  public function testGetRootVariablesByReference(): void {
    $vars = [];
    $vars['test'] = 'something';
    $page = new PageEventVariables($vars);
    $retrievedVars = &$page->getRootVariablesByReference();
    self::assertSame($vars, $retrievedVars);

    $retrievedVars['test2'] = 'other';
    self::assertSame($vars, $retrievedVars);
    self::assertSame($vars, $page->getRootVariablesByReference());
  }

  /**
   * Test add cache context.
   */
  public function testAddCacheContext(): void {
    $vars = [];
    $page = new PageEventVariables($vars);
    $page->addCacheContext('url.path');

    $expectedVars = [];
    $expectedVars['#cache']['contexts'][] = 'url.path';
    self::assertSame($expectedVars, $vars);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc