Chris@17
|
1 <?php
|
Chris@17
|
2
|
Chris@17
|
3 namespace Drupal\Tests\views\Functional;
|
Chris@17
|
4
|
Chris@17
|
5 use Drupal\Core\EventSubscriber\MainContentViewSubscriber;
|
Chris@17
|
6
|
Chris@17
|
7 /**
|
Chris@17
|
8 * Tests the ajax view functionality.
|
Chris@17
|
9 *
|
Chris@17
|
10 * @group views
|
Chris@17
|
11 */
|
Chris@17
|
12 class ViewAjaxTest extends ViewTestBase {
|
Chris@17
|
13
|
Chris@17
|
14 /**
|
Chris@17
|
15 * Views used by this test.
|
Chris@17
|
16 *
|
Chris@17
|
17 * @var array
|
Chris@17
|
18 */
|
Chris@17
|
19 public static $testViews = ['test_ajax_view', 'test_view'];
|
Chris@17
|
20
|
Chris@17
|
21 protected function setUp($import_test_views = TRUE) {
|
Chris@17
|
22 parent::setUp($import_test_views);
|
Chris@17
|
23
|
Chris@17
|
24 $this->enableViewsTestModule();
|
Chris@17
|
25 }
|
Chris@17
|
26
|
Chris@17
|
27 /**
|
Chris@17
|
28 * Tests an ajax view.
|
Chris@17
|
29 */
|
Chris@17
|
30 public function testAjaxView() {
|
Chris@17
|
31 $this->drupalGet('test_ajax_view');
|
Chris@17
|
32
|
Chris@17
|
33 $drupal_settings = $this->getDrupalSettings();
|
Chris@17
|
34 $this->assertTrue(isset($drupal_settings['views']['ajax_path']), 'The Ajax callback path is set in drupalSettings.');
|
Chris@17
|
35 $this->assertEqual(count($drupal_settings['views']['ajaxViews']), 1);
|
Chris@17
|
36 $view_entry = array_keys($drupal_settings['views']['ajaxViews'])[0];
|
Chris@17
|
37 $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.');
|
Chris@17
|
38 $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.');
|
Chris@17
|
39 }
|
Chris@17
|
40
|
Chris@17
|
41 /**
|
Chris@17
|
42 * Ensures that non-ajax view cannot be accessed via an ajax HTTP request.
|
Chris@17
|
43 */
|
Chris@17
|
44 public function testNonAjaxViewViaAjax() {
|
Chris@17
|
45 $client = $this->getHttpClient();
|
Chris@17
|
46 $response = $client->request('POST', $this->buildUrl('views/ajax'), [
|
Chris@17
|
47 'form_params' => ['view_name' => 'test_ajax_view', 'view_display_id' => 'default'],
|
Chris@17
|
48 'query' => [MainContentViewSubscriber::WRAPPER_FORMAT => 'drupal_ajax'],
|
Chris@17
|
49 ]);
|
Chris@17
|
50 $this->assertEquals(200, $response->getStatusCode());
|
Chris@17
|
51 $response = $client->request('POST', $this->buildUrl('views/ajax'), [
|
Chris@17
|
52 'form_params' => ['view_name' => 'test_view', 'view_display_id' => 'default'],
|
Chris@17
|
53 'query' => [MainContentViewSubscriber::WRAPPER_FORMAT => 'drupal_ajax'],
|
Chris@17
|
54 'http_errors' => FALSE,
|
Chris@17
|
55 ]);
|
Chris@17
|
56 $this->assertEquals(403, $response->getStatusCode());
|
Chris@17
|
57 }
|
Chris@17
|
58
|
Chris@17
|
59 }
|