function ViewsTest::testGetApplicableViews

Same name and namespace in other branches
  1. 9 core/modules/views/tests/src/Unit/ViewsTest.php \Drupal\Tests\views\Unit\ViewsTest::testGetApplicableViews()
  2. 10 core/modules/views/tests/src/Unit/ViewsTest.php \Drupal\Tests\views\Unit\ViewsTest::testGetApplicableViews()
  3. 11.x core/modules/views/tests/src/Unit/ViewsTest.php \Drupal\Tests\views\Unit\ViewsTest::testGetApplicableViews()

@covers ::getApplicableViews

@dataProvider providerTestGetApplicableViews

File

core/modules/views/tests/src/Unit/ViewsTest.php, line 96

Class

ViewsTest
@coversDefaultClass <a href="/api/drupal/core%21modules%21views%21src%21Views.php/class/Views/8.9.x" title="Static service container wrapper for views." class="local">\Drupal\views\Views</a> @group views

Namespace

Drupal\Tests\views\Unit

Code

public function testGetApplicableViews($applicable_type, $expected) {
    $view_1 = new View([
        'id' => 'test_view_1',
        'display' => [
            'default' => [
                'display_plugin' => 'default',
                'display_options' => [],
            ],
            'type_a' => [
                'display_plugin' => 'type_a',
                'display_options' => [],
            ],
        ],
    ], 'view');
    $view_2 = new View([
        'id' => 'test_view_2',
        'display' => [
            'default' => [
                'display_plugin' => 'default',
                'display_options' => [],
            ],
            'type_b' => [
                'display_plugin' => 'type_b',
                'display_options' => [
                    'enabled' => TRUE,
                ],
            ],
            'type_b_2' => [
                'display_plugin' => 'type_b',
                'display_options' => [
                    'enabled' => FALSE,
                ],
            ],
        ],
    ], 'view');
    $view_3 = new View([
        'id' => 'test_view_3',
        'display' => [
            'default' => [
                'display_plugin' => 'default',
                'display_options' => [],
            ],
            // Test with Type A but a disabled display.
'type_a' => [
                'display_plugin' => 'type_a',
                'display_options' => [
                    'enabled' => FALSE,
                ],
            ],
            // Type D intentionally doesn't exist.
'type_d' => [
                'display_plugin' => 'type_d',
                'display_options' => [],
            ],
        ],
    ], 'view');
    $query = $this->createMock('Drupal\\Core\\Entity\\Query\\QueryInterface');
    $query->expects($this->exactly(2))
        ->method('condition')
        ->willReturnSelf();
    $query->expects($this->once())
        ->method('execute')
        ->willReturn([
        'test_view_1',
        'test_view_2',
        'test_view_3',
    ]);
    $view_storage = $this->getMockBuilder('Drupal\\Core\\Config\\Entity\\ConfigEntityStorage')
        ->disableOriginalConstructor()
        ->getMock();
    $view_storage->expects($this->once())
        ->method('getQuery')
        ->willReturn($query);
    $view_storage->expects($this->once())
        ->method('loadMultiple')
        ->with([
        'test_view_1',
        'test_view_2',
        'test_view_3',
    ])
        ->will($this->returnValue([
        'test_view_1' => $view_1,
        'test_view_2' => $view_2,
        'test_view_3' => $view_3,
    ]));
    $entity_type_manager = $this->createMock(EntityTypeManagerInterface::class);
    $entity_type_manager->expects($this->exactly(2))
        ->method('getStorage')
        ->with('view')
        ->will($this->returnValue($view_storage));
    $this->container
        ->set('entity_type.manager', $entity_type_manager);
    $definitions = [
        'type_a' => [
            'type_a' => TRUE,
            'type_b' => FALSE,
        ],
        'type_b' => [
            'type_a' => FALSE,
            'type_b' => TRUE,
        ],
    ];
    $display_manager = $this->createMock('Drupal\\Component\\Plugin\\PluginManagerInterface');
    $display_manager->expects($this->once())
        ->method('getDefinitions')
        ->willReturn($definitions);
    $this->container
        ->set('plugin.manager.views.display', $display_manager);
    $result = Views::getApplicableViews($applicable_type);
    $this->assertEquals($expected, $result);
}

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