Skip to content
data.test 2.3 KiB
Newer Older
Alex Barth's avatar
Alex Barth committed
<?php
// $Id$
/**
 * @file
 * Data module tests.
 */

require_once(drupal_get_path('module', 'data') .'/tests/data.test.inc');
Alex Barth's avatar
Alex Barth committed

/**
 * Test basic Data API functionality.
 */
class DataTestCaseAPI extends DataTestCase {
Alex Barth's avatar
Alex Barth committed

  /**
   * Describe this test.
   */
  public function getInfo() {
    return array(
      'name' => t('Data API'),
      'description' => t('Unit tests for Data module\'s API'),
      'group' => t('Data'),
    );
  }

  /**
   * Set up test.
   */
  public function setUp() {
Alex Barth's avatar
Alex Barth committed
  }

  /**
   * Run CRUD tests.
   */
  public function testCRUD() {
    // Create table.
    $table_name = data_name($this->randomName(5, 'crud'));
    if (!$table = data_create_table($table_name, $this->testSchema())) {
Alex Barth's avatar
Alex Barth committed
      $this->error('Could not create table.');
      return;
Alex Barth's avatar
Alex Barth committed
    }
    else {
      $this->assertTrue(db_table_exists($table->get('name')), 'Created table '. $table->get('name'));
      $schema = drupal_get_schema($table->get('name'));
      $this->assertTrue(!empty($schema), 'Schema information is available.');
Alex Barth's avatar
Alex Barth committed
    }

    // Save data.
    $handler = data_get_handler($table->get('name'));
Alex Barth's avatar
Alex Barth committed
    $test_data = $this->testData();
    $handler->save($test_data[0], array('id'));
    $handler->save($test_data[1], array('id'));
    $handler->save($test_data[1], array('id'));
Alex Barth's avatar
Alex Barth committed

    // Load second record.
    $data = $handler->load(array('id' => 1));
Alex Barth's avatar
Alex Barth committed
    $this->assertEqual($data[0], $test_data[1], 'Loaded data matches saved data.');

    // Manipulate second record, save and load.
    $data[0]['char0'] = 'test';
    $handler->save($data[0], array('id'));
    $data = $handler->load(array('id' => 1));
Alex Barth's avatar
Alex Barth committed
    $this->assertEqual($data[0]['char0'], 'test', 'Saved data matches changed data.');

Alex Barth's avatar
Alex Barth committed
    // Load a record by string.
    $data = $handler->load(array('char0' => 'test'));
Alex Barth's avatar
Alex Barth committed
    $this->assertEqual($data[0]['id'], 1, 'Loaded data by string type key.');

    // Delete table.
Alex Barth's avatar
Alex Barth committed
    $this->assertFalse(db_table_exists($table_name), 'Dropped table.');

    // Create table and drop it again.
    $table = data_create_table($table_name, $this->testSchema());
    $this->assertTrue(!empty($table), 'Created table with same name '. $table_name);
Alex Barth's avatar
Alex Barth committed

Alex Barth's avatar
Alex Barth committed
    // Delete table.
Alex Barth's avatar
Alex Barth committed
    $this->assertFalse(db_table_exists($table_name), 'Dropped table.');
  }
}