apachesolr_base.test in Apache Solr Search 6.3
Same filename and directory in other branches
Unit test class that provides tests for base functionality of the Apachesolr Module without having the need of a Solr Server
File
tests/apachesolr_base.testView source
<?php
abstract class DrupalSolrOfflineWebTestCase extends DrupalWebTestCase {
function _nestedCompare($a1, $a2) {
if (count($a1) != count($a2)) {
$extra1 = array_diff_key($a1, $a2);
$extra2 = array_diff_key($a2, $a1);
$extra = '';
if ($extra1) {
$extra .= ' Extra keys in $a1: ' . implode(', ', array_keys($extra1));
}
if ($extra2) {
$extra .= ' Extra keys in $a2: ' . implode(', ', array_keys($extra2));
}
debug('count($a1) != count($a2) :' . $extra);
return FALSE;
}
foreach ($a1 as $k => $v) {
if (!isset($a2[$k])) {
debug("\$a2[{$k}] is not set");
return FALSE;
}
if (is_array($a1[$k]) && is_array($a2[$k])) {
if (!$this
->_nestedCompare($a1[$k], $a2[$k])) {
debug("_nestedCompare(\$a1[{$k}], \$a2[{$k}]) is false");
return FALSE;
}
}
elseif ($a1[$k] !== $a2[$k]) {
debug("\$a1[{$k}] !== \$a2[{$k}] : " . var_export($a1[$k], TRUE) . " " . var_export($a2[$k], TRUE));
return FALSE;
}
}
return TRUE;
}
}
/**
* @file
* Unit test class that provides tests for base functionality of the Apachesolr
* Module without having the need of a Solr Server
*/
class DrupalSolrOfflineEnvironmentWebTestCase extends DrupalSolrOfflineWebTestCase {
/**
* A global basic user who can search.
*/
var $basic_user;
/**
* A global administrative user who can administer search.
*/
var $admin_user;
static function getInfo() {
return array(
'name' => 'Solr Search Environments',
'description' => 'Tests search environments functionality of the Solr module',
'group' => 'ApacheSolr',
);
}
/**
* Implementation of setUp().
*/
function setUp() {
parent::setUp('search', 'content', 'apachesolr', 'apachesolr_test');
// Create a basic user, which is subject to moderation.
$permissions = array(
'access content',
'search content',
);
$basic_user = $this
->drupalCreateUser($permissions);
// Create an admin user that can bypass revision moderation.
$permissions = array(
'access content',
'search content',
'administer nodes',
'administer search',
);
$admin_user = $this
->drupalCreateUser($permissions);
// Assign users to their test suite-wide properties.
$this->basic_user = $basic_user;
$this->admin_user = $admin_user;
}
/**
* Asserts that the module was installed and that a notice appears that the server is offline
*/
function testServerOffline() {
// Load the default server and reset the static
$env_id = apachesolr_default_environment(NULL, TRUE);
$environment = apachesolr_environment_load($env_id, TRUE);
$environment['url'] = 'http://localhost/solr/core_that_should_not_exist';
apachesolr_environment_save($environment);
cache_clear_all('apachesolr:environments', 'cache_apachesolr');
$status = apachesolr_server_status($environment['url']);
$this
->assertFalse($status, t('A false URL could not be loaded and is offline'));
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('admin/settings/apachesolr');
$text = t('The server seems to be unavailable. Please verify the server settings');
$this
->assertText($text, t('When checking the status of the server it gives the correct message to inform the user that the server is not reachable'));
}
/**
* Asserts that the module was installed and that a notice appears that the server is offline
*/
function testIndexFileIncluded() {
$env_id = apachesolr_default_environment();
$environment = apachesolr_environment_load($env_id);
$environment['url'] = 'http://localhost/solr/core_that_should_not_exist';
apachesolr_environment_save($environment);
cache_clear_all('apachesolr:environments', 'cache_apachesolr');
$paths = array(
'user',
'node',
'admin/settings/apachesolr',
'admin/settings/apachesolr/search-pages',
'admin/settings/apachesolr/search-pages/core_search/edit',
'admin/structure/block/manage/apachesolr_search/mlt-001/configure',
'admin/settings/apachesolr/settings/solr/bias',
'admin/settings/apachesolr/settings/solr/index',
'admin/settings/apachesolr/settings/solr/edit',
'admin/reports/apachesolr',
'admin/reports/apachesolr/conf',
'search/site',
);
$this
->drupalLogin($this->admin_user);
foreach ($paths as $path) {
$this
->drupalGet($path);
$text = 'apachesolr.index.inc was included';
$this
->assertNoText($text, t('Apachesolr.index.inc was not included'));
}
}
/**
* Asserts that we can edit a search environment
*/
function testEditSearchEnvironment() {
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('admin/settings/apachesolr/settings');
$this
->clickLink(t('Edit'));
$this
->assertText(t('Example: http://localhost:8983/solr'), t('Edit page was successfully loaded'));
$edit = array(
'name' => 'new description foo bar',
'url' => 'http://localhost:8983/solr/core_does_not_exists',
);
$this
->drupalPost($this
->getUrl(), $edit, t('Save'));
$this
->assertResponse(200);
apachesolr_load_all_environments(TRUE);
$environments = NULL;
$solr_cache = NULL;
$this
->drupalGet('admin/settings/apachesolr/settings');
$this
->assertText(t('new description foo bar'), t('Search environment description was successfully edited'));
$this
->assertText('http://localhost:8983/solr/core_does_not_exists', t('Search environment url was successfully edited'));
}
/**
* Asserts that we can use various url forms for the search environment
*/
function testEditSearchEnvironmentURLs() {
// Set the various url schemes that will be tested
$urls = array(
'http://user@localhost:8983/solr/core_does_not_exists',
'http://user:pass@localhost:8983/solr/core_does_not_exists',
'http://user:pass@localhost/solr/core_does_not_exists',
'https://localhost:8983/solr/core_does_not_exists',
);
$this
->drupalLogin($this->admin_user);
foreach ($urls as $url) {
$this
->drupalGet('admin/settings/apachesolr/settings');
$this
->clickLink(t('Edit'));
$this
->assertText(t('Example: http://localhost:8983/solr'), t('Edit page was successfully loaded'));
$edit = array(
'url' => $url,
);
$this
->drupalPost($this
->getUrl(), $edit, t('Save'));
$this
->assertResponse(200);
apachesolr_load_all_environments(TRUE);
$this
->drupalGet('admin/settings/apachesolr/settings');
$this
->assertText($url, t('Search environment url was successfully set to !url', array(
'!url' => $url,
)));
}
}
/**
* Asserts that we can clone a search environment
*/
function testCloneSearchEnvironment() {
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('admin/settings/apachesolr/settings');
$this
->assertText(t('Clone'), t('Clone button is available'));
$this
->drupalGet('admin/settings/apachesolr/settings/solr/clone');
$this
->assertText(t('Are you sure you want to clone search environment localhost server'), t('Clone confirmation page was successfully loaded'));
$this
->drupalPost($this
->getUrl(), array(), t('Clone'));
$this
->assertResponse(200);
// Reset vars
apachesolr_load_all_environments(TRUE);
$this
->drupalGet('admin/settings/apachesolr/settings');
$this
->assertText(t('localhost server [cloned]'), t('Search Environment was successfully cloned'));
// Check if the bundles and configurations are exactly the same
// after we clear the caches.
apachesolr_environments_clear_cache();
$envs = apachesolr_load_all_environments();
$this
->assertEqual(count($envs), 2, 'Now we have 2 environments');
$orig_env = $envs['solr'];
unset($envs['solr']);
$cloned_env = array_pop($envs);
$this
->assertTrue($this
->_nestedCompare($orig_env['index_bundles'], $cloned_env['index_bundles']));
$this
->assertTrue($this
->_nestedCompare($orig_env['conf'], $cloned_env['conf']));
}
/**
* Asserts that we can edit a search environment
*/
function testCreateNewSearchEnvironment() {
// Create a new environment
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('admin/settings/apachesolr/settings');
$this
->assertText(t('Add search environment'), t('Create new environment link is available'));
$this
->clickLink(t('Add search environment'));
$this
->assertText(t('Make this Solr search environment the default'), t('Environment creation page successfully added'));
$edit = array(
'url' => 'http://localhost:8983/solr',
'name' => 'my test description',
'env_id' => 'solr_test',
);
$this
->drupalPost($this
->getUrl(), $edit, t('Save'));
$this
->assertResponse(200);
$this
->drupalGet('admin/settings/apachesolr/settings');
$this
->assertText(t('my test description'), t('Search Environment was successfully created'));
// Make this new search environment the default
$this
->drupalGet('admin/settings/apachesolr/settings');
// Click on the second environment edit link
$this
->clickLink(t('Edit'), 1);
$this
->assertText(t('Example: http://localhost:8983/solr'), t('Edit page was successfully loaded'));
$edit = array(
'make_default' => 1,
'conf[apachesolr_read_only]' => APACHESOLR_READ_ONLY,
);
$this
->drupalPost($this
->getUrl(), $edit, t('Save'));
$this
->assertResponse(200);
cache_clear_all();
$this
->drupalGet('admin/settings/apachesolr/settings');
$this
->assertText(t('my test description (Default)'), t('New Search environment was successfully changed to default environment'));
// Clear our cache.
apachesolr_environments_clear_cache();
$mode = apachesolr_environment_variable_get('solr_test', 'apachesolr_read_only', APACHESOLR_READ_WRITE);
$this
->assertEqual($mode, APACHESOLR_READ_ONLY, 'Environment successfully changed to read only');
// Verify the modus
$this
->drupalGet('admin/settings/apachesolr/settings');
// Click on the second environment edit link
$this
->clickLink(t('Edit'), 0);
$this
->assertFieldChecked('edit-conf-apachesolr-read-only-1', t('Environment successfully changed to read only'));
}
}
/**
* @file
* Unit test class that provides tests for base functionality of the Apachesolr
* Module without having the need of a Solr Server
*/
class DrupalSolrOfflineSearchPagesWebTestCase extends DrupalSolrOfflineWebTestCase {
/**
* A global basic user who can search.
*/
var $basic_user;
/**
* A global administrative user who can administer search.
*/
var $admin_user;
public static function getInfo() {
return array(
'name' => 'Solr Search Pages',
'description' => 'Tests search pages functionality of the Solr module',
'group' => 'ApacheSolr',
);
}
/**
* Implementation of setUp().
*/
function setUp() {
parent::setUp('content', 'search', 'apachesolr', 'apachesolr_search');
apachesolr_load_service_class('', array(
'file' => 'tests/Dummy_Solr',
'module' => 'apachesolr',
'class' => 'DummySolr',
));
// Create a basic user, which is subject to moderation.
$permissions = array(
'access content',
'search content',
);
$basic_user = $this
->drupalCreateUser($permissions);
// Create an admin user that can bypass revision moderation.
$permissions = array(
'access content',
'search content',
'administer nodes',
'administer search',
);
$admin_user = $this
->drupalCreateUser($permissions);
// Assign users to their test suite-wide properties.
$this->basic_user = $basic_user;
$this->admin_user = $admin_user;
// Make sure our environment does not exists
$env_id = apachesolr_default_environment(NULL, TRUE);
$environment = apachesolr_environment_load($env_id, TRUE);
$environment['url'] = 'http://localhost/solr/core_that_should_not_exist';
apachesolr_environment_save($environment);
// Reset all caches
apachesolr_load_all_environments(TRUE);
}
/**
* Asserts that we can edit a search environment
*/
function testCheckCoreSearchPage() {
// Create a new environment
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('admin/settings/apachesolr/search-pages');
$this
->assertText(t('Core Search'), t('Core Search page is available'));
}
/**
* Asserts that we can edit a search environment
*/
function testEditSearchPage() {
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('admin/settings/apachesolr/search-pages');
$this
->clickLink(t('Edit'));
$this
->assertText(t('The human-readable name of the search page configuration'), t('Edit page was successfully loaded'));
$edit = array(
'label' => 'Test Search Page',
'description' => 'Test Description',
'page_title' => 'Test Title',
'search_path' => 'search/searchdifferentpath',
);
$this
->drupalPost($this
->getUrl(), $edit, t('Save'));
$this
->assertResponse(200);
// Reset static var
apachesolr_search_page_load('core_search', TRUE);
$this
->drupalGet('admin/settings/apachesolr/search-pages');
$this
->assertText(t('Test Search Page'), t('Search page was successfully edited'));
$this
->assertText('search/searchdifferentpath', t('Search path was updated'));
// Reset static var
$search_page = apachesolr_search_page_load('core_search', TRUE);
cache_clear_all();
menu_rebuild();
$this
->drupalGet('search/searchdifferentpath');
$this
->assertText(t('Search is temporarily unavailable. If the problem persists, please contact the site administrator.'), t('Search path was successfully created and is accessible'));
}
/**
* Asserts that we can clone a search page
*/
function testCloneSearchPage() {
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('admin/settings/apachesolr/search-pages');
// Reset static var
apachesolr_search_page_load('core_search', TRUE);
$this
->assertText(t('Clone'), t('Clone button is available'));
$this
->drupalGet('admin/settings/apachesolr/search-pages/core_search/clone');
$this
->assertText(t('Are you sure you want to clone search page'), t('Clone confirmation page was successfully loaded'));
$this
->drupalPost($this
->getUrl(), array(), t('Clone'));
$this
->assertResponse(200);
// Reset static var
apachesolr_search_page_load('core_search', TRUE);
$this
->drupalGet('admin/settings/apachesolr/search-pages');
$this
->assertText(t('Core Search [cloned]'), 'Search page was successfully cloned');
}
/**
* Asserts that we can edit a search environment
*/
function testNewAndRemoveSearchPage() {
// Create a new search page
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('admin/settings/apachesolr/search-pages');
$this
->assertText(t('Add search page'), t('Create new search page link is available'));
$this
->clickLink(t('Add search page'));
$this
->assertText(t('The human-readable name of the search page configuration.'), t('Search page creation page successfully added'));
$edit = array(
'page_id' => 'solr_testingsuite',
'env_id' => 'solr',
'label' => 'Test Search Page',
'description' => 'Test Description',
'page_title' => 'Test Title',
'search_path' => 'search/searchdifferentpath',
);
$this
->drupalPost($this
->getUrl(), $edit, t('Save'));
$this
->assertResponse(200);
// Make sure the menu is recognized
// Reset static var
apachesolr_search_page_load('core_search', TRUE);
menu_cache_clear_all();
menu_rebuild();
$this
->drupalGet('admin/settings/apachesolr/search-pages');
$this
->assertText(t('Test Search Page'), t('Search Page was successfully created'));
// Remove the same environment
// Note: the first delete link is for the taxonomy search page which is enabled by default.
$this
->clickLink(t('Delete'));
$this
->assertText(t('search page configuration will be deleted.This action cannot be undone.'), t('Delete confirmation page was successfully loaded'));
$this
->drupalPost($this
->getUrl(), array(), t('Delete'));
$this
->assertResponse(200);
// Reset static var
apachesolr_search_page_load('core_search', TRUE);
$this
->drupalGet('admin/settings/apachesolr/search-pages');
$this
->assertNoText(t('Test Search Page'), t('Search Environment was successfully deleted'));
apachesolr_environment_save(array(
'env_id' => 'DummySolr',
'service_class' => 'DummySolr',
'name' => 'dummy server',
'url' => 'http://localhost:8983/solr',
));
$solr = new DummySolr($url = NULL, $env_id = 'DummySolr');
$params = array(
'rows' => 5,
);
$results = apachesolr_search_run('apachesolr_test', $params, '', '', 0, $solr);
$query = apachesolr_current_query('DummySolr');
$this
->assertEqual($query
->getParam('rows'), 5, 'Passed in rows param overrode default');
}
}
class DrupalSolrNodeTestCase extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'Solr Node Add, Deletion and Indexing Tests',
'description' => 'Solr Node add, deletion, indexing and document building tests',
'group' => 'ApacheSolr',
);
}
/**
* Implementation of setUp().
*/
function setUp() {
parent::setUp('content', 'apachesolr', 'apachesolr_search', 'search', 'apachesolr_test');
apachesolr_load_service_class('', array(
'file' => 'tests/Dummy_Solr',
'module' => 'apachesolr',
'class' => 'DummySolr',
));
// Create a basic user, which is subject to moderation.
$permissions = array(
'access content',
'search content',
);
$basic_user = $this
->drupalCreateUser($permissions);
// Create an admin user that can bypass revision moderation.
$permissions = array(
'access content',
'search content',
'administer nodes',
'administer search',
);
$admin_user = $this
->drupalCreateUser($permissions);
// Assign users to their test suite-wide properties.
$this->basic_user = $basic_user;
$this->admin_user = $admin_user;
// Make sure our environment does not exists
$env_id = apachesolr_default_environment(NULL, TRUE);
$environment = apachesolr_environment_load($env_id, TRUE);
$environment['url'] = 'http://localhost/solr/core_that_should_not_exist';
apachesolr_environment_save($environment);
// Reset all caches
apachesolr_load_all_environments(TRUE);
}
function testApacheSolrNodeAddDelete() {
$this
->drupalLogin($this->admin_user);
// enable our bundles to be indexed, and clear caches
apachesolr_index_set_bundles('solr', 'node', array(
'page',
'story',
));
content_clear_type_cache();
apachesolr_environments_clear_cache();
// Define types of node bundles that we want to index
$types = array(
'page',
'story',
);
$table = apachesolr_get_indexer_table('node');
foreach ($types as $type) {
$edit = array();
// Create a node of the type $type.
$edit['uid'] = $this->admin_user->uid;
$edit['type'] = $type;
$edit['title'] = $this
->randomName(16);
$node = $this
->drupalCreateNode($edit);
$this
->assertTrue(is_object($node) && isset($node->nid), t('Article type @type has been created.', array(
'@type' => $type,
)));
// Check that the node has been created.
$node = $this
->drupalGetNodeByTitle($edit['title']);
$this
->assertTrue($node, t('Created story @type found in database.', array(
'@type' => $type,
)));
// Check that the node has status 1
$query = "SELECT status FROM {{$table}} WHERE entity_id = %d";
$db_node_status = db_result(db_query($query, $node->nid));
$this
->assertEqual($db_node_status, 1, t('Node @entity_id has status 1', array(
'@entity_id' => $node->nid,
)));
// Delete the node
$this
->drupalPost('node/' . $node->nid . '/delete', array(), t('Delete'));
// check if the entity delete does its work. It should have set the
// status to 0 so it will be deleted when solr comes online
$query = "SELECT status FROM {{$table}} WHERE entity_id = %d";
$db_node_status = db_result(db_query($query, $node->nid));
$this
->assertEqual($db_node_status, 0, t('Node @entity_id has status 0', array(
'@entity_id' => $node->nid,
)));
// Check that all the nodes have been deleted.
$query = "SELECT count(*) as count FROM {node} WHERE nid = %d";
$count = db_result(db_query($query));
$this
->assertEqual($count, 0, t('No more nodes left in the node table.'));
}
}
function testApacheSolrNodeReindex() {
// Login as admin user to perform initial content creation.
$this
->drupalLogin($this->admin_user);
// Define types of node bundles that we want to index
$types = array(
'page',
'story',
);
// enable our bundles to be indexed, and clear caches
apachesolr_index_set_bundles('solr', 'node', $types);
content_clear_type_cache();
apachesolr_environments_clear_cache();
// Create 10 nodes (5 times 2)
foreach ($types as $type) {
for ($i = 0; $i < 5; $i++) {
$edit = array();
// Create a node of the type $type.
$edit['uid'] = $this->admin_user->uid;
$edit['type'] = $type;
$edit['title'] = $this
->randomName(16);
$node = $this
->drupalCreateNode($edit);
}
}
// Set a static timestamp
$timestamp = 1382019301;
$env_id = apachesolr_default_environment();
// Clear the last timestamp so we know that our nodes have to be indexed.
apachesolr_environment_variable_set($env_id, 'apachesolr_index_last', array());
// Set apachesolr_index_entities_node.changed to the same value
// (REQUEST_TIME).
$table = apachesolr_get_indexer_table('node');
db_query("UPDATE {{$table}} SET changed = %d, status = 1", $timestamp);
// Fake that we actually indexed before
apachesolr_set_last_index_position($env_id, 'node', $timestamp + 1, 10);
// Set the changed date to after our previous index cycle
db_query("UPDATE {{$table}} SET changed = %d + 10, status = 1 WHERE entity_id <= 9", $timestamp);
// Get the next 5 entities to index.
$set = apachesolr_index_get_entities_to_index($env_id, 'node', 5);
$count = count($set);
$this
->assertEqual($count, 5, t('We found 5 entities to index.'));
// Mark the last item from that 5 as last indexed.
$last_row = end($set);
apachesolr_set_last_index_position($env_id, 'node', $last_row->changed, $last_row->entity_id);
// Get the next batch of 5 and this should be 4 items.
$set = apachesolr_index_get_entities_to_index($env_id, 'node', 4);
$count = count($set);
$this
->assertEqual($count, 4, t('We found 4 entities to index.'));
// Mark the last item from that 4 as last indexed.
$last_row = end($set);
apachesolr_set_last_index_position($env_id, 'node', $last_row->changed, $last_row->entity_id);
// Get the next batch of 5 and this should be 0 items
$set = apachesolr_index_get_entities_to_index($env_id, 'node', 5);
$count = count($set);
$this
->assertEqual($count, 0, t('We found 0 entities to index.'));
}
function testNodeToDocument() {
// enable our bundles to be indexed, and clear caches
apachesolr_index_set_bundles('solr', 'node', array(
'story',
));
apachesolr_environments_clear_cache();
$edit = array();
// Create a node of the type story.
$type = 'story';
$edit['uid'] = 1;
$edit['type'] = $type;
$edit['title'] = $this
->randomName(16);
$edit['body'] = 'some other ORDINARY_TEXT ';
// Make sure the format allows all tags.
// In a fresh installation 'Full HTML' gets the ID 2 in drupal 6
$edit['format'] = 2;
// drupal 7 uses machine name 'full_html'
$tags_to_index = _apachesolr_tags_to_index();
// Tags that are not boosted normally.
$other_tags = array(
'div' => 'tags_inline',
'span' => 'tags_inline',
);
$all_tags = $tags_to_index + $other_tags;
$tag_content = array();
foreach ($all_tags as $tag_name => $field_name) {
$tag_content[$tag_name] = strtoupper($tag_name) . '_TAG_CONTENT';
if ($tag_name == 'a') {
$edit['body'] .= "<{$tag_name} href=\"http://example.com\">{$tag_content[$tag_name]}</{$tag_name}> other filler ";
}
else {
$edit['body'] .= "<{$tag_name}>{$tag_content[$tag_name]}</{$tag_name}> dummy text ";
}
}
$node = $this
->drupalCreateNode($edit);
$this
->assertTrue(is_object($node) && isset($node->nid), t('Article type @type has been created.', array(
'@type' => $type,
)));
$item = new stdClass();
$item->entity_id = $node->nid;
$item->entity_type = 'node';
$item->bundle = $node->type;
$env_id = apachesolr_default_environment();
$docs = apachesolr_index_entity_to_documents($item, $env_id);
$this
->assertEqual(count($docs), 1, 'Only one document from one node');
$document = end($docs);
$this
->assertTrue(strpos($document->content, 'ORDINARY_TEXT') !== FALSE, "Found in content field expected: ORDINARY_TEXT");
foreach ($tags_to_index as $tag_name => $field_name) {
$this
->assertTrue(strpos($document->content, $tag_content[$tag_name]) !== FALSE, "Found in content field expected: {$tag_content[$tag_name]}");
$this
->assertTrue(!empty($document->{$field_name}) && strpos($document->{$field_name}, $tag_content[$tag_name]) !== FALSE, "Found in {$field_name} field expected: {$tag_content[$tag_name]}");
$this
->assertTrue(empty($document->{$field_name}) || strpos($document->{$field_name}, 'ORDINARY_TEXT') === FALSE, "NOT Found in {$field_name}: ORDINARY_TEXT");
}
foreach ($other_tags as $tag_name => $field_name) {
$this
->assertTrue(strpos($document->content, $tag_content[$tag_name]) !== FALSE, "Found in content field expected: {$tag_content[$tag_name]}");
$this
->assertTrue(empty($document->{$field_name}) || strpos($document->{$field_name}, $tag_content[$tag_name]) === FALSE, "NOT found in {$field_name}: {$tag_content[$tag_name]}");
}
}
}
class DrupalSolrOfflineUnitTestCase extends DrupalUnitTestCase {
public static function getInfo() {
return array(
'name' => 'Solr Base Framework Tests Unit Test',
'description' => 'Unit test functionality of the Solr module',
'group' => 'ApacheSolr',
);
}
function setUp() {
parent::setUp();
require_once dirname(dirname(realpath(__FILE__))) . '/apachesolr.module';
$this->script_content = <<<EOF
<p>GOOD_CONTENT</p>
<script type="text/javascript" >
\$(document).ready(function(){
\$('.accordion_teachers').accordion({ collapsible:true, autoHeight:false });
});
</script>
EOF;
$this->embed_content = <<<EOF
<p>GOOD_CONTENT</p>
<object width="425" height="349"><param name="movie" value="http://www.youtube.com/v/8Vmnq5dBF7Y?version=3&hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/8Vmnq5dBF7Y?version=3&hl=en_US" type="application/x-shockwave-flash" width="425" height="349" allowscriptaccess="always" allowfullscreen="true"></embed></object>
OTHER_CONTENT
EOF;
$this->iframe_content = <<<EOF
<iframe width="425" height="349" src="http://www.youtube.com/embed/8Vmnq5dBF7Y" frameborder="0" allowfullscreen></iframe>
<p><a href="#">GOOD_CONTENT</a></p><iframe></iframe>
EOF;
$this->comment_content = <<<EOF
<p><em>GOOD_CONTENT</em></p><!-- COMMENT -->
OTHER_CONTENT
EOF;
}
/**
* Test ordering of parsed filter positions.
*
* Regression test for http://drupal.org/node/891962
*/
function testContentFilters() {
$cleaned = apachesolr_clean_text($this->script_content);
$this
->assertFalse(strpos($cleaned, 'script'), 'Script tags removed');
$this
->assertFalse(strpos($cleaned, 'accordion_teachers'), 'Script tags conent removed');
$this
->assertTrue(strpos(trim($cleaned), 'GOOD_CONTENT') === 0, 'Real content retained');
$cleaned = apachesolr_clean_text($this->embed_content);
$this
->assertFalse(strpos($cleaned, 'object'), 'object tags removed');
$this
->assertFalse(strpos($cleaned, 'embed'), 'embed tags removed');
$this
->assertFalse(strpos($cleaned, '8Vmnq5dBF7Y'), 'object tags conent removed');
$this
->assertFalse(strpos($cleaned, 'shockwave-flash'), 'embed tags conent removed');
$this
->assertTrue(strpos(trim($cleaned), 'GOOD_CONTENT') === 0, 'Real content retained');
$this
->assertTrue(strpos($cleaned, 'OTHER_CONTENT') > 0, 'Other content retained');
$cleaned = apachesolr_clean_text($this->iframe_content);
$this
->assertFalse(strpos($cleaned, 'iframe'), 'iframe tags removed');
$this
->assertFalse(strpos($cleaned, '8Vmnq5dBF7Y'), 'iframe tags conent removed');
$this
->assertTrue(strpos(trim($cleaned), 'GOOD_CONTENT') === 0, 'Real content retained');
$cleaned = apachesolr_clean_text($this->comment_content);
$this
->assertFalse(strpos($cleaned, 'COMMENT'), 'html comment content removed ');
$this
->assertTrue(strpos(trim($cleaned), 'GOOD_CONTENT') === 0, 'Real content retained');
}
}
Classes
Name![]() |
Description |
---|---|
DrupalSolrNodeTestCase | |
DrupalSolrOfflineEnvironmentWebTestCase | @file Unit test class that provides tests for base functionality of the Apachesolr Module without having the need of a Solr Server |
DrupalSolrOfflineSearchPagesWebTestCase | @file Unit test class that provides tests for base functionality of the Apachesolr Module without having the need of a Solr Server |
DrupalSolrOfflineUnitTestCase | |
DrupalSolrOfflineWebTestCase |