imagecache_create_url.test in ImageCache 5.2
Same filename and directory in other branches
File
tests/imagecache_create_url.testView source
<?php
// $Id$
/**
* Test class for testing imagecache_create_url() in several use cases with
* the different combinations of clean URLs and private/public download method.
*/
class ImageCacheUrlTests extends DrupalTestCase {
/**
* General admin user.
*/
var $admin_user;
/**
* The id of the php input format.
*/
var $input_format_id;
/**
* Drupal SimpleTest method: return metadata about the test.
*/
function get_info() {
return array(
'name' => 'ImageCache Create URL Tests',
'desc' => 'Assure that URLs are properly generated by imagecache_create_url(), as discussed at http://drupal.org/node/241541',
'group' => 'ImageCache',
);
}
/**
* SimpleTest core method: code run before each and every test method.
*/
function setUp() {
// Always call the setUp() function from the parent class.
parent::setUp();
// Make sure that the ImageCache module is enabled.
$this
->drupalModuleEnable('imagecache');
// Create admin user
$permissions = array(
'administer filters',
);
$this->admin_user = $this
->drupalCreateUserRolePerm($permissions);
// Log in with admin user.
$this
->drupalLoginUser($this->admin_user);
// Add an input format with PHP evaluator.
$edit = array(
'name' => $this
->randomName(10, 'inputformat_'),
'filters[filter/1]' => TRUE,
'roles[2]' => TRUE,
);
$this
->drupalPostRequest('admin/settings/filters/add', $edit, t('Save configuration'));
// Store the format id of the created input format.
$this->input_format_id = db_result(db_query("SELECT format FROM {filter_formats} WHERE name = '%s'", $edit['name']));
$this
->assertTrue($this->input_format_id, t('Input format id (%s)'));
}
/**
* SimpleTest core method: code run after each and every test method.
*/
function tearDown() {
// Remove input format.
$this
->drupalPostRequest('admin/settings/filters/delete/' . $this->input_format_id, array(), t('Delete'));
// Log out admin user.
$this
->drupalGet('logout');
// Always call the tearDown() function from the parent class.
parent::tearDown();
}
/**
* Test function that tests imagecache_create_url() under
* the different combinations of clean URLs and file download method
*/
function testImageCacheCreateUrl() {
// No Clean URLs + public downloads : http://example.com/?q=path/to/files/imagecache/preset/foo.jpg
$this
->_ImagecacheCreateUrlTest(false, FILE_DOWNLOADS_PUBLIC, 'path/to/files', 'preset', 'foo.jpg', 'http://example.com/?q=path/to/files/imagecache/preset/foo.jpg');
// Clean URLs + public downloads : http://example.com/path/to/files/imagecache/preset/foo.jpg
$this
->_ImagecacheCreateUrlTest(true, FILE_DOWNLOADS_PUBLIC, 'path/to/files', 'preset', 'foo.jpg', 'http://example.com/path/to/files/imagecache/preset/foo.jpg');
// No Clean URLs + private downloads : http://example.com/?q=system/files/imagecache/preset/foo.jpg
$this
->_ImagecacheCreateUrlTest(false, FILE_DOWNLOADS_PRIVATE, 'path/to/files', 'preset', 'foo.jpg', 'http://example.com/?q=system/files/imagecache/preset/foo.jpg');
// Clean URLs + private downloads : http://example.com/system/files/imagecache/preset/foo.jpg
$this
->_ImagecacheCreateUrlTest(true, FILE_DOWNLOADS_PRIVATE, 'path/to/files', 'preset', 'foo.jpg', 'http://example.com/system/files/imagecache/preset/foo.jpg');
}
/**
* Function to actually perform URL tests.
* @param $clean_url
* 'clean_url' setting for test.
* @param $file_downloads
* 'file_downloads' setting for test.
* @param $file_directory_path
* 'file_directory_path' setting for tests.
* @param $preset
* imagecache preset name to be used for test.
* @param $path
* file path to be used for generating output.
* @param $expected
* the url expected as output from imagecache_create_url
*
* Note about the implementation:
* At first sight one might think this can be easily implemented with just
* setting the Drupal settings, calling imagecache_create_url() and checking
* the result. This does not work however because the url() function, which is
* used by imagecache_create_url(), caches the clean_url setting with an
* internal static variable. This means that only one setting of clean_url
* can be evaluated per page view.
* To make testing possible, this function creates a node with the PHP
* evaluator as input filter and puts a proper call to imagecache_create_url()
* in the node body. The node view, which is a page view on its own can then
* be checked for the correctly generated URL.
*/
private function _ImagecacheCreateUrlTest($clean_url, $file_downloads, $file_directory_path, $preset, $path, $expected) {
// Drupal settings
$this
->drupalVariableSet('clean_url', $clean_url);
$this
->drupalVariableSet('file_downloads', $file_downloads);
$this
->drupalVariableSet('file_directory_path', $file_directory_path);
// Build node body (php code).
$body = "<?php\n // Change base_url\n \$GLOBALS['base_url'] = 'http://example.com';\n // Generate URL and check it.\n echo imagecache_create_url('{$preset}', '{$path}');\n ?>";
// Create node.
$node = $this
->drupalCreateNode(array(
'body' => $body,
'format' => $this->input_format_id,
));
// Show node.
$this
->drupalGet(url('node/' . $node->nid, NULL, NULL, TRUE));
// Check if expected url shows up
$this
->assertWantedRaw($expected, t('[ImageCacheUrlTests] @clean_url + @file_downloads should return "@expected"', array(
'@clean_url' => $clean_url ? 'Clean URLs' : 'No clean URLs',
'@file_downloads' => $file_downloads == FILE_DOWNLOADS_PRIVATE ? 'private downloads' : 'public downloads',
'@expected' => $expected,
)));
}
}
Classes
Name![]() |
Description |
---|---|
ImageCacheUrlTests | Test class for testing imagecache_create_url() in several use cases with the different combinations of clean URLs and private/public download method. |