Chris@0: enableViewsTestModule(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests an ajax view. Chris@0: */ Chris@0: public function testAjaxView() { Chris@0: $this->drupalGet('test_ajax_view'); Chris@0: Chris@0: $drupal_settings = $this->getDrupalSettings(); Chris@0: $this->assertTrue(isset($drupal_settings['views']['ajax_path']), 'The Ajax callback path is set in drupalSettings.'); Chris@0: $this->assertEqual(count($drupal_settings['views']['ajaxViews']), 1); Chris@0: $view_entry = array_keys($drupal_settings['views']['ajaxViews'])[0]; Chris@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.'); Chris@0: $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@0: Chris@0: $data = []; Chris@0: $data['view_name'] = 'test_ajax_view'; Chris@0: $data['view_display_id'] = 'test_ajax_view'; Chris@0: Chris@0: $post = [ Chris@0: 'view_name' => 'test_ajax_view', Chris@0: 'view_display_id' => 'page_1', Chris@0: ]; Chris@0: $post += $this->getAjaxPageStatePostData(); Chris@0: $response = $this->drupalPost('views/ajax', '', $post, ['query' => [MainContentViewSubscriber::WRAPPER_FORMAT => 'drupal_ajax']]); Chris@0: $data = Json::decode($response); Chris@0: Chris@0: $this->assertTrue(isset($data[0]['settings']['views']['ajaxViews'])); Chris@0: Chris@0: // Ensure that the view insert command is part of the result. Chris@0: $this->assertEqual($data[1]['command'], 'insert'); Chris@0: $this->assertTrue(strpos($data[1]['selector'], '.js-view-dom-id-') === 0); Chris@0: Chris@0: $this->setRawContent($data[1]['data']); Chris@0: $result = $this->xpath('//div[contains(@class, "views-row")]'); Chris@0: $this->assertEqual(count($result), 2, 'Ensure that two items are rendered in the HTML.'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Ensures that non-ajax view cannot be accessed via an ajax HTTP request. Chris@0: */ Chris@0: public function testNonAjaxViewViaAjax() { Chris@0: $this->drupalPost('views/ajax', '', ['view_name' => 'test_ajax_view', 'view_display_id' => 'default'], ['query' => [MainContentViewSubscriber::WRAPPER_FORMAT => 'drupal_ajax']]); Chris@0: $this->assertResponse(200); Chris@0: $this->drupalPost('views/ajax', '', ['view_name' => 'test_view', 'view_display_id' => 'default'], ['query' => [MainContentViewSubscriber::WRAPPER_FORMAT => 'drupal_ajax']]); Chris@0: $this->assertResponse(403); Chris@0: } Chris@0: Chris@0: }