Tests how the current database driver interprets the SQL syntax.
In order to ensure consistent SQL handling throughout Drupal across multiple kinds of database systems, we test that the database system interprets SQL syntax in an expected fashion.
Expanded class hierarchy of BasicSyntaxTest
class BasicSyntaxTest extends DatabaseTestBase {
public static function getInfo() {
return array(
'name' => 'Basic SQL syntax tests',
'description' => 'Test SQL syntax interpretation.',
'group' => 'Database',
);
}
/**
* Tests string concatenation.
*/
function testBasicConcat() {
$result = db_query('SELECT CONCAT(:a1, CONCAT(:a2, CONCAT(:a3, CONCAT(:a4, :a5))))', array(
':a1' => 'This',
':a2' => ' ',
':a3' => 'is',
':a4' => ' a ',
':a5' => 'test.',
));
$this
->assertIdentical($result
->fetchField(), 'This is a test.', 'Basic CONCAT works.');
}
/**
* Tests string concatenation with field values.
*/
function testFieldConcat() {
$result = db_query('SELECT CONCAT(:a1, CONCAT(name, CONCAT(:a2, CONCAT(age, :a3)))) FROM {test} WHERE age = :age', array(
':a1' => 'The age of ',
':a2' => ' is ',
':a3' => '.',
':age' => 25,
));
$this
->assertIdentical($result
->fetchField(), 'The age of John is 25.', 'Field CONCAT works.');
}
/**
* Tests escaping of LIKE wildcards.
*/
function testLikeEscape() {
db_insert('test')
->fields(array(
'name' => 'Ring_',
))
->execute();
// Match both "Ringo" and "Ring_".
$num_matches = db_select('test', 't')
->condition('name', 'Ring_', 'LIKE')
->countQuery()
->execute()
->fetchField();
$this
->assertIdentical($num_matches, '2', 'Found 2 records.');
// Match only "Ring_" using a LIKE expression with no wildcards.
$num_matches = db_select('test', 't')
->condition('name', db_like('Ring_'), 'LIKE')
->countQuery()
->execute()
->fetchField();
$this
->assertIdentical($num_matches, '1', 'Found 1 record.');
}
/**
* Tests a LIKE query containing a backslash.
*/
function testLikeBackslash() {
db_insert('test')
->fields(array(
'name',
))
->values(array(
'name' => 'abcde\\f',
))
->values(array(
'name' => 'abc%\\_',
))
->execute();
// Match both rows using a LIKE expression with two wildcards and a verbatim
// backslash.
$num_matches = db_select('test', 't')
->condition('name', 'abc%\\\\_', 'LIKE')
->countQuery()
->execute()
->fetchField();
$this
->assertIdentical($num_matches, '2', 'Found 2 records.');
// Match only the former using a LIKE expression with no wildcards.
$num_matches = db_select('test', 't')
->condition('name', db_like('abc%\\_'), 'LIKE')
->countQuery()
->execute()
->fetchField();
$this
->assertIdentical($num_matches, '1', 'Found 1 record.');
}
}
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BasicSyntaxTest:: |
function | Tests string concatenation. | ||
BasicSyntaxTest:: |
function | Tests string concatenation with field values. | ||
BasicSyntaxTest:: |
function | Tests escaping of LIKE wildcards. | ||
BasicSyntaxTest:: |
function | Tests a LIKE query containing a backslash. | ||
DatabaseTestBase:: |
function |
Sets up Drupal unit test environment. Overrides DrupalUnitTestBase:: |
||
DatabaseTestBase:: |
function | Sets up tables for NULL handling. | ||
DrupalUnitTestBase:: |
function |
Overrides \Drupal\simpletest\UnitTestBase::__construct(). Overrides UnitTestBase:: |
||
DrupalUnitTestBase:: |
private | property | ||
DrupalUnitTestBase:: |
private | property | ||
DrupalUnitTestBase:: |
private | property | ||
DrupalUnitTestBase:: |
protected | function |
Deletes created files, database tables, and reverts all environment changes. Overrides TestBase:: |
2 |
DrupalUnitTestBase:: |
protected | function | Installs default configuration for a given list of modules. | |
DrupalUnitTestBase:: |
protected | function | Installs a specific table from a module schema definition. | |
DrupalUnitTestBase:: |
protected | function | Enables modules for this test. | |
DrupalUnitTestBase:: |
protected | function | Disables modules for this test. | |
TestBase:: |
protected | function | Checks the matching requirements for Test. | 4 |
TestBase:: |
protected | function | Internal helper: stores the assert. | |
TestBase:: |
protected | function | Cycles through backtrace until the first non-assertion method is found. | |
TestBase:: |
protected | function | Check to see if a value is not false (not an empty string, 0, NULL, or FALSE). | |
TestBase:: |
protected | function | Check to see if a value is false (an empty string, 0, NULL, or FALSE). | |
TestBase:: |
protected | function | Check to see if a value is NULL. | |
TestBase:: |
protected | function | Check to see if a value is not NULL. | |
TestBase:: |
protected | function | Check to see if two values are equal. | |
TestBase:: |
protected | function | Check to see if two values are not equal. | |
TestBase:: |
protected | function | Check to see if two values are identical. | |
TestBase:: |
protected | function | Check to see if two values are not identical. | |
TestBase:: |
protected | function | Checks to see if two objects are identical. | |
TestBase:: |
protected | function | Fire an assertion that is always positive. | |
TestBase:: |
protected | function | Fire an assertion that is always negative. | |
TestBase:: |
protected | function | Fire an error assertion. | 1 |
TestBase:: |
protected | function | Logs verbose message in a text file. | |
TestBase:: |
protected | function | Generates a database prefix for running tests. | |
TestBase:: |
protected | function | Changes the database connection to the prefixed one. | |
TestBase:: |
protected | function | Prepares the current environment for running the test. | |
TestBase:: |
protected | function | Create and set new configuration directories. | 1 |
TestBase:: |
protected | function | Rebuild drupal_container(). | 1 |
TestBase:: |
protected | function | Handle exceptions. | |
TestBase:: |
protected | function | Changes in memory settings. | |
DrupalUnitTestBase:: |
protected | property | A KeyValueMemoryFactory instance to use when building the container. | |
UnitTestBase:: |
protected | property | ||
TestBase:: |
protected | property | The test run ID. | |
TestBase:: |
protected | property | The database prefix of this test run. | |
TestBase:: |
protected | property | The original file directory, before it was changed for testing purposes. | |
TestBase:: |
protected | property | Time limit for the test. | |
TestBase:: |
protected | property | Assertions thrown in that test case. | |
TestBase:: |
protected | property | This class is skipped when looking for the source of an assertion. | |
TestBase:: |
protected | property | Flag to indicate whether the test has been set up. | |
TestBase:: |
protected | property | ||
TestBase:: |
protected | property | ||
TestBase:: |
protected | property | TRUE if verbose debugging is enabled. | |
TestBase:: |
protected | property | Incrementing identifier for verbose output filenames. | |
TestBase:: |
protected | property | Safe class name for use in verbose output filenames. | |
TestBase:: |
protected | property | Directory where verbose output files are put. | |
TestBase:: |
protected | property | The original database prefix when running inside Simpletest. | |
TestBase:: |
protected | property | URL to the verbose output file directory. | |
TestBase:: |
protected | property | The settings array. | |
TestBase:: |
protected | property | The public file directory for the test environment. | |
TestBase:: |
protected | property | The dependency injection container used in the test. | 1 |
TestBase:: |
protected | property | The config importer that can used in a test. | 1 |
DrupalUnitTestBase:: |
public | function | Sets up the base service container for this test. | 1 |
TestBase:: |
public | function | Run all tests in this class. | |
TestBase:: |
public | function | Handle errors during test runs. | |
TestBase:: |
public | function | Returns a ConfigImporter object to import test importing of configuration. | 1 |
TestBase:: |
public | function | Copies configuration objects from source storage to target storage. | |
TestBase:: |
public | property | Current results of this test case. | |
TestBase:: |
public | property | Whether to die in case any test assertion fails. | |
BasicSyntaxTest:: |
public static | function | ||
TestBase:: |
public static | function | Store an assertion from outside the testing context. | |
TestBase:: |
public static | function | Delete an assertion record by message ID. | |
TestBase:: |
public static | function | Returns the database connection to the site running Simpletest. | |
TestBase:: |
public static | function | Generates a random string of ASCII characters of codes 32 to 126. | |
TestBase:: |
public static | function | Generates a random string containing letters and numbers. | |
TestBase:: |
public static | function | Generates a random PHP object. | |
TestBase:: |
public static | function | Converts a list of possible parameters into a stack of permutations. | |
TestBase:: |
public static | function | Ensures test files are deletable within file_unmanaged_delete_recursive(). | |
DatabaseTestBase:: |
public static | property |
Modules to enable. Overrides DrupalUnitTestBase:: |
3 |
DatabaseTestBase:: |
static | function | Sets up our sample data. |