forena-8.x-1.x-dev/src/Tests/ForenaInegrationTest.php

src/Tests/ForenaInegrationTest.php
<?php
/**
 * @file tests
 * Tests for forena.
 * @author davidmetzler
 *
 */
namespace Drupal\forena\Tests;
use Drupal\forena\AppService;
use Drupal\forena\Frx;
use Drupal\simpletest\WebTestBase;

/**
 * Class ForenaInegrationTest
 *
 * @group Forena
 * @ingroup Forena
 */
class ForenaInegrationTest extends WebTestBase {
  public $privileged_user;
  public $report_user;
  public static $modules = ['filter', 'forena', 'forena_test'];
  protected $profile = 'minimal';
  /** @var  \Drupal\forena\Frx */
  protected $frx;

  public function __construct($test_id) {
    parent::__construct($test_id);
    $this->frx = Frx::instance();
  }

  public static function getInfo() {

    return array(
      'name' => 'Forena Reports',
      'description' => 'Report rendering tests for forena',
      'group' => t('Forena'),
    );
  }

  public function setup() {
    parent::setUp();
    // Create and log in our privileged user.
    $this->privileged_user = $this->drupalCreateUser(
      [
        'administer forena',
        'list forena reports',
      ],
      'test_admin',
      TRUE
    );
    $this->report_user = $this->drupalCreateUser(
      [
        'list forena reports',
      ],
      'test_user',
      TRUE
    );
  }

  /**
   * Test the Configuration screens
   */
  public function testConfig() {
    if ($this->privileged_user) $this->drupalLogin($this->privileged_user);
    // Navigation to configuration form
    $this->drupalGet('admin/config');
    $this->assertLink('Report Configuration');

    // Verify general configuration form
    $this->clickLink('Report Configuration');
    $this->assertField('default_skin', 'Default Skin');
    $this->assertField('input_format', 'Input Format');

    // Verify list of Data Sources
    $this->drupalGet('admin/config/content/forena/data');
    $this->assertText('forena_help', 'Help data source exists');
    $this->assertText('drupal', 'Drupal data source exists');
    $this->assertLink('edit', 0, 'Edit link is available.');

    // Veriify Data Source save
    $this->drupalGet('admin/config/content/forena/data/drupal');
    $this->assertField('debug', 'Debug field Exists');
    $edit['debug'] = '1';
    $this->drupalPostForm(NULL, $edit,  t('Save'));
    $this->assertFieldChecked('edit-debug');

    // @TODO: Email Configuration

  }

  /**
   * Test Forena Report.
   */
  public function testReport() {
    // Simple Report.
    if ($this->privileged_user) $this->drupalLogin($this->privileged_user);
    $this->drupalGet('reports/sample.states');
    $this->assertText('Simple Table', 'The report title is there.');
    $this->assertText('Alaska', 'A state in the report exists');
    
    // Test ajax callback
    $this->drupalGet('reports/sample.states/nojs/sample-report/html');
    $this->assertText('Simple Table', 'The report title is there.'); 

    // Report with links
    $this->drupalGet('reports/sample.state_summary');
    $this->assertText('FL - Florida', 'A state in the report exists');
  }

  /**
   * Test hooks Implementations
   */
  public function testHooks() {
    $repository = $this->frx->dataManager()->repository('test');
    $this->assertTrue($repository !== NULL, 'Test Data Repository Defined');
    $title = $repository->conf['title'];
    $this->assertEqual($title, 'Altered Test Data');
    $plugins = AppService::instance()->getRendererPlugins();
    $this->assertTrue(isset($plugins['FrxCrosstab']), "Crosstab Renderer Exists");
  }

  /**
   * Test Document Types
   */
  public function testDocumentTypes() {
    $doc_types = $this->frx->documentManager()->getDocTypes();
    $this->assertTrue(count($doc_types)>0, "Found Document types");
    $this->assertTrue(array_search('csv', $doc_types)!==FALSE, "CSV Exists");
  }

  /**
   * Test Ajax command list
   */
  public function testAjaxCommands() {
    $plugins = AppService::instance()->getAjaxPlugins();
    $this->assertTrue(!empty($plugins['add_css']), 'add_css');
    $this->assertTrue(!empty($plugins['after']), 'after');
    $this->assertTrue(!empty($plugins['alert']), 'alert');
    $this->assertTrue(!empty($plugins['append']), 'append');
    $this->assertTrue(!empty($plugins['before']), 'before');
    $this->assertTrue(!empty($plugins['changed']), 'changed');
    $this->assertTrue(!empty($plugins['closeDialog']), 'closeDialog');
    $this->assertTrue(!empty($plugins['closeModalDialog']), 'closeModalDialog');
    $this->assertTrue(!empty($plugins['css']), 'css');
    $this->assertTrue(!empty($plugins['data']), 'data');
    $this->assertTrue(!empty($plugins['html']), 'html');
    $this->assertTrue(!empty($plugins['invoke']), 'invoke');
    $this->assertTrue(!empty($plugins['openDialog']), 'openDialog');
    $this->assertTrue(!empty($plugins['openModalDialog']), 'openModalDialog');
    $this->assertTrue(!empty($plugins['prepend']), 'prepend');
    $this->assertTrue(!empty($plugins['replace']), 'replace');
    $this->assertTrue(!empty($plugins['restripe']), 'restripe');
    $this->assertTrue(!empty($plugins['settings']), 'settings');
  }

  /**
   * Test Crosstab renderer
   */
  public function testCrossTab() {
    if ($this->privileged_user) $this->drupalLogin($this->privileged_user);
    $this->drupalGet('reports/crosstab');
    $this->assertText('Male');
    $this->assertText('Female');
    $this->assertText('Unknown');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc