You are here

ViewAjaxTest.php in Zircon Profile 8

Same filename and directory in other branches
  1. 8.0 core/modules/views/src/Tests/ViewAjaxTest.php

Namespace

Drupal\views\Tests

File

core/modules/views/src/Tests/ViewAjaxTest.php
View source
<?php

/**
 * @file
 * Contains \Drupal\views\Tests\ViewAjaxTest.
 */
namespace Drupal\views\Tests;

use Drupal\Component\Serialization\Json;

/**
 * Tests the ajax view functionality.
 *
 * @group views
 */
class ViewAjaxTest extends ViewTestBase {

  /**
   * Views used by this test.
   *
   * @var array
   */
  public static $testViews = array(
    'test_ajax_view',
  );
  protected function setUp() {
    parent::setUp();
    $this
      ->enableViewsTestModule();
  }

  /**
   * Tests an ajax view.
   */
  public function testAjaxView() {
    $this
      ->drupalGet('test_ajax_view');
    $drupal_settings = $this
      ->getDrupalSettings();
    $this
      ->assertTrue(isset($drupal_settings['views']['ajax_path']), 'The Ajax callback path is set in drupalSettings.');
    $this
      ->assertEqual(count($drupal_settings['views']['ajaxViews']), 1);
    $view_entry = array_keys($drupal_settings['views']['ajaxViews'])[0];
    $this
      ->assertEqual($drupal_settings['views']['ajaxViews'][$view_entry]['view_name'], 'test_ajax_view', 'The view\'s ajaxViews array entry has the correct \'view_name\' key.');
    $this
      ->assertEqual($drupal_settings['views']['ajaxViews'][$view_entry]['view_display_id'], 'page_1', 'The view\'s ajaxViews array entry has the correct \'view_display_id\' key.');
    $data = array();
    $data['view_name'] = 'test_ajax_view';
    $data['view_display_id'] = 'test_ajax_view';
    $post = array(
      'view_name' => 'test_ajax_view',
      'view_display_id' => 'page_1',
    );
    $post += $this
      ->getAjaxPageStatePostData();
    $response = $this
      ->drupalPost('views/ajax', 'application/vnd.drupal-ajax', $post);
    $data = Json::decode($response);
    $this
      ->assertTrue(isset($data[0]['settings']['views']['ajaxViews']));

    // Ensure that the view insert command is part of the result.
    $this
      ->assertEqual($data[1]['command'], 'insert');
    $this
      ->assertTrue(strpos($data[1]['selector'], '.js-view-dom-id-') === 0);
    $this
      ->setRawContent($data[1]['data']);
    $result = $this
      ->xpath('//div[contains(@class, "views-row")]');
    $this
      ->assertEqual(count($result), 2, 'Ensure that two items are rendered in the HTML.');
  }

}

Classes

Namesort descending Description
ViewAjaxTest Tests the ajax view functionality.