function SchemaTestCase::testFindTables

Tests the findTables() method.

File

modules/simpletest/tests/schema.test, line 388

Class

SchemaTestCase
Unit tests for the Schema API.

Code

public function testFindTables() {
    // We will be testing with three tables, two of them using the default
    // prefix and the third one with an individually specified prefix.
    // Set up a new connection with different connection info.
    $connection_info = Database::getConnectionInfo();
    // Add per-table prefix to the second table.
    $new_connection_info = $connection_info['default'];
    $new_connection_info['prefix']['test_2_table'] = $new_connection_info['prefix']['default'] . '_shared_';
    Database::addConnectionInfo('test', 'default', $new_connection_info);
    Database::setActiveConnection('test');
    // Create the tables.
    $table_specification = array(
        'description' => 'Test table.',
        'fields' => array(
            'id' => array(
                'type' => 'int',
                'default' => NULL,
            ),
        ),
    );
    Database::getConnection()->schema()
        ->createTable('test_1_table', $table_specification);
    Database::getConnection()->schema()
        ->createTable('test_2_table', $table_specification);
    Database::getConnection()->schema()
        ->createTable('the_third_table', $table_specification);
    // Check the "all tables" syntax.
    $tables = Database::getConnection()->schema()
        ->findTablesD8('%');
    sort($tables);
    $expected = array(
        'test_1_table',
        // This table uses a per-table prefix, yet it is returned as un-prefixed.
'test_2_table',
        'the_third_table',
    );
    $this->assertTrue(!array_diff($expected, $tables), 'All tables were found.');
    // Check the restrictive syntax.
    $tables = Database::getConnection()->schema()
        ->findTablesD8('test_%');
    sort($tables);
    $expected = array(
        'test_1_table',
        'test_2_table',
    );
    $this->assertEqual($tables, $expected, 'Two tables were found.');
    // Go back to the initial connection.
    Database::setActiveConnection('default');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.