HandlerBaseTest.php

Same filename and directory in other branches
  1. 9 core/modules/views/tests/src/Unit/Plugin/HandlerBaseTest.php
  2. 10 core/modules/views/tests/src/Unit/Plugin/HandlerBaseTest.php
  3. 11.x core/modules/views/tests/src/Unit/Plugin/HandlerBaseTest.php

Contains \Drupal\Tests\views\Unit\Plugin\HandlerBaseTest.

Namespace

Drupal\Tests\views\Unit\Plugin

File

core/modules/views/tests/src/Unit/Plugin/HandlerBaseTest.php

View source
<?php


/**
 * @file
 * Contains \Drupal\Tests\views\Unit\Plugin\HandlerBaseTest.
 */
namespace Drupal\Tests\views\Unit\Plugin;

use Drupal\Tests\UnitTestCase;
use Drupal\views\Plugin\views\HandlerBase;

/**
 * @coversDefaultClass \Drupal\views\Plugin\views\HandlerBase
 * @group Views
 */
class HandlerBaseTest extends UnitTestCase {
    use HandlerTestTrait;
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() {
        parent::setUp();
        $this->setupViewsData();
        $this->setupExecutableAndView();
        $this->setupDisplay();
    }
    
    /**
     * @covers ::getEntityType
     */
    public function testGetEntityTypeForFieldOnBaseTable() {
        $handler = new TestHandler([], 'test_handler', []);
        $handler->init($this->executable, $this->display);
        $this->view
            ->expects($this->any())
            ->method('get')
            ->with('base_table')
            ->willReturn('test_entity_type_table');
        $this->viewsData
            ->expects($this->any())
            ->method('get')
            ->with('test_entity_type_table')
            ->willReturn([
            'table' => [
                'entity type' => 'test_entity_type',
            ],
        ]);
        $handler->setViewsData($this->viewsData);
        $this->assertEquals('test_entity_type', $handler->getEntityType());
    }
    
    /**
     * @covers ::getEntityType
     */
    public function testGetEntityTypeForFieldWithRelationship() {
        $handler = new TestHandler([], 'test_handler', []);
        $options = [
            'relationship' => 'test_relationship',
        ];
        $handler->init($this->executable, $this->display, $options);
        $this->display
            ->expects($this->atLeastOnce())
            ->method('getOption')
            ->with('relationships')
            ->willReturn([
            'test_relationship' => [
                'table' => 'test_entity_type_table',
                'id' => 'test_relationship',
                'field' => 'test_relationship',
            ],
        ]);
        $this->view
            ->expects($this->any())
            ->method('get')
            ->with('base_table')
            ->willReturn('test_entity_type_table');
        $this->viewsData
            ->expects($this->any())
            ->method('get')
            ->willReturnMap([
            [
                'test_entity_type_table',
                [
                    'table' => [
                        'entity type' => 'test_entity_type',
                    ],
                    'test_relationship' => [
                        'relationship' => [
                            'base' => 'test_other_entity_type_table',
                            'base field' => 'id',
                        ],
                    ],
                ],
            ],
            [
                'test_other_entity_type_table',
                [
                    'table' => [
                        'entity type' => 'test_other_entity_type',
                    ],
                ],
            ],
        ]);
        $handler->setViewsData($this->viewsData);
        $this->assertEquals('test_other_entity_type', $handler->getEntityType());
    }

}

/**
 * Allow testing base handler implementation by extending the abstract class.
 */
class TestHandler extends HandlerBase {

}

Classes

Title Deprecated Summary
HandlerBaseTest @coversDefaultClass \Drupal\views\Plugin\views\HandlerBase @group Views
TestHandler Allow testing base handler implementation by extending the abstract class.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.