123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384 |
- <?php
- /**
- * @file
- * Main OpenLayers Test file
- *
- * This file contains the tests for the openlayers
- * module. Please note that since this module
- * depends heavily on Javascript, these tests are
- * limited in ensuring that the OpenLayers module
- * functions 100% correctly.
- *
- * For reference, @see:
- * http://api.drupal.org/api/drupal/modules--simpletest--drupal_web_test_case.php/class/DrupalWebTestCase/7
- *
- * @ingroup openlayers
- */
- /**
- * Test the OpenLayers core functionality.
- */
- class OpenLayersCore extends DrupalWebTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'OpenLayers Core',
- 'description' => 'Tests OpenLayers core functions.',
- 'group' => 'OpenLayers',
- );
- }
- function setUp() {
- // Install modules
- parent::setUp('openlayers', 'ctools', 'openlayers_ui', 'openlayers_test');
- }
- /**
- * Test openlayers_include
- */
- function testInclude() {
- $user = $this->drupalCreateUser(array('administer openlayers'));
- $this->drupalLogin($user);
- // Go to test page and ensure includes happened.
- $this->drupalGet('admin/structure/openlayers/test');
- $this->assertRaw('openlayers.css', t('The OpenLayers CSS file was included'));
- $this->assertRaw('openlayers.js', t('The OpenLayers JS file was included'));
- }
- /**
- * Test map rendering
- */
- function testRender() {
- $rendered = openlayers_render_map();
- //$this->verbose('Map output: ' . var_export($rendered, TRUE));
- // Check output
- $this->assertTrue((stripos($rendered, 'default') !== FALSE), t('Default name found'));
- $this->assertTrue((stripos($rendered, 'id="openlayers-container-openlayers-map') !== FALSE),
- t('Container ID found'));
- $this->assertTrue((stripos($rendered, 'id="openlayers-map') !== FALSE),
- t('Map ID found'));
- $this->assertTrue((stripos($rendered, 'class="openlayers-map') !== FALSE),
- t('Map Class found'));
- }
- }
- /**
- * Test OpenLayers basic UI
- */
- class OpenLayersUI extends DrupalWebTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'OpenLayers UI',
- 'description' => 'Tests OpenLayers basic UI.',
- 'group' => 'OpenLayers',
- );
- }
- function setUp() {
- // Install modules
- parent::setUp('openlayers', 'ctools', 'openlayers_ui', 'openlayers_test');
- }
- /**
- * Ensure that the source can be updated
- */
- function testSourceChange() {
- $user = $this->drupalCreateUser(array('administer openlayers'));
- $this->drupalLogin($user);
- // Update source settings
- $new_openlayers_source = 'http://openlayers.org/nightly/OpenLayers.js';
- $openlayers_settings = array('openlayers_source' => $new_openlayers_source);
- $this->drupalPost('admin/structure/openlayers', $openlayers_settings, t('Save configuration'));
- // Go to map page
- $this->drupalGet('admin/structure/openlayers');
- $this->assertResponse(200, t('User can reach the settings page.'));
- // Check that the new source change is represented
- $this->drupalGet('admin/structure/openlayers');
- $this->assertRaw($new_openlayers_source, t('The OpenLayers source was changed'));
- }
- }
- /**
- * Test OpenLayers maps.
- */
- class OpenLayersMaps extends DrupalWebTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'OpenLayers Maps',
- 'description' => 'Tests the OpenLayers maps system.',
- 'group' => 'OpenLayers',
- );
- }
- function setUp() {
- // Install modules
- parent::setUp('openlayers', 'ctools', 'openlayers_ui', 'openlayers_test');
- }
- /**
- * Ensure that the map shows up in the interface
- */
- function testOpenLayersMaps() {
- $user = $this->drupalCreateUser(array('administer openlayers'));
- $this->drupalLogin($user);
- // Go to map page
- $this->drupalGet('admin/structure/openlayers/maps');
- $this->assertResponse(200, t('User can reach map list.'));
- // Ensure that the default test is listed
- $this->assertText(t('Default Map'),
- t('Assert that the default map\'s title appears.'));
- // Maps
- $this->drupalGet('admin/structure/openlayers/maps/default/export');
- $this->assertResponse(200, t('User can reach default map export page.'));
- $this->drupalGet('admin/structure/openlayers/maps/clone/default');
- $this->assertResponse(200, t('User can reach default map clone page.'));
- $this->drupalGet('admin/structure/openlayers/maps/add');
- $this->assertResponse(200, t('User can reach map add page.'));
- }
- /**
- * Add a new map
- */
- function testMapAdd() {
- $user = $this->drupalCreateUser(array('administer openlayers'));
- $this->drupalLogin($user);
- // Add new map. Add scaleline so we can look for it later
- $map_settings = array(
- 'name' => 'testing_map',
- 'title' => t('Testing Map'),
- 'description' => t('Testing Map description.'),
- 'behaviors[openlayers_behavior_scaleline][enabled]' => TRUE,
- );
- $this->drupalPost('admin/structure/openlayers/maps/add', $map_settings, t('Save'));
- $this->assertText(t('Map saved.'), t('The map was successfully saved.'));
- // Remove Map
- $this->drupalPost('admin/structure/openlayers/maps/list/' . $map_settings['name'] . '/delete',
- array(), t('Delete'));
- $this->assertText('Map was deleted.', t('Map removed succesfully.'));
- }
- }
- /**
- * Test OpenLayers styles.
- */
- class OpenLayersStyles extends DrupalWebTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'OpenLayers Styles',
- 'description' => 'Tests the OpenLayers Styles system.',
- 'group' => 'OpenLayers',
- );
- }
- function setUp() {
- // Install modules
- parent::setUp('openlayers', 'ctools', 'openlayers_ui', 'openlayers_test');
- }
- function testOpenLayersStyles() {
- $user = $this->drupalCreateUser(array('administer openlayers'));
- $this->drupalLogin($user);
- // New style.
- $new_style = array(
- 'name' => 'unitstyle',
- 'title' => 'Unit Style',
- 'description' => 'Unit Style for Drupal',
- );
- // Check basic navigation.
- $this->drupalGet('admin/structure/openlayers/styles/list/default/export');
- $this->assertResponse(200, t('User can reach default style export page.'));
- $this->drupalGet('admin/structure/openlayers/styles/add');
- $this->assertResponse(200, t('User can reach style add page.'));
- // Add new style.
- $this->drupalPost('admin/structure/openlayers/styles/add', $new_style, t('Save'));
- $this->assertText(t('Style saved.'),
- t('The style was successfully saved.'));
- // Test that the style shows up in the style list.
- $this->drupalGet('admin/structure/openlayers/styles');
- $this->assertRaw(t('Unit Style'),
- t('A new style has been added by the test'));
- // Test removing style.
- $this->drupalPost('admin/structure/openlayers/styles/list/unitstyle/delete',
- array(), t('Delete'));
- $this->assertText('Style was deleted.',
- t('Style removed succesfully.'));
- }
- }
- /**
- * Test OpenLayers layers.
- */
- class OpenLayersLayers extends DrupalWebTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'OpenLayers Layers',
- 'description' => 'Tests the OpenLayers Layers system.',
- 'group' => 'OpenLayers',
- );
- }
- function setUp() {
- // Install modules
- parent::setUp('openlayers', 'ctools', 'openlayers_ui', 'openlayers_test');
- }
- function testOpenLayersLayers() {
- $user = $this->drupalCreateUser(array('administer openlayers'));
- $this->drupalLogin($user);
- // New layers to add
- $layer_inputs = array(
- 'openlayers_layer_type_osm' => array(
- 'name' => 'unitlayerosm',
- 'title' => 'Unit Layer',
- 'description' => 'Unit Layer for Drupal',
- ),
- 'openlayers_layer_type_xyz' => array(
- 'name' => 'unitlayerxyz',
- 'title' => 'Unit Layer',
- 'description' => 'Unit Layer for Drupal',
- ),
- 'openlayers_layer_type_kml' => array(
- 'name' => 'unitlayerkml',
- 'title' => 'Unit Layer',
- 'description' => 'Unit Layer for Drupal',
- ),
- 'openlayers_layer_type_wms' => array(
- 'name' => 'unitlayerwms',
- 'title' => 'Unit Layer',
- 'description' => 'Unit Layer for Drupal',
- ),
- 'openlayers_layer_type_cloudmade' => array(
- 'name' => 'unitlayercloudmade',
- 'title' => 'Unit Layer',
- 'description' => 'Unit Layer for Drupal',
- ),
- 'openlayers_layer_type_yahoo' => array(
- 'name' => 'unitlayeryahoo',
- 'title' => 'Unit Layer',
- 'description' => 'Unit Layer for Drupal',
- ),
- 'openlayers_layer_type_bing' => array(
- 'name' => 'unitlayerbing',
- 'title' => 'Unit Layer',
- 'description' => 'Unit Layer for Drupal',
- ),
- 'openlayers_layer_type_google' => array(
- 'name' => 'unitlayergoogle',
- 'title' => 'Unit Layer',
- 'description' => 'Unit Layer for Drupal',
- )
- );
- // Basic navigation.
- $this->drupalGet('admin/structure/openlayers/layers/add');
- $this->assertResponse(200, t('User can reach layer add page.'));
- // Go through each new layer for testing.
- foreach ($layer_inputs as $layer_type => $input_data) {
- // Test saving new layer.
- $input_data['layer_type'] = $layer_type;
- $this->drupalPost('admin/structure/openlayers/layers/add',
- $input_data, t('Save'));
- $this->assertText(t('Layer saved.'),
- t('The layer was successfully saved.'));
- // Ensure that the layer shows up in the list.
- $this->drupalGet('admin/structure/openlayers/layers');
- $this->assertRaw($input_data['title'],
- t('A new layer of layer type %type_name has been added by the test',
- array('%type_name' => $layer_type)));
- // Test removing layer.
- $this->drupalPost('admin/structure/openlayers/layers/list/' .
- $input_data['name'] . '/delete', array(), t('Delete'));
- $this->assertText('Layer was deleted.',
- t('Layer removed succesfully.'));
- }
- }
- }
- /**
- * Test Case for Map Alters
- */
- class OpenLayersMapAlters extends DrupalWebTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'OpenLayers Map Alters',
- 'description' => 'Tests the OpenLayers map alter hooks.',
- 'group' => 'OpenLayers',
- );
- }
- function setUp() {
- // Install modules
- parent::setUp('openlayers', 'ctools', 'openlayers_ui', 'openlayers_test');
- }
- function testOpenLayersMapAlters() {
- $user = $this->drupalCreateUser(array('administer openlayers'));
- $this->drupalLogin($user);
- // Styles
- $this->drupalGet('admin/structure/openlayers/test');
- $this->assertText(t('OpenLayers preprocess map alter hook fired.'),
- t('Map preprocess alter fired correctly.'));
- $this->assertText(t('OpenLayers map alter hook fired.'),
- t('Map alter fired correctly.'));
- }
- }
- /**
- * OpenLayers Unit Tests
- *
- * Do not use t() in Unit tests.
- * https://drupal.org/node/811254
- *
- * Unit tests do not bootstrap Drupal very
- * far which makes them a bit useless if
- * we are utilizing Drupal API functions.
- */
- class OpenLayersUnitTests extends DrupalUnitTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'OpenLayers Unit Tests',
- 'description' => 'Tests functions for OpenLayers.',
- 'group' => 'OpenLayers',
- );
- }
- function testOpenLayersStylePath() {
- module_load_include('inc', 'openlayers', 'includes/openlayers.render');
- global $base_url;
- // Full URL
- $path = 'http://example.org/sites/all/modules/openlayers/example/${path}.jpg';
- $styled_path = openlayers_style_path($path);
- $this->assertTrue($styled_path === $path, 'OpenLayers Style Path function with full URL.');
- // Just replacement value
- $path = '${path}';
- $styled_path = openlayers_style_path($path);
- $this->assertTrue($styled_path === $path, 'OpenLayers Style Path function with just replacement value.');
- // Relative URL
- $path = 'sites/all/modules/openlayers/example/${path}.jpg';
- $styled_path = openlayers_style_path($path);
- $this->assertTrue($styled_path === $base_url . '/' . $path, 'OpenLayers Style Path function with relative URL.');
- }
- }
|