function MediaElementSettingsTestCase::testWidgetSettings in D7 Media 7.3
Same name and namespace in other branches
- 7.4 tests/media.test \MediaElementSettingsTestCase::testWidgetSettings()
- 7.2 tests/media.test \MediaElementSettingsTestCase::testWidgetSettings()
Tests the media file field widget settings.
File
- tests/
media.test, line 974 - Tests for media.module.
Class
- MediaElementSettingsTestCase
- Tests the 'media' element type settings.
Code
function testWidgetSettings() {
// Use 'page' instead of 'article', so that the 'article' image field does
// not conflict with this test. If in the future the 'page' type gets its
// own default file or image field, this test can be made more robust by
// using a custom node type.
$type_name = 'page';
$field_name = strtolower($this
->randomName());
$this
->createFileField($field_name, $type_name);
$field = field_info_field($field_name);
$instance = field_info_instance('node', $field_name, $type_name);
$javascript = $this
->drupalGet("node/add/{$type_name}");
$multiselect = $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED;
$field_widget = array(
'elements' => array(
'.js-media-element-edit-' . $field_name . '-' . LANGUAGE_NONE . '-0-upload' => array(
'global' => array(
'types' => array(
'image' => 'image',
),
'enabledPlugins' => array(),
'schemes' => array(
'public' => 'public',
),
'file_directory' => '',
'file_extensions' => 'txt',
'max_filesize' => '',
'uri_scheme' => 'public',
'multiselect' => $multiselect,
'field' => $field_name,
),
),
),
);
$settings = drupal_json_encode(drupal_array_merge_deep_array($field_widget));
$string_with_options = '-0-upload":{"global":{"options":"';
$index_of_cid = strpos($javascript, $string_with_options) + strlen($string_with_options);
$index_end_of_cid = strpos($javascript, '"', $index_of_cid + 1);
$cid = substr($javascript, $index_of_cid, $index_end_of_cid - $index_of_cid);
// Retrieve the security sensitive options from the cache using the cid parsed out from the $javascript variable
$retrieved_settings = cache_get('media_options:' . $cid, 'cache_form');
$retrieved_settings = array(
'.js-media-element-edit-' . $field_name . '-' . LANGUAGE_NONE . '-0-upload' => array(
'global' => $retrieved_settings->data,
),
);
$retrieved_settings_json = drupal_json_encode($retrieved_settings);
$this
->assertTrue($retrieved_settings_json == $settings, 'Media file field widget retrieved from cache and has element-specific settings.');
$this
->assertTrue(strpos($javascript, $cid) > 0, 'Media file field widget is cached and its` cache id is found.');
}