You are here

public function ViewsTest::testGetApplicableViews in Drupal 9

Same name and namespace in other branches
  1. 8 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 \Drupal\views\Views @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);
}