You are here

views_table_highlighter.test in Views Table Highlighter 6

Test Views Table Highlighter.

File

tests/views_table_highlighter.test
View source
<?php

/**
 * @file
 * Test Views Table Highlighter.
 */
class ViewsTableHighlighterTestCase extends DrupalWebTestCase {
  public static function getInfo() {
    return array(
      'name' => 'views_table_highlighter',
      'description' => 'Ensure that views_table_highlighter functions properly.',
      'group' => 'Views',
    );
  }
  public function setUp() {
    parent::setUp('content', 'number', 'views', 'views_table_highlighter');

    // make sure our immediate dependencies are enabled, since parent::setUp() doesn't check this for us
    $this
      ->assertTrue(module_exists('views'), "views.module isn't installed");

    // create a content type to populate
    $content_type = $this
      ->drupalCreateContentType(array(
      'type' => 'views_table_highlighter_test',
    ));
    $this
      ->assertEqual($content_type->type, 'views_table_highlighter_test', "views_table_highlighter_test content type creation failed");

    // add a field to our new content type
    $field_test_number = array(
      'field_name' => 'field_test_number',
      'type_name' => 'views_table_highlighter_test',
      'type' => 'number_integer',
      'widget' => array(
        'type' => 'number',
      ),
    );
    content_field_instance_create($field_test_number);
    $created_field = content_fields('field_test_number', 'views_table_highlighter_test');
    $this
      ->assertEqual($created_field['field_name'], 'field_test_number', "views_table_highlighter_test field creation failed");

    // create some sample content
    $numbers = array(
      1,
      2,
      3,
    );
    foreach ($numbers as $number) {
      $settings = array(
        'type' => 'views_table_highlighter_test',
        'field_test_number' => array(
          '0' => array(
            'value' => $number,
          ),
        ),
      );
      $node = $this
        ->drupalCreateNode($settings);
      $this
        ->assertEqual($node->type, 'views_table_highlighter_test', "views_table_highlighter_test node creation failed");
      $this
        ->assertEqual($node->field_test_number[0]['value'], $number, "views_table_highlighter_test node field data failed");
    }

    // add a view
    $view = new view();
    $view->name = 'views_table_highlighter_test';
    $view->base_table = 'node';
    $view->core = 6;
    $view->api_version = '2';
    $handler = $view
      ->new_display('default', 'Defaults', 'default');
    $handler
      ->override_option('fields', array(
      'field_test_number_value' => array(
        'id' => 'field_test_number_value',
        'table' => 'node_data_field_test_number',
        'field' => 'field_test_number_value',
      ),
    ));
    $handler
      ->override_option('items_per_page', 0);
    $handler
      ->override_option('style_plugin', 'table_highlighter');
    $handler
      ->override_option('style_options', array(
      'views_table_highlighter' => array(
        'code' => 'if ($node_data_field_test_number_field_test_number_value > 2) return \'red\';
if ($node_data_field_test_number_field_test_number_value == 2) return \'blue\';',
      ),
    ));
    $view
      ->save();
    $this
      ->assertNotNull(views_get_view('views_table_highlighter_test'), "views_table_highlighter_test view creation failed");
  }
  public function testNumberField() {
    $this
      ->drupalSetContent(views_embed_view('views_table_highlighter_test'));
    $rows = $this
      ->xpath("//table/tbody/tr");

    // since we have 3 nodes, our table should have 3 rows.
    $this
      ->assertEqual(3, count($rows), "view result doesn't have 3 rows");

    // row 0 should be unlit
    $attr = $rows[0]
      ->attributes();
    $this
      ->assertEqual($attr['class'], 'odd views-row-first', "row 0 doesn't have the correct classes");

    // row 1 should be blue
    $attr = $rows[1]
      ->attributes();
    $this
      ->assertEqual($attr['class'], 'even views-table-highlighter-blue', "row 1 doesn't have the correct classes");

    // row 2 should be red
    $attr = $rows[2]
      ->attributes();
    $this
      ->assertEqual($attr['class'], 'odd views-row-last views-table-highlighter-red', "row 2 doesn't have the correct classes");
  }

}

Classes

Namesort descending Description
ViewsTableHighlighterTestCase @file Test Views Table Highlighter.