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:: |
public static | function | ||
DrupalUnitTestBase:: |
private | property | ||
DrupalUnitTestBase:: |
private | property | ||
DrupalUnitTestBase:: |
private | property | ||
UnitTestBase:: |
protected | property | ||
TestBase:: |
protected | property | ||
TestBase:: |
protected | property | ||
DrupalUnitTestBase:: |
protected | property | A KeyValueMemoryFactory instance to use when building the container. | |
TestBase:: |
protected | property | Assertions thrown in that test case. | |
TestBase:: |
protected | function | Changes in memory settings. | |
TestBase:: |
protected | function | Changes the database connection to the prefixed one. | |
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 not false (not an empty string, 0, NULL, or FALSE). | |
TestBase:: |
protected | function | Check to see if a value is not NULL. | |
TestBase:: |
protected | function | Check to see if a value is NULL. | |
TestBase:: |
protected | function | Check to see if two values are equal. | |
TestBase:: |
protected | function | Check to see if two values are identical. | |
TestBase:: |
protected | function | Check to see if two values are not equal. | |
TestBase:: |
protected | function | Check to see if two values are not identical. | |
TestBase:: |
protected | function | Checks the matching requirements for Test. | 4 |
TestBase:: |
protected | function | Checks to see if two objects are identical. | |
TestBase:: |
public static | function | Converts a list of possible parameters into a stack of permutations. | |
TestBase:: |
public | function | Copies configuration objects from source storage to target storage. | |
TestBase:: |
protected | function | Create and set new configuration directories. | 1 |
TestBase:: |
public | property | Current results of this test case. | |
TestBase:: |
protected | function | Cycles through backtrace until the first non-assertion method is found. | |
TestBase:: |
public static | function | Delete an assertion record by message ID. | |
DrupalUnitTestBase:: |
protected | function |
Deletes created files, database tables, and reverts all environment changes. Overrides TestBase:: |
2 |
TestBase:: |
protected | property | Directory where verbose output files are put. | |
DrupalUnitTestBase:: |
protected | function | Disables modules for this test. | |
DrupalUnitTestBase:: |
protected | function | Enables modules for this test. | |
TestBase:: |
public static | function | Ensures test files are deletable within file_unmanaged_delete_recursive(). | |
TestBase:: |
protected | function | Fire an assertion that is always negative. | |
TestBase:: |
protected | function | Fire an assertion that is always positive. | |
TestBase:: |
protected | function | Fire an error assertion. | 1 |
TestBase:: |
protected | property | Flag to indicate whether the test has been set up. | |
TestBase:: |
protected | function | Generates a database prefix for running tests. | |
TestBase:: |
public static | function | Generates a random PHP object. | |
TestBase:: |
public static | function | Generates a random string containing letters and numbers. | |
TestBase:: |
public static | function | Generates a random string of ASCII characters of codes 32 to 126. | |
TestBase:: |
public | function | Handle errors during test runs. | |
TestBase:: |
protected | function | Handle exceptions. | |
TestBase:: |
protected | property | Incrementing identifier for verbose output filenames. | |
DrupalUnitTestBase:: |
protected | function | Installs a specific table from a module schema definition. | |
DrupalUnitTestBase:: |
protected | function | Installs default configuration for a given list of modules. | |
TestBase:: |
protected | function | Internal helper: stores the assert. | |
TestBase:: |
protected | function | Logs verbose message in a text file. | |
DatabaseTestBase:: |
public static | property |
Modules to enable. Overrides DrupalUnitTestBase:: |
3 |
DrupalUnitTestBase:: |
function |
Overrides \Drupal\simpletest\UnitTestBase::__construct(). Overrides UnitTestBase:: |
||
TestBase:: |
protected | function | Prepares the current environment for running the test. | |
TestBase:: |
protected | function | Rebuild drupal_container(). | 1 |
TestBase:: |
public | function | Returns a ConfigImporter object to import test importing of configuration. | 1 |
TestBase:: |
public static | function | Returns the database connection to the site running Simpletest. | |
TestBase:: |
public | function | Run all tests in this class. | |
TestBase:: |
protected | property | Safe class name for use in verbose output filenames. | |
DatabaseTestBase:: |
function |
Sets up Drupal unit test environment. Overrides DrupalUnitTestBase:: |
||
DatabaseTestBase:: |
static | function | Sets up our sample data. | |
DatabaseTestBase:: |
function | Sets up tables for NULL handling. | ||
DrupalUnitTestBase:: |
public | function | Sets up the base service container for this test. | 1 |
TestBase:: |
public static | function | Store an assertion from outside the testing context. | |
BasicSyntaxTest:: |
function | Tests a LIKE query containing a backslash. | ||
BasicSyntaxTest:: |
function | Tests escaping of LIKE wildcards. | ||
BasicSyntaxTest:: |
function | Tests string concatenation with field values. | ||
BasicSyntaxTest:: |
function | Tests string concatenation. | ||
TestBase:: |
protected | property | The config importer that can used in a test. | 1 |
TestBase:: |
protected | property | The database prefix of this test run. | |
TestBase:: |
protected | property | The dependency injection container used in the test. | 1 |
TestBase:: |
protected | property | The original database prefix when running inside Simpletest. | |
TestBase:: |
protected | property | The original file directory, before it was changed for testing purposes. | |
TestBase:: |
protected | property | The public file directory for the test environment. | |
TestBase:: |
protected | property | The settings array. | |
TestBase:: |
protected | property | The test run ID. | |
TestBase:: |
protected | property | This class is skipped when looking for the source of an assertion. | |
TestBase:: |
protected | property | Time limit for the test. | |
TestBase:: |
protected | property | TRUE if verbose debugging is enabled. | |
TestBase:: |
protected | property | URL to the verbose output file directory. | |
TestBase:: |
public | property | Whether to die in case any test assertion fails. |