Newer
Older
isset($params['format']) ? $params['format'] : 'xml',
isset($params['idSite']) ? $params['idSite'] : false,
isset($params['date']) ? $params['date'] : false,
isset($params['periods']) ? $params['periods'] : (isset($params['period']) ? $params['period'] : false),
isset($params['setDateLastN']) ? $params['setDateLastN'] : false,
isset($params['language']) ? $params['language'] : false,
isset($params['segment']) ? $params['segment'] : false,
isset($params['visitorId']) ? $params['visitorId'] : false,
isset($params['abandonedCarts']) ? $params['abandonedCarts'] : false,
isset($params['idGoal']) ? $params['idGoal'] : false,
isset($params['apiModule']) ? $params['apiModule'] : false,
isset($params['apiAction']) ? $params['apiAction'] : false,
isset($params['otherRequestParameters']) ? $params['otherRequestParameters'] : array(),
isset($params['supertableApi']) ? $params['supertableApi'] : false,
isset($params['fileExtension']) ? $params['fileExtension'] : false);
foreach ($requestUrls as $apiId => $requestUrl) {
$this->_testApiUrl($testName . $testSuffix, $apiId, $requestUrl);
}
// change the language back to en
if ($this->lastLanguage != 'en') {
$this->changeLanguage('en');
if (!empty($this->missingExpectedFiles)) {
$expectedDir = dirname(reset($this->missingExpectedFiles));
$this->markTestIncomplete(" ERROR: Could not find expected API output '"
. implode("', '", $this->missingExpectedFiles)
. "'. For new tests, to pass the test, you can copy files from the processed/ directory into"
. " $expectedDir after checking that the output is valid. %s ");
}
// Display as one error all sub-failures
if (!empty($this->comparisonFailures)) {
$messages = '';
$i = 1;
foreach ($this->comparisonFailures as $failure) {
$msg = $failure->getMessage();
$msg = strtok($msg, "\n");
$messages .= "\n#" . $i++ . ": " . $msg;
}
$messages .= " \n ";
print($messages);
$first = reset($this->comparisonFailures);
throw $first;
}
}
/**
* changing the language within one request is a bit fancy
* in order to keep the core clean, we need a little hack here
*
* @param string $langId
*/
protected function changeLanguage($langId)
{
if ($this->lastLanguage != $langId) {
$_GET['language'] = $langId;
Translate::reset();
Translate::getInstance()->reloadLanguage($langId);
}
$this->lastLanguage = $langId;
}
/**
Benaka Moorthi
a validé
* Path where expected/processed output files are stored.
*/
Benaka Moorthi
a validé
public static function getPathToTestDirectory()
{
return dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Integration';
}
/**
* Returns an array associating table names w/ lists of row data.
* @return array
*/
protected static function getDbTablesWithData()
{
$result = array();
foreach (DbHelper::getTablesInstalled() as $tableName) {
$result[$tableName] = Db::fetchAll("SELECT * FROM $tableName");
}
return $result;
/**
* Truncates all tables then inserts the data in $tables into each
* mapped table.
* @param array $tables Array mapping table names with arrays of row data.
*/
protected static function restoreDbTables($tables)
{
// truncate existing tables
// insert data
$existingTables = DbHelper::getTablesInstalled();
foreach ($tables as $table => $rows) {
// create table if it's an archive table
if (strpos($table, 'archive_') !== false && !in_array($table, $existingTables)) {
$tableType = strpos($table, 'archive_numeric') !== false ? 'archive_numeric' : 'archive_blob';
$createSql = DbHelper::getTableCreateSql($tableType);
$createSql = str_replace(Common::prefixTable($tableType), $table, $createSql);
Db::query($createSql);
}
if (empty($rows)) {
continue;
}
$rowsSql = array();
$bind = array();
foreach ($rows as $row) {
$values = array();
foreach ($row as $name => $value) {
if (is_null($value)) {
$values[] = 'NULL';
} else if (is_numeric($value)) {
$values[] = $value;
} else if (!ctype_print($value)) {
$values[] = "x'" . bin2hex(substr($value, 1)) . "'";
} else {
$values[] = "?";
$bind[] = $value;
}
}
$rowsSql[] = "(" . implode(',', $values) . ")";
}
$sql = "INSERT INTO $table VALUES " . implode(',', $rowsSql);
Db::query($sql, $bind);
}
}
/**
* Drops all archive tables.
*/
public static function deleteArchiveTables()
foreach (ArchiveTableCreator::getTablesArchivesInstalled() as $table) {
Db::query("DROP TABLE IF EXISTS $table");
}
ArchiveTableCreator::refreshTableList($forceReload = true);