<?php
/**
 * WebTest tests for gmap_test_extended.module.
 */

class GmapViewsExtendedTestCase extends DrupalWebTestCase {

  protected $privileged_user;
  protected $modules = array(
    'gmap',
    'gmap_test_extended',
    'views',
    'views_ui',
    'text',
    'options',
    'geofield',
    'features',
    'entityreference',
    'addressfield',
    'location',
    'location_cck',
    'geophp',
    'entity'
  );

  public static function getInfo() {
    return array(
      'name' => 'GmapViewsExtendedTestCase',
      'description' => 'Test the Gmap Views Extended.',
      'group' => 'GMap',
    );
  }

  public function setUp() {
    parent::setUp($this->modules);

    // login with user
    $this->privileged_user = $this->drupalCreateUser(array_keys(module_invoke_all('permission')));
    $this->drupalLogin($this->privileged_user);

  }

  //@todo remove this after http://drupal.org/node/1252310#comment-7109128 fix
  protected function error($message = '', $group = 'Other', array $caller = NULL) {
    if ($message == 'Undefined index: location_settings') {
      // change error (Notice) to debug message
      return $this->assert('debug', $message, 'Debug', $caller);
    }
    // @todo create follow-up
    if ($message == 'Undefined index: iwq') {
      // change error (Notice) to debug message
      return $this->assert('debug', $message, 'Debug', $caller);
    }
    // @todo create follow-up
    if ($message == 'Undefined index: highlight_nodearg_color') {
      // change error (Notice) to debug message
      return $this->assert('debug', $message, 'Debug', $caller);
    }

    return parent::error($message, $group, $caller);
  }

  public function _testGmapViews() {
    //@todo fix gmap_views tests
    return;
    // array for form
    $edit = array();
    // page view
    $this->drupalPost('admin/structure/views/view/gmap_test_extended_places/edit/page', $edit, t('Save'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/page/style_plugin', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/page/style_options', $edit, t('Apply'));
    $this->drupalGet('admin/structure/views/nojs/display/gmap_test_extended_places/page/style_options');
    $this->assertRaw(t('Enter a macro. If left unchanged, it takes the default settings from <a href="!link">/admin/config/services/gmap</a>. See the <a href="http://drupal.org/documentation/modules/gmap/macros">documentation on GMap macros</a>.', array('!link' => url('admin/config/services/gmap'))));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/page/relationship/field_mylocation_target_id', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/page/field/latitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/page/field/longitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/page/field/field_mygeofield', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/page/field/field_mylatitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/page/field/field_mylongitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/page/field/field_mygeofield_1', $edit, t('Apply'));

    // table view
    $this->drupalPost('admin/structure/views/view/gmap_test_extended_places/edit/block_table', $edit, t('Save'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_table/relationship/field_mylocation_target_id', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_table/field/latitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_table/field/longitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_table/field/field_mygeofield', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_table/field/field_mylatitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_table/field/field_mylongitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_table/field/field_mygeofield_1', $edit, t('Apply'));

    // block_geofield view
    $this->drupalPost('admin/structure/views/view/gmap_test_extended_places/edit/block_geofield', $edit, t('Save'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/block_geofield/style_plugin', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/block_geofield/style_options', $edit, t('Apply'));
    $this->drupalGet('admin/structure/views/nojs/display/gmap_test_extended_places/block_geofield/style_options');
    $this->assertRaw(t('Enter a macro. If left unchanged, it takes the default settings from <a href="!link">/admin/config/services/gmap</a>. See the <a href="http://drupal.org/documentation/modules/gmap/macros">documentation on GMap macros</a>.', array('!link' => url('admin/config/services/gmap'))));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_geofield/relationship/field_mylocation_target_id', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_geofield/field/latitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_geofield/field/longitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_geofield/field/field_mygeofield', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_geofield/field/field_mylatitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_geofield/field/field_mylongitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_geofield/field/field_mygeofield_1', $edit, t('Apply'));

    // block_location view
    $this->drupalPost('admin/structure/views/view/gmap_test_extended_places/edit/block_location', $edit, t('Save'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/block_location/style_plugin', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/block_location/style_options', $edit, t('Apply'));
    $this->drupalGet('admin/structure/views/nojs/display/gmap_test_extended_places/block_location/style_options');
    $this->assertRaw(t('Enter a macro. If left unchanged, it takes the default settings from <a href="!link">/admin/config/services/gmap</a>. See the <a href="http://drupal.org/documentation/modules/gmap/macros">documentation on GMap macros</a>.', array('!link' => url('admin/config/services/gmap'))));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_location/relationship/field_mylocation_target_id', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_location/field/latitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_location/field/longitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_location/field/field_mygeofield', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_location/field/field_mylatitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_location/field/field_mylongitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_location/field/field_mygeofield_1', $edit, t('Apply'));

    // block_field view
    $this->drupalPost('admin/structure/views/view/gmap_test_extended_places/edit/block_field', $edit, t('Save'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/block_field/style_plugin', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/block_field/style_options', $edit, t('Apply'));
    $this->drupalGet('admin/structure/views/nojs/display/gmap_test_extended_places/block_field/style_options');
    $this->assertRaw(t('Enter a macro. If left unchanged, it takes the default settings from <a href="!link">/admin/config/services/gmap</a>. See the <a href="http://drupal.org/documentation/modules/gmap/macros">documentation on GMap macros</a>.', array('!link' => url('admin/config/services/gmap'))));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_field/relationship/field_mylocation_target_id', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_field/field/latitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_field/field/longitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_field/field/field_mygeofield', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_field/field/field_mylatitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_field/field/field_mylongitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_field/field/field_mygeofield_1', $edit, t('Apply'));

    // block_2 view
    $this->drupalPost('admin/structure/views/view/gmap_test_extended_places/edit/block_2', $edit, t('Save'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/block_2/style_plugin', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/block_2/style_options', $edit, t('Apply'));
    $this->drupalGet('admin/structure/views/nojs/display/gmap_test_extended_places/block_2/style_options');
    $this->assertRaw(t('Enter a macro. If left unchanged, it takes the default settings from <a href="!link">/admin/config/services/gmap</a>. See the <a href="http://drupal.org/documentation/modules/gmap/macros">documentation on GMap macros</a>.', array('!link' => url('admin/config/services/gmap'))));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_2/relationship/field_mylocation_target_id', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_2/field/latitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_2/field/longitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_2/field/field_mygeofield', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_2/field/field_mylatitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_2/field/field_mylongitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_2/field/field_mygeofield_1', $edit, t('Apply'));

    // block_3 view
    $this->drupalPost('admin/structure/views/view/gmap_test_extended_places/edit/block_3', $edit, t('Save'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/block_3/style_plugin', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/display/gmap_test_extended_places/block_3/style_options', $edit, t('Apply'));
    $this->drupalGet('admin/structure/views/nojs/display/gmap_test_extended_places/block_3/style_options');
    $this->assertRaw(t('Enter a macro. If left unchanged, it takes the default settings from <a href="!link">/admin/config/services/gmap</a>. See the <a href="http://drupal.org/documentation/modules/gmap/macros">documentation on GMap macros</a>.', array('!link' => url('admin/config/services/gmap'))));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_3/relationship/field_mylocation_target_id', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_3/field/latitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_3/field/longitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_3/field/field_mygeofield', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_3/field/field_mylatitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_3/field/field_mylongitude', $edit, t('Apply'));
    $this->drupalPost('admin/structure/views/nojs/config-item/gmap_test_extended_places/block_3/field/field_mygeofield_1', $edit, t('Apply'));

  }
}
